PermitEmptyPasswords

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 PermitEmptyPasswords no

Ceci interdit de pouvoir ce logger avec un mot de passe vide.

PermitRootLogin

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 PermitRootLogin no

Ceci interdit de pouvoir ce logger avec l'utilisateur root. Effectivement celui-ci existe sur toutes les machines linux, et il ne resterait donc aux pirates qu'a trouver le mot de passe au lieu d'avoir a chercher un couple login + mot de passe.

 PermitRootLogin without-password

Si l'utilisation du login root est requis - ex. pour un system de backup distant - vous pouvez authoriser la connexion en root uniquement par l'utilisation de clefs

 PermitRootLogin forced-commands-only

Il est aussi possible de limiter l'acces root a utiliser des commandes spécifiques

Port

Aujourd'hui les pirates, scan nos serveurs, et si il trouve un port 22 (celui de SSH) à l'ecoute, ils risquent de vouloir essayer de ce connecter. Pour cela, une solution simple est de changer le port sur lequel ecoute le daemon SSH

 port 2222

PasswordAuthentication

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 PasswordAuthentication no

Attention, ceci desactive l'authentification par mot de passe, vous ne pourrez alors utiliser que l'authentification par clefs.

Protocol

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 Protocol 2

Ceci n'authorise que l'utilisation de la version 2 de SSH. La verison 1 n'etant plus sûr.

StrictModes

Sur le serveur dans /etc/ssh/sshd_config, la ligne "StrictModes yes" indique que le serveur va être très pointilleux sur les droits du compte sur lequel on se connecte en ssh. Ceci permet de bloquer les connexions ssh si :

  • Le group, ou tout le monde peut ecrire dans le dossier de l'utilisateur
  • Le dossier ~/.ssh n'est pas accessible en lecture/ecriture qu'a l'utilisateur
  • Le dossier ~/.ssh/authorized_keys n'est pas accessible en lecture qu'a l'utilisateur

Pour tout bien faire comme il faut :

 serveur$ chmod go-w ~/
 serveur$ chmod 700 ~/.ssh
 serveur$ chmod 600 ~/.ssh/authorized_keys

Sur le client, dans /etc/ssh/ssh_config, rajoutez la ligne "PreferredAuthentications publickey"

MaxStartups

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 MaxStartups 10

Spécifie un nombre maximal de connexions concurrentes au démon sshd non authentifiées. Les connexions supplémentaires sont purgées si elles ne peuvent pas s'authentifier ou si le délai de grâce défini à l'aide de l'option LoginGraceTime expire pour une connexion. Par défaut 10.

 MaxStartups 10:30:60

Par ailleurs, on peut activer une purge hâtive aléatoire en spécifiant un triplet « début:taux:total » (par exemple, « 10:30:60 »). sshd refuse les tentatives de connexion avec une probabilité de « taux/100 » (30 %) s'il y a « début » (10) connexions non authentifiées en cours. La probabilité augmente linéairement et toutes les tentatives de connexion sont refusées si le nombre de connexions non authentifiées atteint « total » (60).

AllowUsers

Sur le serveur dans /etc/ssh/sshd_config, vous pouvez ajouter la ligne

 AllowUsers john david

Cela pécifie les logins des seuls utilisateurs autorisés à se connecter (ici john & david)

Ressources

  • http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html
  • http://fedorasolved.org/post-install-solutions/securing-ssh