Le protocole SSH est un protocole très utile et très apprécié des administrateurs systèmes, mais il est souvent scanné par des hackers ou des bots qui tentent de se connecter sur votre machine. Il est donc recommandé de sécuriser ce protocole ou même de le supprimer si vous n’en avez plus l’utilité.
Désinstaller le service
Pour désinstaller SSH :
apt remove openssh-server
Il est recommandé d’utiliser un mot de passe très robuste car de nombreux tests seront réalisés sur votre machine afin de trouver votre mot de passe.
Fichier de configuration
Paramètrez le fichier de configuration du service SSH.
nano /etc/ssh/sshd_config
Pour chaque modification effectuée, exécutez la ligne :
systemctl restart sshd
Cette commande permettra d’appliquer les changements opérés.
Port
Il est recommandé de changer le port par défaut sur le serveur. Dans le fichier de configuration sshd_config, changez la ligne correspondant au port :
Décommentez la ligne en retirant le # et changez ensuite le numéro, utilisez par exemple 2222.
Attention toutefois à changer le numéro de port sur votre pare feu si vous en avez mis un en place.
Root login
Toujours dans ce fichier sshd_config
Vérifier que root n’est pas autorisé à se connecter au serveur :
Limitez la connexion à certains utilisateurs
Supprimez les comptes par défaut de votre système, créez un compte spécifique pour SSH et n’autorisez que cet utilisateur à se connecter via SSH.
Pour cela éditez sshd_config
Ajoutez la ligne :
AllowUsers ssh
Cela aura pour conséquence de n’autoriser que l’utilisateur ssh à se connecter.
Vérifiez l’inactivité des utilisateurs
Dans le fichier sshd_config
Décommentez et éditez les lignes :
ClientAliveInterval 600
3
ClientAliveCountMax
Cela vous permet de déconnecter vos utilisateurs après 10 minutes d’activité et de vérifier avant de déconnecter l’utilisateur.
Installer Fail2ban pour éviter les attaques sur le SSH
Installer Fail2ban :
apt install fail2ban
On copie ensuite le fichier de configuration de Fail2ban :
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
On édite ensuite ce fichier jail.local
nano /etc/fail2ban/jail.local
Éditez le fichier pour qu’il ressemble à celui là :
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
Cela va autoriser la création de prisons lorsqu’il y a trop de tentatives de connexions sur le port ssh afin de bannir les IP s’attaquant au serveur.
Redémarrez ensuite le service fail2ban :
systemctl restart fail2ban
Vous pourrez consulter les adresses IP bannies avec la commande :
fail2ban-client status sshd
Connexion via une clé
Depuis la machine cliente, générez une clé :
ssh-keygen
Envoyez ensuite la clé sur le serveur :
ssh-copy-id debian@adresseIP
Une fois cette clé envoyée, vous pouvez supprimer la connexion via mot de passe pour ne forcer la connexion que via cette clé:
Sur le serveur retournez éditer le fichier sshd_config.
Cherchez la ligne correspondant à PasswordAuthentication et remplacez yes par no.
Vérifiez également que l’authetification par clé est autorisée :
Conclusion
Ces quelques mesures ne sont pas toutes obligatoires mais en adopter la plupart améliorera la sécurité de votre service SSH.
N’oublez pas de redémarrer le service SSH à chaque modification :
systemctl restart sshd
Sources :
Medium : Sécuriser SSH