Installer et configurer un pare-feu sur votre serveur.
Cet article va vous aider à installer et configurer un pare-feu (appelé aussi firewall) sur votre serveur.
C'est quoi un pare-feu ?
L'objectif d'un pare-feu (appelé également firewall) est de contrôler le trafic réseau entrant et sortant en se basant sur des règles de sécurité prédéfinies.
Il est le gardien entre le réseau local et le réseau externe (souvent Internet).
Son rôle est d'analyser les données entrantes et/ou sortantes et d'autoriser ou refuser ces données en fonctions des règles établies.
Sur les systèmes Linux, vous entendez souvent parler d'IPTable mais cela reste assez complexe à paramétrer.
Heureusement, il existe une solution qui va nous simplifier la mise en œuvre. Il s'agit d'UFW, ou Uncomplicated FireWall .
Ce tutoriel va vous aider à installer et configurer UFW sur votre serveur.
Pré-requis
Avant de commencer, il vous faut :
- un serveur avec distribution Linux/Debian, Ubunbu,
- un accès au compte root ou utilisateur avec les droits sudo.
Installation
UFW est disponible en tant que paquet donc son installation est très facile.
Et c'est tout.
Note : A ce stable, notre pare-feu est installé MAIS non activé.
Configuration de la politique de sécurité
L'approche la plus sécurisé est de bloquer le trafic entrant et le trafic sortant et ensuite de n'autoriser que les ports qui nous intéressent.
Une autre approche - et c'est celle que nous illustrerons dans ce tutoriel - est de considérer que le trafic sortant est fiable et de se focaliser sur le trafic entrant.
On commence par définir une politique de sécurité qui consiste à tout refuser par défaut.
On autorise ensuite le trafic sortant.
Définition de règles
Avant de mettre en place une quelconque règle, vous devez connaitre quels services sont actifs sur votre serveur et qurtout quels sont les ports utilisés par chaque service.
Dans notre exemple, nous allons mettre en place des règles pour les services suivants :
- SSH sur le port 22 / TCP
- HTTP sur le port 80 / TCP
- HTTPS sur le port 443 / TCP
- DNS sur le port 53 / TCP et UDP
1. On authorise SSH :
2. On authorise HTTP :
3. On authorise HTTPS :
3. On authorise DNS :
Dans ce dernier, on ne précise pas TCP. De ce fait, TCP et UDP seront autorisés.
Il est également possible d'autoriser les ports en spécifiant directement le nom du service. Ainsi :
est équivalent à
Activation ou désactivation du pare-feu
Pour activer votre pare-feu, il suffit de taper :
Pour désactiver votre pare-feu, il suffit de taper :
Lister les règles du pare-feu
Pour visualiser la configuration de votre pare-feu et afficher les règles :
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 443/tcp ALLOW IN Anywhere [ 4] 53 ALLOW IN Anywhere [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6) [ 8] 53 (v6) ALLOW IN Anywhere (v6)
Comment ajouter de nouvelles règles dans notre pare-feu
Imaginons que vous souhaitiez ouvrir le port 8080, souvent associé à Tomcat, sur votre serveur, il suffit de taper :
Même chose si par exemple vous souhaitez autoriser les connexions sur le port 25 (SMTP) de votre serveur
Pour autoriser un interval de ports (dans notre exemple, on va autoriser du port 7100 au 7200) :
Comment supprimer une règle de notre pare-feu
Commençons par visualiser les règles en vigueur :
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere [ 3] 443/tcp ALLOW IN Anywhere [ 4] 53 ALLOW IN Anywhere [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6) [ 8] 53 (v6) ALLOW IN Anywhere (v6)
Si je veux supprimer la règle #3, alors il suffit de taper :
Important ! Dans notre cas, seule la règle #3 sera supprimée c'est à dire celle qui s'applique à IPv4.
Il faudra également supprimer de la même manière la règle #8 qui concerne l'IPv6
Pour allez plus loin
Voici quelques exemples de règles étendues.
Autoriser un ensemble d'adresses IP d'un sous-réseau à accéder au port MySQL / MariaDB
Rejeter un ensemble d'adresses IP (quel que soit le port demandé)
ou encore
Ainsi pour bloquer une adresse IP, il suffit de faire
Lorsque vous utiliser la clause reject, celui qui demande la connexion est informé que le port est inaccessible.
Lorsque vous utiliser la clause deny, celui qui demande la connexion ne reçoit aucune information. La demande est ignorée (DROP).
Conclusion
Nous avons vu comment installer et paramétrer facilement un pare-feu sous votre serveur à l'aide d'UFW.
Visualiser, ajouter ou supprimer des règles de sécurité liées à vos services ou applications se fait très facilement.
Nous avons vu également comment limiter l'accès à certaines adresses IP voire même comment interdire l'accès à certaines adresses.
Cet outils possède encore de grandes capacités de paramétrage non abordées ici.
Vous pouvez consulter la documentation officielle en ligne .