SSH est un service essentiel lorsque l'on dispose d'un serveur sous Linux.

La configuration du service associé peut être modifiée afin de renforcer la sécurité. Quelques pistes seront donc indiquées dans ce billet. Les informations par défaut utilisées dans ce billet sont basées sur celles en place à l'installation de openssh-server sur une Debian Jessie.

Dans un premier temps, nous allons modifier le port d'écoute (22 par défaut) pour le port 55555.
Il faudra donc modifier "Port 22" par "Port 55555" dans le fichier /etc/ssh/sshd_config.
Pour aller plus vite, on peut utilise sed :
sed -i "s/Port 22/Port 55555/g" /etc/ssh/sshd_config

Afin d'éviter les attaques par bruteforce, on va désactiver la connexion en SSH par le biais du compte root. Il faudra donc disposer d'un utilisateur autre et procéder à une élévation de privilèges depuis ce compte pour disposer des droits administrateur.

On va donc passer l'option associée de "PermitRootLogin yes" à "PermitRootLogin no" et déclarer les utilisateurs autorisés à se connecter. Dans mon cas, l'utilisateur "benjamin". Il faudra donc ajouter la ligne suivante dans le fichier de configuration : "AllowUsers benjamin".

Une fois encore, on va le faire facilement et rapidement avec l'utilisation de sed :
sed -i "s/PermitRootLogin yes/PermitRootLogin no\nAllowUsers benjamin/g" /etc/ssh/sshd_config

On va également désactiver le X11Forwarding qui ne nous est pas nécessaire en remplaçant "X11Forwarding yes" par "X11Forwarding no".

Sed nous permet de le faire rapidement via la commande suivante :
sed -i "s/X11Forwarding yes/X11Forwarding no/g" /etc/ssh/sshd_config

Ensuite, si au delà de 2 minutes les informations de connexion ne sont pas saisies, la connexion est coupée. Cette durée est, selon moi, trop longue. En effet, 30 secondes sont suffisantes.

Il faut donc modifier le paramètre "LoginGraceTime".

En utilisant Sed, voici la ligne associée pour modifier la configuration en place :
sed -i "s/LoginGraceTime 120/LoginGraceTime 30/g" /etc/ssh/sshd_config

On va également modifier les algorithmes utilisés par SSH pour limiter l'utilisation à certains :
echo "Ciphers aes256-ctr,aes192-ctr,aes128-ctr" >> /etc/ssh/sshd_config
echo "MACs hmac-ripemd160" >> /etc/ssh/sshd_config


SSH peut également servir à mettre en place un proxy SOCKS. Cette possibilité ne nous intéresse pas. On va donc désactiver cette possibilité :
echo "AllowTCPForwarding no" >> /etc/ssh/sshd_config

Lorsque vous effectuez un telnet vers votre serveur sur le port SSH, Debian ajoute un chaine de caractère qui pourrait permettre à une personne tierce de savoir quelle distribution utilise votre serveur. Pour mieux ce rendre compte, voici la bannière SSH par défaut :
SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u2

Nous allons donc désactiver ce comportement afin de ne plus afficher le nom de notre distribution :
echo "DebianBanner no" >> /etc/ssh/sshd_config

Voici ce que nous allons ensuite avoir :
SSH-2.0-OpenSSH_6.7p1

Les modifications sont terminées, on redémarre donc le service concerné :
systemctl restart ssh.service

Maintenant que le service est configuré et relancé, nous allons apporter une autre modification.

Cette fois, il s'agit de la mise en place d'une restrictions par adresse IP.
Cette modification est optionnelle si vous avez/devez vous connecter depuis différentes connexions et/ou si vous disposez d'un pare-feu en amont de votre serveur.

On va donc interdire les connexions SSH à tout le monde et mettre une exception pour nos adresses IP :
echo "sshd: ALL" >> /etc/hosts.deny
echo "sshd: 12.34.56.78, 98.76.54.32" >> /etc/hosts.allow


Pour synthétiser, dans le cas présent, seul l'utilsateur benjamin sera autorisé à se connecter en SSH (sur le port 55555) depuis les adresses IP 12.34.56.78 et 98.76.54.32 et aura 30 secondes pour saisr les informations de connexions sans quoi il sera déconnecté automatiquement.

D'autres possibilités sont possibles pour accroitre encore la sécurité de SSH (mise en place d'une authentification par échange de clefs par exemple) mais ça sera l'occasion de faire un nouveau billet :)
07/06/2016 15:40:35

Partager cet article

Commentaires (Cliquer pour afficher)

comments powered by Disqus