Je n’ai jamais besoin de me connecter à mes serveurs depuis la console et je n’ai pas besoin de reconfirmer l’identité de l’utilisateur avec un mot de passe pour utiliser la commande sudo. Du coup, je n’ai besoin d’aucune authentification par mot de passe. Il n’est possible de se connecter au serveur qu’à l’aide de ssh avec des clés, je peux donc complètement bloquer les mots de passe pour root et les utilisateurs nommés.

Pré-requis

Étapes précédentes

Variables existantes

Nous aurons besoin uniquement du nom de l’utilisateur nommé (UN), qui a déjà été définie.

Rechargement des variables dans l’environnement

Il faut charger la variable UN définie dans le fichier de configuration décrit dans l’article Installation et configuration de Sudo. Assurons-nous que les variables soient bien chargées dans l’environnement courant :

source /root/config.env

Verrouillage du compte root

Verrouillons les connexions directes au compte root depuis la console et depuis la commande su. Cela empêchera également l’utilisation des paramètres de démarrage single et recovery depuis la console ou un KVM. C’est optionel et potentiellement dangereux en cas de problème grave. La seule possibilité sera d’utiliser la console ou un KVM et d’ajouter un paramètre tel que init=/bin/sh, il faudra alors une bonne maîtrise du système.

passwd -l root

Attention, cela bloque les connexions depuis la console pour root, incluant les démarrages spéciaux tels que “single boot” ou “boot failure recovery (problèmes sur les systèmes de fichiers)”.

Verrouillage du mot de passe utilisateur

Désormais, on peut ouvrir des connexions SSH sans mot de passe au compte utilisateur nommé et au compte root, on peut donc désactiver le mot de passe de l’utilisateur et mettre les attaques par force brute en échec.

[ ! -z "${UN}" ] && passwd -l ${UN}

Pour les serveurs uniquement, ne surtout pas faire cela sur une station de travail, il deviendrait impossible de s’y connecter !

Alerte par courriel

J’ai trouvé cette astuce sur tutoriels-video 1, en Français, et j’ai aimé. Elle envoie un courriel d’alerte lorsque quelqu’un se connecte au serveur.

cat << EOF >> /etc/bash.bashrc
echo \`who\` \`date\` | mail -s "shell connection on \`hostname\`" root
EOF
  1. https://www.tutoriels-video.fr/securiser-son-serveur-dedie-avec-iptables-fail2ban-et-rkhunter/