17 Conseils pour Sécuriser votre Raspberry Pi comme un Pro


Les Raspberry Pi sont livrés avec un niveau de sécurité très léger par défaut
En général, ce n’est pas très gênant, car ils sont souvent utilisés sur des petits réseaux, à la maison par exemple
Mais si vous ouvrez certains ports sur Internet, l’utiliser en tant que point d’accès Wi-Fi ou encore l’installer sur un réseau plus important (en entreprise par exemple), il devient crucial de mettre en place de mettre en place des mesures de sécurité sur votre Raspberry Pi
Je vais vous montrer aujourd’hui ce que vous pouvez faire

Comment sécuriser un Raspberry Pi ?
Il existe plusieurs niveaux de sécurité que vous pouvez mettre en place, à commencer évidemment par le changement du mot de passe par défaut
Mais il existe aussi des niveaux plus pointus, auxquels vous ne penserez pas forcément, et enfin des points plus complexes à mettre en place qui demanderont un peu plus de temps

Je vais donc vous expliquer ici mes 17 conseils pour sécuriser votre Raspberry Pi
Il s’agit des éléments de base qui s’appliqueront à la plupart des situations (et aussi sur Linux en général)
Mais ensuite toute dépendra de ce que vous faites exactement avec votre Raspberry Pi
Vous aurez après cette lecture une base solide, et ensuite il faudra creuser suivant votre utilisation précise

Introduction

Dois-je vraiment mettre en place tous ces conseils ?

Comme indiqué dès le début, si votre Raspberry Pi est utilisé à votre domicile, avec peu de services actifs et aucun port permettant son accès depuis Internet, vous êtes plutôt tranquille

Le niveau de risque dépend essentiellement du niveau d’exposition au « monde extérieur »
Vous ne prendrez pas les mêmes mesures sur une console Retropie qui n’a même pas le réseau et sur un serveur web et/ou NextCloud accessible depuis Internet par exemple

Ces 17 conseils sont bons à connaître dans tous les cas, et faciles à appliquer pour la plupart, donc si vous avez quelque chose d’accessible de l’extérieur ou sur un plus gros réseau que votre domicile, je vous conseille de prendre 30 min pour en prendre connaissance et mettre en place ce qui vous semble judicieux

Comment j’ai rédigé cet article

J’ai sélectionné ces 17 conseils pour vous les partager, car ils s’appliquent à tout ceux qui ont un Raspberry Pi et le rendent accessible d’une manière ou d’une autre

Ils sont indiqués dans un ordre correspondant au niveau de risque
Si vous pensez que votre Raspberry Pi est plutôt exposé, suivez-les tous et mettez en place le maximum
Si ce n’est pas trop le cas, les premiers devraient suffire

17 conseils pour sécuriser un Raspberry Pi

1 – Garder un système à jour

Le premier peut sembler évident, mais c’est très important
Lorsque vous mettez à jour les paquets Raspbian, vous n’installez pas seulement les nouvelles fonctions, mais surtout les corrections de sécurité pour les logiciels déjà installés

Essayez de mettre à jour régulièrement votre système avec :
sudo apt update
sudo apt upgrade

Vous pouvez aussi automatiser ce processus avec le paquet « unattended-upgrades »
Cette procédure vous permet d’avoir une installation automatique des mises à jour à intervalle régulier :

  • Installez le paquet en question :
    sudo apt install unattended-upgrades
  • Ouvrez le fichier de configuration :
    sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
  • Changez tout ce que vous voulez dans ce fichier
    Par défaut, il téléchargera seulement les mises à jour de sécurité, mais il est possible de modifier cela pour installer toutes les mises à jour
    Je vous conseille au minimum de décommenter cette ligne :
    Unattended-Upgrade::Mail "root";
    Cela enverra un mail à l’utilisateur « root » ou à n’importe quel autre adresse / utilisateur si vous avez un serveur mail configuré
  • Sauvegardez et quittez (CTRL+O, CTRL+X)
  • Ensuite il nous reste à définir l’intervalle de mise à jour
    Ouvrez ce fichier :
    sudo nano /etc/apt/apt.conf.d/02periodic
  • Coller les lignes suivantes (le fichier devrait être vide, mais si ce n’est pas le cas changez juste les valeurs) :
    APT::Periodic::Enable "1";
    APT::Periodic::Update-Package-Lists "1";
    APT::Periodic::Download-Upgradeable-Packages "1";
    APT::Periodic::Unattended-Upgrade "1";
    APT::Periodic::AutocleanInterval "1";
    APT::Periodic::Verbose "2";

    Cela activera une mise à jour automatique tous les jours
    Nous demandons à apt de faire chaque jour : mise à jour des dépôts et des paquets, ainsi qu’un nettoyage avec « auto-clean »
    La dernière ligne correspondant au niveau de debug dans le fichier /var/log/unattended-upgrades et dans l’email envoyé (1 = bas, 3 = haut)
  • Sauvegardez et quittez
  • Cela devrait être bon maintenant
    À noter qu’il est possible de vérifier votre configuration avec la commande :
    sudo unattended-upgrades -d

N’oubliez pas de vérifier le fichier de log et/ou l’email reçu régulièrement pour vous assurer que tout est bien fait comme prévu

2 – Ne pas utiliser d’auto-login ou de mot de passe vide

Les mots de passes représente une part majeure dans la sécurité d’un système

Première chose à voir : être certain que tous les accès sensibles demandent un mot de passe
N’utilisez pas la fonction d’auto-login, et assurez-vous d’avoir un mot de passe requis sur toutes les applications accessibles directement
Je ne vais pas lister tous les cas, mais typiquement si vous avez un serveur web, assurez-vous que les fichiers personnels et l’interface d’administration sont bien protégés par un mot de passe (Pensez à PHPMyAdmin par exemple)

Assurez-vous qu’aucun utilisateur ne puisse se connecter sans mot de passe sur le Raspberry Pi
Si vous avez seulement les comptes par défaut, c’est facile à vérifier
Si vous en avez davantage, voici comment faire :

  • Cherchez les mots de passe vides avec :
    sudo awk -F: '($2 == "") {print}' /etc/shadow
    Cela affichera les comptes qui n’ont pas de mot de passe défini
  • Verrouillez les comptes sans mot de passe :
    passwd -l <utilisateur>

3 – Changer le mot de passe par défaut de pi

Une erreur fréquente est également de laisser le mot de passe par défaut pour l’utilisateur pi (c’est-à-dire « raspberry »)
N’importe qui ayant déjà utilisé un Raspberry Pi connaît ce mot de passe
Beaucoup de gens s’amusent à scanner les ports SSH et à tester les identifiants pi / raspberry dès qu’il en trouve un ouvert

Changer le mot de passe par défaut devrait être votre premier réflexe lors d’une nouvelle installation
Faire cela est facile, connectez-vous en tant que pi et entrez la commande suivante :
passwd

Essayez d’utiliser une phrase ou une association de mots qui fait plus de 15 caractères pour vous protéger au mieux des attaques par brute force tout en vous en souvent facilement (exemple : jaimemonraspberrypi sera un mot de passe suffisamment complexe et facile à mémoriser)
Des outils comme ce générateur de mot de passe peuvent vous aider si vous manquez d’inspiration 🙂

4 – Désactiver le compte pi

Comme je l’ai déjà dit, le compte « pi » est celui qui subit le plus de tentatives de brute force avec « root »
Les hackers ont une liste des identifiants par défaut qu’ils vont tester en priorité

Dans la mesure du possible, essayez de créer un nouvel utilisateur pour rendre inutile ce genre d’attaques :

  • Créer un nouvel utilisateur
    sudo adduser <utilisateur>
  • Donnez lui le droit d’utiliser sudo si besoin
    sudo adduser <utilisateur> sudo
    Cela va l’ajouter au groupe sudo
  • Vérifiez que tout fonctionne bien (accès SSH, sudo, etc.)
  • Copier les fichiers de l’utilisateur « pi » vers le nouvel utilisateur si besoin :
    sudo cp /home/pi/Documents/* /home/<utilisateur>/Documents/
  • Supprimez l’utilisateur « pi » une fois sûr de vous :
    sudo deluser -remove-home pi
    Si vous n’êtes pas complètement sur, il est possible de verrouiller le compte (comme vu précédemment), et de le supprimer seulement quelques semaines/mois plus tard, une fois que vous serez rassuré

5 – Stopper les services non indispensables

Sur Raspberry Pi, on a tendance à tester plein de projets, et ce n’est pas forcément une bonne habitude niveau sécurité
Disons que vous avez installé PHPMyAdmin il y a 3 mois pour tester un truc, mais que vous ne l’utilisez plus actuellement
Cela pourrait ouvrir une faille de sécurité qu’un hacker utiliserait pour lui permettre d’accéder au système

Essayez d’éteindre ou de désinstaller tous les services et applications non utilisés :

  • Pour arrêter un serveur utilisez :
    sudo service <service> stop
    Si jamais il redémarre automatiquement au démarrage :
    sudo update-rc.d <service> remove
  • Ou pour désinstaller un service ou une application :
    sudo apt remove <nom>

6 – Demander un mot de passe à l’utilisation de sudo

Comme vous devez le savoir, sudo ne demande pas toujours un mot de passe
La plupart du temps, il n’est pas nécessaire de taper votre mot de passe à nouveau
C’est bien car cela permet d’être efficace, mais en termes de sécurité ce n’est pas une bonne idée

Si quelqu’un réussit à avoir un accès au terminal de votre Raspberry Pi, les accès administrateurs lui seront ouvert sans demande de mot de passe
Je vous recommande de configurer la demande d’un mot de passe à chaque utilisation de sudo :

  • Modifiez le fichier suivant :
    sudo nano /etc/sudoers.d/010_pi-nopasswd
  • Trouvez la ligne :
    pi ALL=(ALL) NOPASSWD: ALL
    Ou n’importe quel autre utilisateur avec les droits de sudo
  • Remplacez la ou les ligne·s par quelque chose comme :
    pi ALL=(ALL) PASSWD: ALL
  • Faites la même chose pour chaque utilisateur avec l’accès au sudo
  • Sauvegardez et quittez (CTRL+O, CTRL+X)

7 – SSH : Empêcher la connexion avec root

Comme dit précédemment, les utilisateurs « root » et « pi » sont les plus attaqués en brute-force
Et généralement via SSH

Il faut donc vous assurer que l’utilisateur « root » ne peut pas se connecter directement
Si vous avez besoin des droits administrateurs, connectez-vous avec votre utilisateur de base (pas pi donc) et ensuite utilisez sudo pour accéder aux mêmes permissions

Par défaut, l’utilisateur « root » est désactivé
Mais si vous avez un doute, vous pouvez vérifier avec cette procédure :

  • Ouvrez la configuration du serveur SSH :
    sudo nano /etc/ssh/sshd_config
  • Trouvez la ligne ressemblant à :
    #PermitRootLogin prohibit-password
  • Si elle est décommentée avec tout autre valeur, commentez la en ajoutant le dièse en début de ligne
  • Sauvegardez et quittez (CTRL+O, CTRL+X)
  • Redémarrez le serveur SSH
    sudo service ssh restart

8 – SSH : Changer le port par défaut

Le port par défaut pour SSH est le 22
Donc les attaques SSH vont utiliser des bots pour se concentrer sur ce port en particulier
Pour éviter cela, vous pouvez modifier le port par défaut et utiliser un autre

  • Toujours dans le fichier de configuration SSH :
    sudo nano /etc/ssh/sshd_config
  • Trouvez la ligne
    #Port 22
  • Et remplacez par quelque chose comme cela :
    Port 1111
    Assurez-vous de ne pas utiliser un port réservé pour un autre service
    Vous trouverez la liste des ports connus ici
  • Sauvegardez et quittez
  • Redémarrez le serveur SSH :
    sudo service ssh restart

N’oubliez pas d’ajuster les règles du pare-feu si vous en avez un
Et faites bien un test de connexion avant de fermer votre session actuelle, si le nouveau port ne fonctionne pas, cela vous évitera de perdre la main 🙂

9 – SSH : Utiliser des clés SSH plutôt que des mots de passe

Les étapes précédentes nous ont déjà permises de bloquer la plupart des attaques automatiques et les amateurs
On passe maintenant progressivement à des choses qui vont aider, même si votre assaillant est plus malin et concentré sur votre système en particulier

Utiliser un mot de passe compliqué va le ralentir, mais il arrive forcément un moment ou il le trouvera, même si cela lui prend des semaines
Par contre ce qui peut le bloquer encore plus, est d’utiliser des clés à la place des mots de passe
Un attaquant peut sans doute réussir à deviner un mot de passe de 15 caractères, mais pas une clé SSH

L’idée générale est de créer une clé sur votre ordinateur, puis l’autoriser sur le Raspberry Pi
Ainsi seul votre ordinateur pourra se connecter au Raspberry Pi (avec ou sans mot de passe)
Vu que cela serait un peu trop long à expliquer ici, je vous renvoie vers ce tutoriel qui vous expliquera tout étape par étape

Une fois que cela fonctionne, vous pouvez désactiver toutes les connexions SSH avec mot de passe simple
Changez cette ligne dans le fichier de configuration SSH :
PasswordAuthentication no

10 – Installer Fail2Ban

Fail2ban est un outil de détection des attaques, permettant de les bloquer
Dans les étapes précédentes, j’ai dit qu’un hacker pouvait essayer de trouver votre mot de passe pendant des mois, et qu’il y arriverait peut-être
L’intérêt principal de Fail2ban est de bloquer cela

Fail2ban va bloquer les adresses IPs qui ont utilisé un mauvais mot de passe plus de X fois
Cela est configurable, que ce soit sur le nombre d’essais ou la durée du blocage
Typiquement si vous dites qu’à partir de 3 essais ratés l’IP est bloquée 3 jours, cela devrait ralentir nettement les attaques 🙂

Voici les étapes à suivre pour mettre cela en place :

  • Installez le paquet :
    sudo apt install fail2ban
  • Par défaut, Fail2ban bloquera déjà pendant 10 minutes après 5 essais ratés
    Je pense que c’est déjà un bon début, mais si vous voulez changer cela, toute la configuration est disponible dans le dossier /etc/fail2ban
    Le fichier principal étant /etc/fail2ban/jail.conf
  • Redémarrez ensuite Fail2ban pour appliquer vos changements :
    sudo service fail2ban restart

Cela devrait bien ralentir vos attaquants
Avec 5 essais possibles toutes les 10 minutes, cela les limite à 720 essais par jour
Si votre mot de passe n’est pas évident, cela devrait déjà prendre pas mal de temps

11 – Installer un pare-feu

Si vous ne le savez pas, un pare-feu sert à bloquer tous les ports sauf ceux utiles, et filtrer les accès par adresse IP
Par exemple, vous pouvez tout bloquer, et autoriser uniquement le SSH depuis l’IP de votre ordinateur

J’ai l’habitude d’installer « iptables » pour mes règles de pare-feu, mais peut-être que si vous débutez ce n’est pas le plus simple
Donc je vais vous expliquer comment faire avec « ufw » (Uncomplicated FireWall, ou pare-feu non compliqué en français), qui est plus simple comme son nom l’indique 🙂

Je vous montre une configuration basique avec juste un accès HTTP à tous et un accès SSH pour une seule IP, mais à vous d’adapter suivant votre utilisation réelle du Raspberry Pi :

  • Installez le paquet du pare-feu
    sudo apt install ufw
  • Autorisez l’accès à Apache pour tout le monde
    sudo ufw allow 80
    sudo ufw allow 443
  • Autorisez l’accès SSH pour votre adresse IP, par exemple :
    sudo ufw allow from 192.168.1.100 port 22
    Je vous laisse adapter l’adresse IP et le port suivant vos paramètres
    Sur un réseau local, vous trouverez votre adresse IP en utilisant ipconfig (Windows) ou ifconfig (Linux/Mac)
  • Activez le pare-feu :
    sudo ufw enable
    Attention, cela va également l’activer au redémarrage du Raspberry Pi
    Si vous perdez la maintenant, vous ne serez plus capable de continuer avec un accès distant, même en redémarrant
    Il faudra vous connecter physique au Raspberry Pi pour le désactiver et/ou changer la configuration
  • Vérifiez que tout est ok avant de continuer

Pour afficher les règles actuellement configurées sur ufw, voici la commande à utiliser :
sudo ufw status verbose

Je vous laisse voir le « man ufw » pour plus d’informations sur le sujet

12 – Sauvegarder votre système régulièrement

L’une des pires conséquences possibles suite à une attaque réussie est la perte de données
Si vous sauvegardez correctement et régulièrement vos fichiers, cela ne devrait pas trop vous perturber, même si un hacker parvenait à détruire le contenu de votre carte SD

J’ai déjà écrit un guide sur la sauvegarde d’un Raspberry Pi, donc je ne vais pas rentrer plus dans le détail ici
Mais la chose à ne pas oublier lors de la mise en place d’une sauvegarde est de s’assurer que la sauvegarde est lisible et utilisable (en testant réellement sa récupération)

13 – Chiffrer les connexions

Cela est un sujet très large et je ne vais donc pas donner beaucoup de détails sur ce point, mais je vais vous donner un exemple parlant
Avec les protocoles basiques, les données circulent sur le réseau en clair
C’est-à-dire que si vous tapez votre mot de passe depuis votre ordinateur, un hacker pourra l’intercepter en écoutant le réseau

Par chance, il existe la plupart du temps des solutions pour éviter cela

La première chose est d’arrêter d’utiliser des protocoles non-surs (FTP, Telnet et HTTP par exemple)
Préférez leurs alternatives sécurisées (SFTP, SSH, HTTPS)

La procédure dépendra de chaque protocole
Mais concentrons-nous sur le HTTP par exemple

Le HTTP est très bien pour du contenu statique. Si vous n’avez pas de mot de passe à taper ou ne diffuser par de contenu sensible, vous n’avez pas de problème.
Mais passer vos applications en HTTPS est bien plus sûr

C’est assez simple à faire, il faudra juste obtenir un certificat et changer quelques lignes dans la configuration de votre serveur web
Vous trouverez facilement de l’aide à ce sujet sur Internet

Même chose pour FTP, pourquoi utiliser FTP alors que SFTP est déjà utilisable nativement sur Raspberry Pi une fois l’accès SSH activé ?
Même question pour Telnet, cela est complètement inutile alors que SSH est disponible

Regardez donc tous les protocoles que vous utilisez actuellement, et assurez-vous que vous utilisez bien la variante la plus sécurisée disponible

14 – Utiliser un VPN

Une option plus radicale est d’accéder à votre Raspberry Pi à travers un VPN
VPN signifie « Virtual Private Network » en anglais, soit Réseau Privé Virtuel
Il vous permet d’accéder à des services distants comme si vous étiez sur le même réseau local
Si votre Raspberry Pi héberge des services, cela permet de chiffrer tout le flux de données entre vous et le Raspberry Pi

C’est une bonne option vous évitant d’ouvrir les ports sur Internet si vous avez peu d’utilisateurs
Je rédigerais un tutoriel sur le sujet prochainement, mais vous trouverez facilement de l’information sur Internet (cherchez OpenVPN par exemple)

15 – Protéger l’accès physique

La dernière méthode de protection de ce guide, et qui est souvent ignorée en matière de sécurité informatique est l’accès physique
Vous pouvez mettre en place tous les protocoles sécurisés, les pare-feus et les VPN que vous voulez, si votre Raspberry Pi est accessible à tous dans le hall du bâtiment, tout cela est inutile

Assurez-vous qu’il ne peut pas être volé facilement (ni sa carte SD), et que personne ne puisse brancher quoi que ce soit dessus (notamment un clavier et écran avec un accès immédiat au système ^^)
Les étapes permettant d’éviter cela dépendront de votre situation
Peut-être qu’une simple déconnexion automatique au bout de 5 minutes, un mot de passe au boot ou un chiffrage de la carte SD peuvent être des pistes

Pensez-y, que pourrait-il arriver de pire si quelqu’un parvenait à accéder physiquement au Raspberry Pi ?
Ensuite trouvez les solutions pour empêcher cela d’arriver

16 – Vérifier les fichiers de logs régulièrement

Les deux derniers points ne sont pas de nouvelles protections à mettre en place, mais plus un engagement à prendre avec vous-même
La plupart du temps, les attaques peuvent être détectées dans les fichiers de logs
Essayez donc d’y jeter un œil régulièrement pour détecter tout activité douteuse

Tous les logs principaux se trouvent dans le dossier /var/log, voici ceux à connaître :

  • /var/log/syslog : fichier principal pour l’ensemble des services
  • /var/log/message : fichier pour tout le système
  • /var/log/auth.log : permet de voir les dernières tentatives de connexion
  • /var/log/mail.log : si vous avez un serveur mail, vous verrez ici les dernières activités (mails envoyés par exemple)
  • Et ensuite vous avez des sous-dossiers par applications, par exemple le fichier /var/log/apache2/error.log pour Apache ou /var/log/mysql/error.log pour MySQL

Des solutions existent pour vous simplifier cette tâche
Par exemple, le contenu du fichier syslog peut être envoyé un autre serveur ou Raspberry Pi, avec une interface permettant de trouver rapidement certains événements
Vous pouvez utiliser « logwatch » pour avoir des rapports quotidiens du système

17 – Se tenir informé des nouvelles

Pour garder un niveau de sécurité optimal dans vos projets, essayez de vous tenir informé
Je vois passer un grand nombre de nouvelles vulnérabilités tous les jours, et il peut se passer des semaines avant que les corrections soient disponibles sur Raspberry Pi
Si vous lisez les nouvelles au sujet de la sécurité régulièrement, vous pourriez prendre des mesures avant d’attendre une mise à jour automatique

Voici quelques liens utiles pour cela (tous en anglais) :

Vous pouvez aussi utiliser un scanner de vulnérabilités comme Nessus pour détecter automatiquement les problèmes sur votre réseau
Mais si vous avez des projets demandant un niveau de sécurité si élevé, je doute que vous soyez encore sur Raspberry Pi 🙂

Conclusion

Voilà, vous savez tout ce qu’il y a à savoir sur les principales mesures à mettre en place pour sécuriser un Raspberry Pi
Bien sur cette liste n’est pas exhaustive, il en existe plein d’autres qui peuvent être utiles, mais l’on parle tout de même de projets Raspberry Pi, pas de serveur haute dispo ou sensible
Je pense que vous serez déjà bien protégé si vous avez mis en place la majorité des conseils donné sur cette page

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi and publiant des guides détaillés et des tutorials rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec un expérience dans le développement web.

Recent Content