Dès lors que cela est possible, il est vivement conseillé de modifier les identifiants par défaut ainsi que les ports par défaut des services critiques.
Concernant SSH, nous allons voir ici quelques éléments qui permettront de renforcer la sécurité de ce service.
Dans le cadre de la rédaction de cet article, nous nous sommes basés sur une distribution de type Debian Jessie. Suivant celle en place sur votre serveur, la configuration peut être amenée à changer. Il faudra, par conséquent, adapter à vos besoins.
Par défaut, pour vous connecter en SSH, vous devez établir une connexion sur le port 22. Modifier ce port peut déjà vous prémunir de bon nombre d'attaques par brute-force.
Si vous souhaitez utiliser SSH sur un autre port que celui par défaut, il vous faudra donc modifier Port 22 par Port 55555 dans le fichier /etc/ssh/sshd_config.
Afin de rendre les attaques par brute-force beaucoup moins efficaces, on peut également désactiver la connexion en SSH par le biais du compte root. Il faudra donc disposer d'un utilisateur autre que le compte par défaut 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. Pour autoriser l'utilisateur ikoula à se connecter en SSH, il faudra donc ajouter la ligne suivante dans le fichier de configuration : AllowUsers ikoula
Si au delà de deux minutes les informations de connexion ne sont pas saisies lors d'une connexion en SSH à votre serveur, la connexion est coupée. Cette durée peut être revue à la baisse (suivant la latence et la stabilité de votre connexion, bien sûr). Trente secondes peuvent être suffisantes. Afin de modifier cette valeur, nous allons modifier le paramètre LoginGraceTime. Nous allons donc maintenant modifier la ligne LoginGraceTime 120 par LoginGraceTime 30 dans le fichier /etc/ssh/sshd_config.
Nous allons désormais modifier les algorithmes utilisés par SSH pour limiter l'utilisation à certains en ajoutant deux lignes supplémentaires dans le fichier de configuration du service SSH :
echo "Ciphers aes256-ctr,aes192-ctr,aes128-ctr" >> /etc/ssh/sshd_config
echo "MACs hmac-ripemd160" >> /etc/ssh/sshd_config
Debian, par défaut toujours, ajoute une chaine de caractère à la bannière SSH. Pour faire simple, si vous effectuer un telnet vers votre serveur (telnet IP_SERVER 22), voici ce que vous obtenez :
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
Désormais, nous allons obtenir ceci :
SSH-2.0-OpenSSH_6.7p1
Les modifications sont terminées, nous allons donc redémarrer le service pour que les modifications soient effectives :
systemctl restart ssh.service
Sachez que vous pouvez également mettre en place des restrictions par adresse IP pour votre service SSH (si votre serveur n'est pas déjà derrière un pare-feu par exemple ou que vos règles iptables ne font pas déjà le nécessaire).
Nous allons 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
Ainsi, seules les adresses IP 12.34.56.78 et 98.76.54.32 seront autorisées à se connecter à voter serveur en SSH (remplacez par les adresses IP appropriées, bien évidemment).
Vous pouvez également mettre en place une authentification par échange de clefs si vous le souhaitez.