Que devrait-on faire pour sécuriser Raspberry Pi?

82

Le fait de connecter des dizaines de milliers de Raspberry Pi à Internet finira par susciter l’intérêt de certaines personnes qui aimeraient faire des choses peu recommandables sur les petits ordinateurs, en particulier lorsque de nombreuses personnes utilisent leur Pi pour créer des serveurs de réseau. Linux est un système d'exploitation solide prêt à l'emploi, mais en dehors du simple changement de mot de passe, que faut-il faire pour "durcir" le Raspberry Pi si j'ai l'intention d'héberger des services Internet sur l'appareil?

Eben Upton a déclaré que "le Raspberry Pi a vendu plus de 200 000 de ses modules informatiques de base et expédie actuellement 4 000 unités par jour" , ajoute Eben Upton . Il est probablement prudent de supposer que des dizaines de milliers de ces 200 000 personnes ont été connectées à Internet. Il est moins sûr de supposer que des dizaines de milliers de ces Raspberry Pis connectés à Internet hébergent un service Web destiné au public, mais le potentiel d'enthousiasme des hackers existe toujours.

Dan B
la source
3
Gardez à l'esprit que bien qu'il puisse y avoir "des dizaines de milliers" connectés, il existe (actuellement) 3 distributions Linux distinctes disponibles (que je sache) et je pense qu'il existe même quelques projets non basés sur Linux. Cela affecte la perspective du pirate informatique. Néanmoins, si la sécurité est importante, maintenez votre distribution à jour et, si nécessaire, maintenez votre appareil derrière un pare-feu.
RLH
Bon point RLH Je vais ajouter quelques informations supplémentaires à la question qui prend en charge le nombre de Raspberry Pis dans la nature pour donner une meilleure idée de la surface d'attaque du Raspberry Pi que Steve a mentionnée dans sa réponse.
Dan B
@DanB La surface d'attaque n'est pas fonction du nombre de Pi, mais plutôt du nombre de systèmes et de services disponibles pour une attaque. en.wikipedia.org/wiki/Attack_surface
Steve Robillard
@SteveRobillard Désolé si je ne savais pas trop dans le commentaire, mais dans le montage que j'ai apporté à la question, j'ai tenté de résumer de manière qualitative le nombre de Pis hébergeant des services destinés au public et présentant par conséquent un service disponible pour attaque. .
Dan B
J'ai trouvé un petit tutoriel sur la façon de sécuriser votre Raspberry Pi lorsque vous utilisez SSH, cela semble plutôt chouette. -> tutorial
Dominik St.

Réponses:

54

Sécuriser un ordinateur n’est pas un processus simple, des livres entiers sont écrits sur le sujet. La taille du Pi ne réduit pas la menace pour la sécurité ou la surface d'attaque présentée à un éventuel attaquant. En conséquence, je vais décrire les étapes et fournir des liens vers des instructions plus détaillées et des tutoriels.

Puisque vous n'avez pas mentionné la distribution que vous utilisez, je supposerai le distro Raspbian recommandé.

  1. Changer le mot de passe par défaut. La distribution Raspbian inclut cela en tant qu’option dans le script de démarrage initial. Si vous ne l'avez pas déjà fait, vous pouvez utiliser la commande passwd pour le changer. Assurez-vous de choisir un mot de passe fort .
  2. Désactiver les services inutilisés . J'ai vu que la distribution Raspbian recommandée inclut le serveur Web Apache et l'active au démarrage (quelqu'un peut-il confirmer cette information) . Avez-vous vraiment besoin d'un serveur Web en cours d'exécution? Si ce n'est pas le désactiver. Si vous avez besoin d’exécuter Apache, assurez-vous de le sécuriser , et faites de même pour les autres services (par exemple, FTP, NGINX, MySQL, etc.), une recherche google devrait vous fournir plusieurs ressources.
  3. Installez et configurez iptables .
  4. Gardez votre système à jour. Vous pouvez automatiser cela en utilisant cron ou en utilisant cron-apt .
  5. Configurez la journalisation pour surveiller les connexions et les tentatives de connexion infructueuses. Si possible, utilisez un disque dur externe pour héberger votre partition / var. Cela vous donnera plus d’espace, évitera que les fichiers journaux ne remplissent la carte SD et ne prolonge la durée de vie de votre carte.

Quelques points supplémentaires à prendre en compte:

Vous devez également lire cette question connexe. Comment puis-je me protéger contre les intrusions et les logiciels malveillants avant de le connecter à Internet (en particulier sur une adresse IP publique)? .

Ce n’est que le strict minimum pour sécuriser votre Pi. Pour plus d'informations, vous pouvez lire le manuel de Sécurisation de Debian .

Steve Robillard
la source
6
Assurez-vous de générer vos propres clés ssh. Je pense que certaines images avaient déjà des clés.
John La Rooy
2
Apache n'est pas installé par défaut dans raspbian (l'utilisateur a installé quelque chose comme php5-mysql IIRC). Pour un filtre de paquets un peu plus convivial que les iptables nus, peut-être devrions-nous recommander ufw et peut-être même son interface graphique GUFW?
elmicha
1
Est-il judicieux d'installer iptables, même si vous êtes derrière un routeur?
keiki
2
@ otakun85 Oui, cela s'appelle la défense en profondeur. En se fiant entièrement à votre routeur, si quelqu'un réussit à utiliser iptables, il est encore plus difficile de l'exploiter.
Steve Robillard
2
La désactivation des services inutilisés facilite également le démarrage et économise une (petite) quantité de mémoire et de processeur.
TomG
11

Après avoir examiné le RPi, cela semble être un appareil assez sécurisé, du moment que vous faites quelques choses.

Les besoins par défaut d'utilisateur / passe ont changé. À tout le moins, changez le mot de passe. Pour améliorer encore la sécurité, changez également le nom d'utilisateur. (Ajoutez un nouvel utilisateur, puis désactivez PI. Vérifiez que ROOT est également désactivé à partir de la connexion SSH, bien que ce soit le cas par défaut.)

L'analyse du RPi ne renvoie qu'un seul port ouvert, 22, qui est la connexion SSH, et même cela doit être activé avant qu'il ne s'affiche (bien que la plupart des gens l'utilisent à la place d'un moniteur, d'un clavier et d'une souris, je suppose, surtout sur un serveur {web})

Vous pouvez changer le numéro de port SSH, mais cela ne fera pas grand chose, car le port peut être numérisé assez facilement. Activez plutôt l'authentification par clé SSH.

Vous n'avez maintenant aucun moyen pour quiconque d'entrer dans votre ordinateur sans la clé SSH, le nom d'utilisateur et le mot de passe corrects.

Ensuite, configurez votre serveur Web. Apache est à peu près où il se trouve. Cela surveillera et surveillera le port 80 par défaut, et répondra automatiquement aux connexions des navigateurs servant vos pages Web.

Si vous avez un pare-feu ou un routeur, vous pouvez modifier les ports RPi et laisser le routeur diriger le trafic d’un port à l’autre. Par exemple, le trafic du port 80 dans le routeur est redirigé vers le port 75 du RPi et SSH sur 22 est redirigé vers le port 72. Cela ajouterait une autre couche de protection, mais serait un peu plus complexe.

Gardez tout mis à jour et patché, évidemment.

Cela ne vous protégera pas des attaques qui exploitent des serveurs Java, Flash, SQL, etc. que vous pourriez bien ajouter ultérieurement, mais c'est tout pour les bases, vraiment.

Vous pouvez également ajouter un pare-feu, ce qui ralentira l'accès à un port différent pour tous les utilisateurs de votre système s'ils installent un nouveau service. Votre routeur devrait traiter de cela, mais s'il est directement connecté, configurez-le, et pendant combien de temps cela prend, vous pourriez aussi bien l'exécuter de toute façon - cela n'ajoutera pas beaucoup de ressources système.

Une autre chose que vous voudrez peut-être ajouter est fail2ban ( http://www.fail2ban.org/wiki/index.php/Main_Page ), qui ajoute une règle de pare-feu pour bloquer plusieurs tentatives de connexion, empêchant ainsi les attaques par dictionnaire. Bien que ceux-ci ne puissent pas fonctionner sur votre système si vous avez suivi ce qui précède, si pour une raison quelconque vous devez laisser le mot de passe uniquement l’autorisation SSH (vous vous connectez à distance à partir de nombreuses machines différentes, par exemple), vous éviterez ainsi une attaque par dictionnaire. de travailler. Après le nombre de tentatives que vous spécifiez, il bloquera temporairement toute tentative supplémentaire de cette adresse IP. (Veillez simplement à ne pas voir de routeur / adresse IP locale et interdisez-le trop tôt ou trop longtemps!)

Édité à ajouter: Une fois que tout est correctement configuré, utilisez un outil tel que dd ou Win32DiskImager pour effectuer une sauvegarde complète par bit de votre carte SD. De cette façon, si quelque chose ne va pas, vous pouvez le restaurer sur la même carte ou l'écrire sur une nouvelle carte et continuer malgré tout. (Mais si piraté, vous voudriez savoir quel trou a été trouvé et fermer celui-là en premier, peut-être!)

Nigel Tolley
la source
1
Pouvez-vous expliquer en quoi la modification des ports RPi sur le routeur ajoute une couche de protection supplémentaire?
Andrei
-1

En plus de renforcer le système d'exploitation, vous pouvez également envisager d'utiliser un service de surveillance de la sécurité basé sur le cloud pour surveiller l'activité de / vers / sur votre appareil et recevoir des alertes si quelque chose de indésirable est détecté. De nos jours, quelques outils SIEM basés sur le cloud sont disponibles, et certains (comme siemless) utilisent un modèle freemium afin que les utilisateurs à domicile n’aient pas à payer un centime. Pour utiliser un tel service, vous devez vous familiariser avec des choses comme rsyslog / syslog, qui est une partie standard de toutes les distributions du système d'exploitation Linux.

spids
la source
1
Les outils en nuage augmentent la surface d’attaque, la surveillance de la sécurité locale (logwarn / check) est un bon outil, mais cette réponse est incomplète et constitue plutôt un commentaire.
user1133275