Ssh

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
Cet article est une ébauche concernant ssh. N'hésitez pas à contribuer ou à en discuter.

Ssh (secure shell) est un programme et un protocole qui permet de se connecter à une machine distante.

Ssh impose un échange de clés de chiffrement en début de connexion; L'utilisation de ssh permet de crypter toutes les données échangées (avec l'algorythme RSA) entre le client et le serveur, rendant ainsi impossible tout "sniff" des paquets.

Avec Telnet et rlogin toutes les données qui transitent entre le client et le serveur sont en clair. N'utilisez donc pas Telnet et/ou rlogin et désinstallez les!

Il est préférable d'éviter de se connecter au système en utilisant ssh en tant que root et préférer l'utilisation de méthodes alternatives pour devenir root tel su ou sudo.

Installation

Installation du client Normalement, le client est installé par défaut, sinon il suffit de saisir en root

aptitude install openssh-client

Installation serveur La partie serveur permet à des hôtes distants de se connecter à votre système.

aptitude install openssh-server

fichier de configuration

Le fichier /etc/ssh/sshd_config doit être modifié comme suit pour accroître la sécurité.

Ne faîtes écouter ssh que sur une interface donnée:

ListenAddress 192.168.0.1

Ne pas autoriser de connexion en tant que root. Si quelqu'un veut devenir root via ssh, deux logins sont maintenant nécessaires et le mot de passe root ne peut être attaqué par la force brute via SSH.

PermitRootLogin no

Changer le port d'écoute, ainsi l'intrus ne peut être complètement sûr de l'exécution d'un démon sshd (c'est de la sécurité par l'obscurité).

Port 666

ou

ListenAddress 192.168.0.1:666

Les mots de passe vides sont un affront au système de sécurité.

PermitEmptyPasswords no

N'autoriser que certains utilisateurs à avoir accès via ssh à cette machine. Pour encore plus de sécurité, user@host peut également être utilisé pour n'autoriser l'accès qu'à un utilisateur donné depuis un hôte donné.

AllowUsers lol laurent@sidlol

Autorise seulement certains membres de groupes à avoir accès via ssh à cette machine. AllowGroups et AllowUsers ont des directives équivalentes pour interdire l'accès à la machine. Sans surprise elles s'appellent « DenyUsers » et « DenyGroups ».

AllowGroups wheel admin

Sécurisation par clef Il vous appartient ici de décider ce que vous voulez faire.

Mais il est plus sûr de n'autoriser l'accès à la machine qu'aux utilisateurs en possession de cléfs ssh placées dans le fichier ~/.ssh/authorized_keys. Si c'est ce que vous voulez, positionnez cette option à "no".

PasswordAuthentication yes

Utilisation de clefs et raccourcis ssh

En général, désactiver toute forme d'autorisation dont vous n'avez pas réellement besoin (RhostsRSAAuthentication, HostbasedAuthentication, KerberosAuthentication, ...)

RhostsRSAAuthentication no
HostbasedAuthentication no
KerberosAuthentication no

Désactiver le protocole version 1, car il a des défauts de conception qui facilite le crack de mots de passe. Pour plus d'informations, lisez un article concernant les problèmes du protocole ssh ou le bulletin d'alerte Xforce.

Protocole 2

Ajoutez une bannière (elle sera récupérée du fichier) pour les utilisateurs se connectant au serveur ssh. Dans certains pays, envoyer un avertissement avant l'accès à un système est obligatoire pour avoir une protection légale.

La bannière par défaut se trouve dans /etc/modt

Vous pouvez aussi y mettre ce que vous voulez...

        _,met$$$$$gg.       ,g$$$$$$$$$$$$$$$P.     ,g$$P""       """Y$$.".    ,$$P'              `$$$.

',$$P       ,ggs.     `$$b:
`d$$'     ,$P"'   .    $$$

  $$P      d$'     ,    $$P   $$:      $$.   -    ,d$$'         $$;      Y$b._   _,d$P'        _,           _,      ,'`.   Y$$.    `.`"Y$$$$P"'         `$$'         `$$'     `.  ,'   `$$b      "-.__                $$           $$        `'    `Y$$b                        $$           $$         _,           _     `Y$$.                 ,d$$$g$$  ,d$$$b.  $$,d$$$b.`$$' g$$$$$b.`$$,d$$b.       `$$b.              ,$P'  `$$ ,$P' `Y$. $$$'  `$$ $$  "'   `$$ $$$' `$$         `Y$$b.            $$'    $$ $$'   `$$ $$'    $$ $$  ,ggggg$$ $$'   $$           `"Y$b._        $$     $$ $$ggggg$$ $$     $$ $$ ,$P"   $$ $$    $$               `""""       $$    ,$$ $$.       $$    ,$P $$ $$'   ,$$ $$    $$

                             `$g. ,$$$ `$$._ _., $$ _,g$P' $$ `$b. ,$$$ $$    $$
                              `Y$$P'$$. `Y$$$$P',$$$$P"'  ,$$. `Y$$P'$$.$$.  ,$$.

A des fins de simple contrôle il est fortement conseillé de laisser l’option suivante sur "yes"

Elle vous permet de vérifier très simplement le dernier "login"

PrintLastLog yes

Restriction par pam

Vous pouvez également restreindre l'accès au serveur ssh en utilisant pam_listfile ou pam_wheel dans le fichier de contrôle PAM.

Par exemple, vous pourriez bloquer tous les utilisateurs qui ne sont pas dans /etc/loginusers en ajoutant cette ligne à /etc/pam.d/ssh :

    auth       required     pam_listfile.so sense=allow onerr=fail item=user file=/etc/loginusers

Liens externes

Lol 3 août 2011 à 03:01 (CDT)