technique:adminsys:secu:firewall

Créer un firewall basique

Pour filtrer les accès au strict minimum sur les machines de Picasoft, on utilise un firewall. Pour cela on utilise ufw qui est un firewall assez simple à utiliser.

On commence par l’installer:

snippet.bash
apt-get install ufw

Sur la plupart des machines, l’idée va être d’autoriser uniquement les accès aux ports SSH, HTTP et HTTPS. On pourra ouvrir le port du socket Docker si nécessaire. Le reste est à ajouter en fonction des besoins.

Les règles de base seront donc :

snippet.bash
# Autorisation du SSH
ufw allow in 22
# Autorisation de HTTP/S
ufw allow in 80
ufw allow in 443
# On ouvre la socket Docker sur le réseau
ufw allow in 2376

Sur la plupart des machines, l’idée va être d’autoriser uniquement les accès aux ports SSH, DNS et Proxmox. On pourra ouvrir d’autres ports si nécessaires, mais ça ne devrait pas arriver trop souvent, les services tournant sur les machines virtuelles.

Les règles de base seront donc :

snippet.bash
# Autorisation du SSH
ufw allow in 22
# Autorisation pour DNS
ufw allow in 53
# Autorisation pour Let's Encrypt (certificats Proxmox)
ufw allow in 80
# Autorisation du GUI Proxmox
ufw allow in 8006

Enfin on définit une politique d’accès par défaut (fermé en entrée, ouvert en sortie) et on active ufw.

snippet.bash
ufw default deny
ufw default allow outgoing
ufw enable

Important:

Docker passe au travers des règles firewall configurées via ufw. Tout les services Docker qui écoutent directement sur un port de la machine (Traefik par exemple) sont donc automatiquement exposés sur Internet, sans protection du firewall.

La commande ufw status liste les règles activées sur le système. Exemple :

Status: active

To                         Action      From
--                         ------      ----
9100/tcp                   ALLOW       91.224.148.61             
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
2376                       ALLOW       Anywhere                  
64738                      ALLOW       Anywhere                  
9323/tcp                   ALLOW       91.224.148.61             
9100/tcp                   ALLOW       2a03:7220:8080:3d00::1    
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             
2376 (v6)                  ALLOW       Anywhere (v6)             
64738 (v6)                 ALLOW       Anywhere (v6)             
9323/tcp                   ALLOW       2a03:7220:8080:3d00::1

Attention:

Un status: inactive indique que le pare-feu n’est pas lancé.

Pour supprimer une règle, on récupère son “numéro”, avec la commande :

ufw status numbered

Puis on peut la supprimer :

ufw delete <number>

Attention:

La plupart des règles sont en IPv4 et en IPv6, il faut faire deux fois l’opération, en commençant par le numéro le plus haut pour éviter les erreurs.

  • technique/adminsys/secu/firewall.txt
  • de qduchemi