Raspberry Pi – Sécurisation de l’accès SSH

Après avoir débloqué l’accès au raspberry pi,
Initialisation et accès au raspberry pi
Nous devons maintenant sécuriser l’accès SSH

Se connecter à distance au raspberry pi
Avec le login ‘pi’ vers l’hôte ‘raspberrypi’ ou l’IP
sudo ssh pi@raspberrypi
Et en validant avec le mot de passe ‘raspberry’

Changer le mot de passe par défaut
sudo raspi-config

Ajouter un nouvel utilisateur, par exemple Fabrice
sudo adduser fabrice

Donner le droit ‘sudo’ à Fabrice, ainsi que d’autres permissions nécessaires
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi fabrice

Vérifier les permissions
sudo su – fabrice

Obliger sudo à demander un mot de passe
sudo visudo /etc/sudoers.d/010_pi-nopasswd
Et changer les ‘NOPASSWD’ par ‘PASSWD
fabrice ALL=(ALL) PASSWD: ALL

Configuration de la connexion ssh par clé RSA

Depuis le système distant voulant accéder au raspberry pi
ssh-copy-id fabrice@raspberrypi

Puis sur le raspberry pi
sudo nano /etc/ssh/sshd_config

Et modifier les lignes :
Port 22 # Changer pour une valeur inutilisée entre 1024 et 65535 # Par ex. 62914 (Voir [1])
PermitRootLogin no # Interdit l’accès ssh au root
PubkeyAuthentication yes # Permet l’accès par clé RSA
PasswordAuthentication no # Bloque l’accès par mot de passe
PermitEmptyPasswords no # Mesure de sécurité supplémentaire
ChallengeResponseAuthentication no # Mesure de sécurité supplémentaire
UsePAM no # Bloque l’accès par mot de passe
X11Forwarding yes # Permet l’utilisation des programmes raspberry pi sur le système distant
MaxStartups 10:30:60 # ‘Le 10 représente le nombre de connexions acceptées sans qu’un utilisateur ait réussi à s’identifier, si cela passe au dessus de 10, il y a 30 % de probalités que les suivantes soient bloquées, et ce pourcentage augmente linéairement jusqu’à 100 % lorsque le full est atteint, à 60 connexions.’
AllowUsers fabrice # Limite l’accès ssh à fabrice seulement # Ligne à ajouter

Relancer ssh
sudo service ssh reload

Maintenant que la connexion est sécurisée,
On peut commencer les mises à jour et au renforcement de la sécurité

Mises à jour et renforcement de la sécurité



[1]
La valeur par défaut du port SSH est ’22’.
Il est recommandé de la changer pour limiter les attaques.
On peut utiliser une valeur inutilisé compris entre 1024 et 65535.
N’oubliez pas de tenir compte de la modification pour, entre autres, le pare-feu et Fail2ban.
Voici un petit script bash qui propose une valeur aléatoire de port libre du système :

Port_Max=65535; Port_Min=1024; List_Port_1=$(sudo netstat -tlnpu | awk '{print $4}' | cut -d. -f4 | sed 's/[0-9]\?:\?:\?:\?//' | cut -d: -f2 | sort -g | uniq | sed -e "/[[:alpha:]]\+/d"); List_Port_2=$(sudo cat /etc/services | awk '{print $2}' | cut -d/ -f1 | sed -e '/^$/d' | sed -e "/[[:alpha:]]\+/d" | sort -g | uniq); List_Port_1et2="$List_Port_1 $List_Port_2"; List_Port_1et2=$(echo "$List_Port_1et2" | sort -g | uniq); VAL=$((Port_Min+RANDOM*(1+Port_Max-Port_Min)/32767)); i=1; while [ `echo $List_Port_1et2 | grep -o $VAL` ]; do echo -e "\n\e[1;36m**************\nRecherche n°$i\nVAL = $VAL\nPort déjà utilisé\n-------------------------------------------------------\nEn effet : "; sudo netstat -tlnpu | grep $VAL; sudo cat /etc/services | grep $VAL; echo -e "-------------------------------------------------------\e[0;m"; VAL=$((Port_Min+RANDOM*(1+Port_Max-Port_Min)/32767)); ((i+=1)); done; echo -e "\n\nPort Disponible : $VAL\n"

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *