Interdire la connexion de l’utilisateur root
Lors de l’installation basique du serveur OpenSSH, l’utilisateur root
est autorisé à se connecter au serveur directement, ce qui peut être considéré d’une certaine manière comme un défaut de sécurité car si quelqu’un trouve d’une manière ou d’une autre le mot de passe de cet utilisateur (en utilisant une attaque par dictionnaire par exemple), il pourra ensuite faire ce qui lui plait sur le serveur.
Il est donc nécessaire de modifier la configuration du serveur ssh :
- nano /etc/ssh/sshd_config
Puis modifier la ligne :
- PermitRootLogin yes
en :
- PermitRootLogin no
afin d’interdire au compte root de se connecter directement en ssh.
Il est ensuite nécessaire de redémarrer ssh pour prendre en compte les modifications :
- sudo /etc/init.d/ssh restart
NB : Les utilisateurs "normaux" connectés par ssh ont toujours la possibilité de passer en super-utilisateur en utilisant su
ou sudo
bien entendu.
N’autoriser que certains utilisateurs définis à se connecter
Il peut être également utile de n’autoriser que certains utilisateurs du système à se connecter en ssh au serveur.
Pour ceci il suffit de modifier le fichier de configuration :
- nano /etc/ssh/sshd_config
Puis d’ajouter ou modifier la ligne si elle existe déjà :
- AllowUsers user1 user2
NB : "user1" et "user2" doivent être des utilisateurs du système.
Il est ensuite nécessaire de redémarrer ssh pour prendre en compte les modifications :
- sudo /etc/init.d/ssh restart
Vérifier les droits des répertoires et fichiers
Les répertoires de configuration et les fichiers contenus, qu’ils soient sur le serveur ou sur les machines clientes ne devraient pas être lisible et utilisables par n’importe quel utilisateur du système.
Dans un premier temps on va modifier les droits du répertoire de la sorte :
- chmod 700 ~/.ssh
Cela change les droits de notre répertoire personnel .ssh
en 700 soit, seulement l’utilisateur peut lire, écrire et exécuter dans ce répertoire.
Si on lance la commande suivante ls -lsa ~/.ssh
on doit voir la première ligne suivante 4 drwx------ 2 user1 user1 4096 2 janv. 2011 .
Ensuite, seuls les utilisateurs devraient pouvoir lire et modifier leurs fichiers de configuration. Pour ce faire, on lance la commande suivante :
- chmod 600 ~/.ssh/*
Avec la commande ls -lsa ~/.ssh/
, l’ensemble des fichiers devraient avoir comme droits -rw-------
.
Enfin, on va modifier les droits des clés publiques [1] (*.pub
) en donnant à tous les utilisateurs la possibilité de les lire avec la commande :
- chmod 644 ~/.ssh/*.pub
En lançant la commande suivante ls -lsa ~/.ssh/*.pub
, l’ensemble des fichiers doivent avoir comme droits -rw-r--r--
.
Fichiers et répertoires modifiés modifié
- Le répertoire :
-
~/.ssh/
le répertoire de configuration ssh de chaque utilisateurs (sur tous les utilisateurs sur le serveur et sur les machines clientes) ;
-
- Les fichiers :
-
/etc/ssh/sshd_config
: fichier de configuration du serveur openssh ; -
~/.ssh/*
: tous les fichiers des répertoires susnommés, ce répertoire peut contenir les fichiers suivants :- Les clés de connexions privées/publiques (voir "Sécurisation SSH poussée : authentification par clé RSA") ;
- Le fichier de configuration
config
pour les connexions distantes sur les répertoires utilisateurs (voir "Utilisation et configuration spécifiques coté client") ; - Le fichier listant les hôtes connus
known_hosts
où l’utilisateur s’est déjà connecté ;
-