Secure Shell (ssh)
Il s'agit d'une application remplaçant rlogin ou telnet. C'est aussi un protocole de communication sécurisé. Son intérêt étant de crypter les informations entre le serveur et le client sur lequel sont saisies les requètes.
Je parlerai ici surtout de la partie serveur de ssh. Un service est lancé pour permettre la communication réseau: sshd
Installation du paquet SSH
Pour linux, il existe OpenSSH (projet géré par l'equipe OpenBSD).
ssh existe côté serveur qui va permettre d'accepter les connexions de type SSH.
Sous Mageia:
urpmi openssh-server
Sous debian et dérivés
apt-get install ssh
Pour ubuntu
apt-get install openssh-server
Pour lancer le serveur:
/etc/rc.d/init.d/sshd start
systemctl enable sshd.service (pour arrêter au démarrage: systemctl disable sshd.service)
service start ssh
Il existe aussi la partie cliente qui va permettre de se connecter à une machine distante.
urpmi openssh-clients
ou
apt-get install openssh-client
La commande sera dans ce cas ssh adresse ou ssh adresse -l utilisateur.
Sous Windows, l'application putty permet de faire une connexion ssh. Il existe aussi mobaxterm pour les connexions XWindow
Fichier de configuration
Il existe un fichier de configuration pour le ssh. Il se trouve généralement sous /etc/ssh/sshd_config
sshd_config
et non ssh_config qui provoquera des erreurs Bad configuration option:...
Ici ce serait Bad configuration option: PermitRootLogin
Ne pas
oublier de relancer le service si vous modifier le fichier de configuration:
Vérifiez aussi le syslog pour valider vos modifications.
service ssh restart (Debian, ubuntu, raspbian)
Sous Mandriva/Mageia:
/etc/init.d/ssh restart
Sous Debian
service ssh restart
Interdire la connexion à distance ssh en tant qu'utilisateur root
Si le service sshd (openssh) est activé pour permettre une connexion à distance sécurisée, il est primordiale d'interdire les connexions à distance en tant qu'utilisateur root. Ceci afin de limiter les risques qu'un hacker ne prenne le contrôle de votre machine Unix via ssh (brute force pour trouver le mot de passe).
Pour cela, il suffit d'ajouter dans le fichier /etc/ssh/sshd_config, la ligne suivante:
PermitRootLogin no
L'utilisation
des commandes su ou sudo reste possible pour les utilisateurs autorisés à se
connecter en ssh.
Vous pouvez compléter ce paramétrage avec DenyUsers et DenyGroups.
Autoriser la connexion à distance ssh en tant qu'utilisateur root
Il suffit d'ajouter (ou de décommanter la ligne commençant par #)
PermitRootLogin prohibit-password
puis, pour prendre en compte la modification:
sudo service ssh restart
(Voir Interdire la connexion à distance ssh en tant qu'utilisateur root ci-dessus).
Limiter la connexion à distance à certains utilisateurs
Nous avons déjà vu qu'il était possible d'interdire certains utilisateurs de se logger à distance ou pas.
Sans être aussi radical, il sera possible de préciser au niveau ssh les utilisateurs autorisés à utiliser une connexion à distance.
AllowUsers permet de lister les utilisateurs autorisés, AllowGroups pour les groupes utilisés dans le fichier /etc/ssh/sshd_config
Il suffit d'indiquer la liste des utilisateurs/groupes avec espace comme séparateur.
AllowUsers toto titi tata
De même, DenyUsers ou DenyGroups pour indiquer la liste des utilisateurs/group interdit.
Exemple:
DenyUsers root
DenyGroups root
Il sera
possible d'utiliser * pour remplacer une partie ou la totalité d'un mot.
Un utilisateur peut appartenir à plusieurs groupes (cf/ /etc/group). Si un utilisateur fait parti de l'un des groupes déclarés sous DenyGroups, alors l'utilisateur en question ne pourra tout simplement pas se connecter. /var/log/auth.log peut vous aider à résoudre des problèmes de connexions qui vous semblent inexpliqués.
Annexes
Voir sécurité pour le ssh sous Linux.