Votre serveur cloud a-t-il besoin d'un pare-feu?
Un pare-feu est un utilitaire réseau qui s'exécute sur votre serveur et empêche les étrangers d'utiliser certains ports. Cela en fait un outil de sécurité utile pour empêcher les attaquants d'accéder aux processus qu'ils ne devraient pas. Votre serveur en a-t-il besoin?
Sommaire
Ouvrez uniquement les ports dont vous avez besoin, pare-feu le reste
Les services que vous exécutez sur votre serveur se connectent au monde extérieur via les ports. Chaque port a un numéro et le service écoutera les connexions sur ce numéro de port. Ce n'est pas toujours un risque pour la sécurité, car vous devrez souvent ouvrir des ports pour que les utilisateurs puissent accéder à votre service.
Les ports 80 et 443 sont les ports par défaut pour HTTP et HTTPS. Si vous exécutez un serveur Web, ceux-ci doivent être ouverts. Le port 22 sera probablement ouvert sur toute nouvelle installation de Linux, car il s'agit du port SSH par défaut. Vous pouvez fermer ce port, mais vous devrez déplacer SSH vers un autre port (ce qui est une bonne idée de toute façon).
Sans pare-feu en place, tout service qui démarre une connexion sera autorisé à accéder à n'importe quel port par défaut. Il est préférable de définir vos règles pour éviter que cela ne se produise et pour vous assurer que rien d’inattendu ne s’exécute sur votre système. C'est exactement ce que fait un pare-feu: définissez les règles sur la manière dont les processus de votre serveur peuvent communiquer avec le monde extérieur.
Pour vérifier quels ports sont actuellement ouverts sur votre système, vous pouvez exécuter:
sudo netstat -plnt
Ou, si vous voulez une sortie plus concise:
sudo netstat -plnt | grep "LISTEN" | awk '{print $4 "t" $7}'
Ces commandes listeront chaque port ouvert, ainsi que le processus qui utilise ce port. Netstat n'affiche que le PID et le nom de fichier du processus, donc si vous avez besoin du chemin complet, vous devrez passer le PID au ps
commander. Si vous devez analyser les ports sans accéder au serveur, vous pouvez utiliser l'utilitaire côté client nmap.
Tout ce qui n'est pas spécifiquement utilisé pour héberger un service doit être fermé par un pare-feu.
Si tout ce qui tourne sur votre système est censé être ouvert, vous n'aurez peut-être pas besoin d'un pare-feu. Mais sans un, tout port inutilisé pourrait facilement s'ouvrir par un nouveau processus que vous installez. Vous devrez vous assurer qu'aucun nouveau service n'a besoin d'être verrouillé.
N'exécutez pas vos services sur des adresses IP publiques en premier lieu
Un pare-feu est un excellent outil de sécurité, mais certains services ne devraient pas être accessibles au monde entier. Si un port doit être ouvert, ce service est vulnérable aux attaques par force brute et à d'autres problèmes désagréables. Mais vous pouvez empêcher cela en verrouillant les connexions à votre cloud privé virtuel.
Les bases de données en sont le meilleur exemple. Une base de données comme MySQL doit avoir un port ouvert pour les connexions administratives. Mais si la seule chose qui parle à la base de données est votre serveur Web (et vous, lors de la maintenance), vous devez garder MySQL privé et ne l'autoriser qu'à communiquer avec le serveur Web. Si vous avez besoin d'y accéder, vous pouvez SSH sur le serveur Web et accéder au reste du réseau à partir de là.
Comment configurer un pare-feu
Si vous utilisez un service d'hébergement géré comme Amazon Web Services ou Digital Ocean, votre fournisseur peut disposer d'un pare-feu que vous pouvez gérer à partir d'une interface Web. Si c'est une option, vous devez configurer votre pare-feu de cette façon.
AWS, en particulier, vous oblige à utiliser son pare-feu, qui est géré avec des groupes de sécurité. Les ports sont tous fermés par défaut (sauf pour le port 22), vous devrez donc les ouvrir manuellement depuis leur interface. Vous pouvez modifier les groupes de sécurité pour toute instance en cours d'exécution à partir de la console de gestion EC2 et modifier les règles entrantes.
AWS vous permet de spécifier la source de la règle, vous pouvez donc, par exemple, verrouiller SSH uniquement sur votre adresse IP personnelle ou rendre la connexion entre votre serveur de base de données et votre serveur Web privée.
Si vous utilisez d'autres fournisseurs tels que Linode ou un hébergement standard, vous devrez configurer vous-même le pare-feu. Pour cela, la méthode la plus simple consiste à utiliser le iptables
utilitaire.
Si vous exécutez un serveur Windows, vous devrez configurer le pare-feu Windows bien nommé, ce que vous pouvez faire à partir de la console de gestion Windows ou en utilisant netsh
.