On configure le firewall UFW.
Introduction
Uncomplicated Firewall
est comme son nom l’indique, un logiciel de pare-feu.
Ce nom précise aussi qu’il n’est pas compliqué, je suis plutôt d’accord (et dans 2 minutes vous aussi).
Installation
sudo apt update
sudo apt install ufw
Identification des ports
Nous allons dans un premier temps identifier les ports à ouvrir.
Avec la commande sudo ufw app list
, ufw nous donne une liste des éléments
courants qu’il a identifiés sur notre machine.
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Pour avoir des informations supplémentaires sur une des applications on utilise
la commande :
sudo ufw app info '<nom de l'application>'
Par exemple, sudo ufw app info 'Apache Secure'
me donne :
Profile: Apache Secure
Title: Web Server (HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web server.Port:
443/tcp
Pour identifier davantage de ports ouverts, je vous suggère de faire un nmap vers votre serveur.
Configuration
On configure donc notre firewall avant d’appliquer son filtrage.
Voici des exemples de configuration qui feront respectivement les choses suivantes :
- Autorise le trafic en TCP sur le port 8080
- Autorise le trafic HTTPS
- Autorise le trafic sur les ports de l’application OpenSSH
- Autorise la plage de port de 5600 à 5800 en UDP
- Refuser toutes les demandes du réseau 192.168.52.0/24
sudo ufw allow 8080/tcp
sudo ufw allow https
sudo ufw allow 'OpenSSH'
sudo ufw allow 5600:5800/udp
sudo ufw deny from 192.168.52.0/24
Activation
Une fois qu’on a bien ajouté toutes ces règles (on n’oublie pas SSH !),
on peut appliquer les règles avec un sudo ufw enable
et on valide avec un “y” .
On peut vérifier le statut avec la commande sudo ufw status
Évidemment, on peut désactiver le pare-feu avec un sudo ufw disable
.
Suppression de règles
Le plus simple est d’afficher les règles de manière énumérer afin de supprimer les règles via leur indice.
On les liste donc avec un sudo ufw status numbered
.
Si l’on veut supprimer la règle 2 on utilisera alors la commande
sudo ufw delete 3
On peut aussi vouloir repartir de zéro.
Pour cela, la commande est sudo ufw reset
.
Docker s’en fout
Avertissement
Gros problème !
Mes conteneurs n’ont plus internet depuis !
Du coup, je suis revenu en arrière …
Pourquoi une section Docker dans ce tutoriel ?
Et bien parce que Docker s’en bas les 🍒 !
En fait, il crée des règles iptables tout seul comme un grand.
Du coup, les conteneurs que j’ai “reverse-proxysé” pour les accès en HTTPS
restent accessibles en HTTP malgré la non-exposition des ports HTTP via UFW !
Pour remédier à cela, il faut éditer le script de lancement de Docker (docker.service
).
J’ai retrouvé l’emplacement du fichier avec la commande :
locate docker.service | grep /etc/systemd
Dans ce fichier, il faut ajouter --iptables=false
à la fin
de la variable ExecStart :
ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock –iptables=false
Du coup, on recharge la configuration de systemd et on relance Docker :
sudo systemctl daemon-reload
sudo systemctl restart docker
Conclusion
Bon, vous n’avez plus d’excuses pour ne pas activer votre pare-feu.
Pourquoi est-ce qu’Ansible n’est pas aussi simple ?