Sécuriser le service SSH

Le service SSH est un des services les plus attaqués, une CVE ou un accès non autorisé via ce service et votre serveur sera compromis.

Par défaut le service à une sécurité moyenne qui peut-être améliorée alors suivez ces conseils

Toute la configuration se trouve dans le fichier /etc/ssh/sshd_config

Désactiver le login root

Modifier la ligne #PermitRootLogin without-password

en

PermitRootLogin no

Changer le port SSH

Modifier la ligne #Port22

en

Port 22255 (Mettez le port que vous voulez à partir de 1024)

Forcer l'utilisation de la version 2

Ajoutez la ligne suivante

Protocol 2

Autoriser seulement quelques utilisateurs

Ajoutez la ligne suivante : AllowGroups ssh

Ajoutez les utilisateurs autorisés dans le groupe ssh 

usermod -G ssh user

Envoyer un mail lorsqu'un utilisateur se connecte

Ajoutez cette ligne sur les .bashrc des utilisateurs concernés

echo "Connexion Shell :" `who` | mail -s "Alert: Root Access from" who root@localhost

#Pour l'ajouter automatiquement pour chaque nouvels utilisateurs, ajoutez la ligne dans /etc/skel/.bashrc

Ajouter une bannière

Au yeux de la loi vous devez mettre une bannière pour prévenir que ce serveur est à vous et ne doit pas être piraté (Oui je sais elle est bien faite)

Pour afficher la bannière avant le login : dans /etc/issue.net
Pour afficher la bannière une fois connecté : dans /etc/motd

############################################################
#                       ! WARNING !                        #
#       It's a private server, do not try to hacking it !  #
############################################################

Dans /etc/ssh/sshd_config

Banner /etc/issue.net

Forcer l'utilisation de clef SSH

Veillez à avoir déclaré votre clef publique dans le authorized key avant cela sous peine d'être enfermé dehors

- Déclarer votre clef publique dans /home/$user/.ssh/authorized_keys
ssh-keygen -t ed25519   #Créer les clefs publiques/privées

- Configurez le service SSH : Dans /etc/ssh/sshd_config

#PubkeyAuthentication yes -> PubkeyAuthentication yes
PasswordAuthentication yes -> PasswordAuthentication no

systemctl restart ssh

Si cette solution est extrême ou non pratique (si besoin de se connecter de n'importe ou) une alternative de sécurité est possible avec fail2ban

N'oubliez pas de redémarrer le service !

systemctl restart ssh
//
service ssh restart