Journal Ssh, sftp et sécurité php.

Posté par  (site web personnel, Mastodon) .
Étiquettes : aucune
0
9
juin
2003
Bonjour journal,

J'aimerais te soumettre quelques menus tracas quotidiens :

1) Quand je me connecte à n'importe quel serveur ssh ou sftp depuis la console, je dois attendre +/- 20 secondes qu'il me demande mon mot de passe. Or, depuis un client graphique (comme gftp) c'est instantané ! Aurais-tu une explication ?

2) A propos, connais-tu un client sftp graphique performants ? Les windowsiens ont le superbe FileZilla, et gftp est un peu faible à coté... (Heureusement nous on a scp :) )

3) Pour mes sites webs et pour mon wikki, le mot de passe de ma base de donnée est stocké en clair dans un fichier 644. On y a normalement pas accès mais des exploits permettent cet accès(j'en ai eu l'expérience). Quelles sont les solutions ? Et éventuellement quel est cet exploit ?

Tant qu'on y est..

4) J'ai essayé la méthode d'Alexis pour ne pas taper son mot de passe ( http://via.ecp.fr/~alexis/formation-linux/ssh-agent.html ) mais ça n'a jamais marché chez moi. Y'a t'il des prérequis quelconques ?

Merci journal ... :)
  • # Re: Ssh, sftp et sécurité php.

    Posté par  . Évalué à 6.

    Il y'a lftp. C'est pas exactement un client graphique, mais c'est mieux. C'est à la base un client ftp console, très inspiré des shells les plus récents (historique, complétion, gestion de taches, ...). Et, cerise sur le gateau, il peut faire du transfert de fichier directement par ssh tout con, grâce au protocole FISH.

    Genre lftp fish://user@host:path, et c'est parti.

    C'est pas exactement ce que tu cherche, mais c'est dommage de passer à coté :)
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  (site web personnel, Mastodon) . Évalué à 1.

      Ah ouais, pas mal du tout ! Faudra que je m'y mette. Et y parait que pour uploader des sites, rsync c'est le plus facile...

      Mes livres CC By-SA : https://ploum.net/livres.html

    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  . Évalué à 1.

      Tu peux aussi utiliser directement le protocole fish avec Konqueror en tapant fish://user@host/path dans la barre d'adresse . Tu peux alors parcourir ton arboressnce ftp comme si tu etais en local
  • # Re: Ssh, sftp et sécurité php.

    Posté par  . Évalué à 2.

    1) Normal, il faut faire l'échange des clés etc pour sécuriser la connection, alors que gftp ne le fait pas ...

    2) lftp powa, comme si dessus

    3) le mot de passe *dois* exister en clair quelque part. sinon limite les risques : patch ton serveur régulièrement, avec ce mot de passe l'user ne doit avoir qu'un acces restreind sur la base du wiki, vérifie tes logs, etc

    je connais pas le type de wiki n'y l'exploit possible.

    4) jamais essayer
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  . Évalué à 1.

      le mot de passe *dois* exister en clair quelque part.

      (s/dois/doit/).

      Tu n'es pas obligé de tenir le mot de passe en clair sur ta machine de prod.
      Il vaut mieux crypter le mot de passe avec un algo non réversible style MD5 et stocker le résultat. Ensuite, quand le connecté s'identifie, tu encodes son mot de passe et tu vérifies si le résultat correspond avec celui que tu as stocké.

      C'est ce qui se passait avec le fichier passwd avant l'utilisation de shadow.
  • # Re: Ssh, sftp et sécurité php.

    Posté par  (site web personnel) . Évalué à 1.

    Pour la question 2 : konqueror, avec les url de type fish://[user[:pass]@]machine/le/rep

    L'avantage, c'est que tu navigues comme en local.

    À quand un sshFS, pour mounter une arbo via ssh ? :)
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  (site web personnel, Mastodon) . Évalué à 1.

      J'utilise pas konqueror.

      Mais quelle est l'avantage du fish sur le reste ? Je navigue comme en local ? En ligne de commande ça ressemble à un lftp sans le fish. Je pige pas bien la différence...

      Mes livres CC By-SA : https://ploum.net/livres.html

      • [^] # Re: Ssh, sftp et sécurité php.

        Posté par  . Évalué à 2.

        FISH est un moyen d'interfacer différents protocoles de la même facon. Il fournit entre autres une interface ssh (j'ai pas la moindre idée de ce que sont les autres). Ainsi, tout programme qui gère FISH gerera la navigation/transfert via ssh (c'est ce que font lftp et konqueror).
      • [^] # Re: Ssh, sftp et sécurité php.

        Posté par  (site web personnel) . Évalué à 1.

        L'intérêt est évidemment moindre si tu n'utilises pas KDE d'habitude, il faut le reconnaître.

        J'ai quasi en permanence une fenêtre konqueror splittée en deux : d'un coté une vue sur mes disques locaux, de l'autre une vue sur ma gateway/serveur. J'utilise les deux de la même manière (renommer, déplacer, éditer des fichiers, changer des droits, etc...)

        Mais surtout, le protocole fish est supporté par KDE (pas seulement konqueror) et toutes les applis kde en profitent. Ca permet par exemple d'utiliser Kate sur une machine A pour éditer des fichiers se trouvant sur la machine B, directement à travers fish. Intérêt : B peut être un vieu clou (rouillé !), l'intégralité du boulot est effectué par A, ca demande encore moins qu'un affichage X distant.
        Ajoute à ca un "raccourci" vers fish://gw/home/allergy dans la boite d'ouverture/fermeture de fichiers et ca simplifie vraiment la vie quand tu n'utilises qu'une machine pour en gérer plusieurs.

        PS: Ça ne m'empêche pas d'encore utiliser énormément un "vrai" ssh dans une c^Hkonsole, mais KDE3 offre la première interface graphique utilisable à mon goût.
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  . Évalué à 2.

      J'ai essayé lufs :
      http://lufs.sourceforge.net/lufs/(...)


      C'est pas mal...
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  (site web personnel) . Évalué à 2.

      $ settrans plop/ /hurd/sftpfs

      -> []
  • # Re: Ssh, sftp et sécurité php.

    Posté par  (site web personnel) . Évalué à 3.

    4)

    vérifie que tu as bien des variables SSH_AGENT_PID et SSH_AUTH_SOCK déclarées dans les shells sur lesquels tu fais le ssh-add et les ssh, sinon ça veut dire que ton ssh-agent a été mal lancé

    Si c'est ok, alors c'est ta clef qui n'a pas été fabriquée correctement cf http://via.ecp.fr/~alexis/formation-linux/ssh.html#AEN7474(...) (si ssh te demande ton "password" alors c'est pas bon, si il te demande ta "passphrase" alors ssh-add devrait marcher)
  • # Re: Ssh, sftp et sécurité php.

    Posté par  (site web personnel) . Évalué à 1.

    Je vais peut-être dire une bêtise, mais pour ton mot de passe de base de données, crypte-le !
    • [^] # Re: Ssh, sftp et sécurité php.

      Posté par  (site web personnel) . Évalué à 1.

      comment le script envera t il le mot de passe pour se connecter a la BD? si c'est "decryptable" alors c'est mauvais....
      • [^] # Re: Ssh, sftp et sécurité php.

        Posté par  (site web personnel) . Évalué à 1.

        Si le mdp est crypté en md5 (par exemple), il suffit de crypter celui qui est envoyé, et de comparer les deux, non ?
        • [^] # Re: Ssh, sftp et sécurité php.

          Posté par  . Évalué à 1.

          L'ennui c'est que quelqu'un qui écoute et choppe la version cryptée du mot de passe peut faire ce qu'il veut.

          Le mieux étant de faire ca sur un principe challenge+response:

          Le serveur envoie un challenge (une suite de lettres au hasard).
          Le client concatene ce challange au pass, et retourne un MD5 (ou autre fonction de hashage) du résultat.
          Le serveur fait de même, et compare avec ce que le client a envoyé.


          Maintenant, je ne sais pas si c'est appliquable dans ton cas...
        • [^] # Re: Ssh, sftp et sécurité php.

          Posté par  (site web personnel) . Évalué à 1.

          le truc c'est que le script php ne recoit aucun mot de passe mais doit lui meme s'authentifier pour se connecté à la base de donné qui attend un mot de passe en clair
  • # Re: Ssh, sftp et sécurité php.

    Posté par  . Évalué à 1.

    3) Pour mes sites webs et pour mon wikki, le mot de passe de ma base de donnée est stocké en clair dans un fichier 644.

    chmod 600 + safe_mode PHP
    ou alors, chmod 640 + safe_mode_gid
  • # Re: Ssh, sftp et sécurité php.

    Posté par  (site web personnel) . Évalué à 1.

    1) Quand je me connecte à n'importe quel serveur ssh ou sftp depuis la console, je dois attendre +/- 20 secondes qu'il me demande mon mot de passe. Or, depuis un client graphique (comme gftp) c'est instantané ! Aurais-tu une explication ? Ton serveur n'essai t'il pas tout s'implement de determiner ton fqdn d'apres ton ip? Si tu peuple le fichier hosts du serveur avec l'ip et le hostname de ta station par exemple, est ce que ça va mieux?
  • # Re: Ssh, sftp et sécurité php.

    Posté par  . Évalué à 3.

    SSH (secured SHell) a remplacé les désormais obsolètes telnet et ftp pour les communication entre machines. Non seulement il permet une meilleure sécurité (les échanges de données sont cryptés) mais il offre la possibilité de s'affranchir de la saisie de mot de passe. Je vais vous exposer la marche à suivre pour pouvoir vous connecter via SSH sans saisir de mot de passe... Cette fonctionnalité repose sur le principe des clefs publiques / clefs privées (que je n'exposerai pas ici). Supposons que la machine A est la machine source, c'est à dire la machine à partir de laquelle vous voulez vous connecter sur la machine B (la machine destination). Pour notre exemple la machine A est "alamaison" et la machine B "www.leserveur.com". Sur la machine source (A) Commencez par générer vos clefs (privée et publique) au moyen de l'utilitaire ssh-keygen : (sukria@alamaison:sukria)$ ssh-keygen -t rsa -b 1024 Generating RSA keys: ............oooooO..oooooO Key generation complete. Enter file in which to save the key (/home/sukria/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sukria/.ssh/id_rsa. Your public key has been saved in /home/sukria/.ssh/id_rsa.pub. The key fingerprint is: 1024 56:48:8b:d2:db:6e:bf:40:1e:eb:36:ec:75:65:ee:68 sukria@alamaison N'entrez pas de passphrase lorsque l'utilitaire vous le demande. Votre clef publique est contenue à présent dans le fichier ~/.ssh/id_rsa.pub Il vous faut maintenant uploader cette clef sur le serveur destination (Machine B). Un scp fera l'affaire (entrez yes à la question que pose votre client ssh, ainsi le host B sera connu pour la machine A) scp .ssh/id_rsa.pub www.leserveur.com:~ The authenticity of host 'www.leserveur.com' can't be established. Key fingerprint is 1024 23:ff:23:da:98:7d:43:c2:a2:3a:e3:aa:ea:08:e0:16. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'www.leserveur.com' to the list of known hosts. sukria@www.leserveur.com's password: id_rsa.pub 100% |*****************************| 334 00:00 ETA Très bien, à présent, tout se joue du côté de la machine B... Sur la machine destination (B) La clef publique de la machine A doit être ici sous le nom id_rsa.pub" grâce au scp précédemment effectué. Le principe de SSH est de contenir un fichier qui liste toutes les clefs publique des hosts qui ont le droit de se connecter sans mot de passe ; ce fichier se nomme authorized_keys et doit être dans ~/.ssh Attention, il est impératif que l'utilisateur soit identique sur la machine A et la machine B (ici "sukria") Nous allons donc déplacer id_rsa.pub en .ssh/authorized_keys puisqu'il s'agit de la clef publique de A : mv ~/id_rsa.pub ~/.ssh/authorized_keys2 Voila, maintenant toute tentative de connexion partant de la machine A vers la machine B sera automatiquement acceptée pour l'utilisateur en question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.