Sécurisation des accès SSH
Si vous souhaitez sécuriser un tant soit peu l’accès à distances à vos machines Linux à distance via le protocole SSH ou bien l’échange de fichier par ce même protocole, cette procédure est faite pour vous !
I. Modification du fichier de configuration SSH sous Linux
Il est possible de désactiver le login du root via SSH, et de créer un utilisateur avec les droits root pour se connecter. De cette façon les pirates devrons également trouver le nom d’utilisateur root.
1. Editer le fichier de configuration de SSH
nano +/PermitRootLogin /etc/ssh/sshd_config
2. Décommenter la ligne #PermitRootLogin et mettez le à ‘no’
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
II. Création de clé OpenSSH sous Linux
1. Générer une clé SSH
ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa -N ''
Ici la commande utilise le protocole rsa pour générer une clé de 4096 bytes, la sauvegarde dans le dossier .ssh de root et n’est pas protégée par un mot de passe (il est possible d’ajouter une passkey mais c’est comme avoir un double mot de passe).
Les clés privées et publiques sont stockées sous :
/root/.ssh/id_rsa > pour la clé privée
/root/ssh/id_rsa.pub > pour la clé publique
2. Copier la clé publique SSH par le réseau et entrer une première fois le mot de passe du serveur
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
Connectez vous au serveur, il faudra accepter le certificat et entrer le mot de passe de l’utilisateur lors de la première connexion.
(I) Information
Si lors de votre deuxième connexion on vous demande encore votre mot de passe, il faut activer sa clé privée avec cette commande :
ssh-add /root/.ssh/id_rsa
III. SSH de Windows à Linux avec une clé publique
Cette procédure sert à se connecter depuis une machine Windows vers une machine Linux de façon sécurisée, sans mot de passe par le biais d’une clé publique.
I. Génération du jeu de clés sous Windows
1. Sous Windows, lancer la commande de génération de clé RSA via cette commande :
ssh-keygen -t rsa -b 4096
(I) Information
Comme sous Linux, il n’est pas nécessaire de créer une passkey.
2. Une fois les clés créés, se rendre dans votre dossier d’utilisateur et ouvrir le fichier nommé id_rsa.pub, ou bien utiliser cette commande :
cat C:\Users\User\.ssh\id_rsa.pub
Il contient votre clé d’authentification publique, c’est celle ci qu’il va falloir coller dans le fichier des clés autorisée dans le serveur auquel nous voulons nous connecter. Il est possible d’ouvrir le fichier avec un bloc note ou bien notepad++.
3. Copier la clé et se connecter sur le serveur avec le mot de passe avec cette commande :
ssh utilisateur@adresseIP
4. S’il n’est pas présent, il faut créer un dossier .ssh dans le repertoire utilisateur
mkdir ~/.ssh
5. Créer et éditer un fichier authorized_keys dans ce dossier
nano ~/.ssh/authorized_keys
6. Coller la clé publique que nous avons précédemment généré sur notre poste Windows. Si le fichier existait déjà, il faut simplement ajouter une ligne dans le fichier et de coller la nouvelle clé.
(I) Information
Il est possible que le fichier n’ait pas les bons droits, pour éviter cette erreur on peut faire un chmod 600 :
chmod 600 ~/.ssh/authorized_keys
II. Connexion en utilisant la clé privée
Une fois que la clé publique à été ajoutée sur le serveur, on peut s’en déconnecter puis se reconnecter en utilisant cette syntaxe :
ssh -i C:\Users\User\.ssh\id_rsa utilisateur@adresseIP
IV. Désactivation de la connexion par mot de passe
Il est possible de désactiver la connexion par mot de passe, mais c’est quand même déconseillé car sans accès aux machines enregistrées sur le serveur on perd totalement son accès à distance.
Pour désactiver ce paramètre, il faut lancer cette commande, décocher la ligne et la passer à yes
nano +/PasswordAuthentication /etc/ssh/sshd_config
V. Création d’un utilisateur dans le groupe SU dédié
Créer un nouvel utilisateur et l’ajouter au groupe sudo
sudo adduser username
sudo usermod -aG sudo username
Vous pouvez maintenant vous connecter avec le compte que vous avez choisi, et vous pouvez toujours lancer vos commandes root en utilisant sudo. Il est également possible d’ajouter une ligne au fichier de configuration pour autoriser uniquement les utilisateurs que l’on souhaite à se connecter en SSH au serveur.
AllowUsers admin username
⚠️ Attention
N'ajoutez pas root si vous voulez sécuriser le serveur