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"