**Ceci est une ancienne révision du document !**
Pare-feu
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.
Installation
On commence par l’installer:
- snippet.bash
apt-get install ufw
Configuration (machines virtuelles)
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
Configuration (hyperviseurs)
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
Configuration pour toutes les machines
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.
Bannir une IP manuellement
fail2ban s’occupe déjà de bannir les adresses IP qui essayent de se connecter trop de fois en SSH.
Mais l’analyse de logs est compliquée, et parfois certaines IP vont consulter de manière répétée des URL inexistantes sur nos services, essayer de forcer les connexions… Difficile de déterminer l’origine de ces comportements, mais lorsqu’ils sont répétés et viennent de la même IP, il peut être pertinent de bloquer les IP.
Important:
Avant de bloquer une IP, il faut faire bien attention : les IP des VPS peuvent être ré-attribuées, et les spammeurs changent souvent de serveur. On essayera donc de bloquer des IP « stables », après plusieurs jours où on constate le même comportement venant des mêmes IP, et on pourra essayer de les débloquer après quelques temps.
Syntaxe :
- snippet.bash
sudo ufw insert 1 deny from <IP> comment 'raison du blocage'
L’idée est d’insérer la règle en premier afin que l’IP soit rejetée avant les règles qui autorisent le trafic sur tel ou tel port.
Vérification
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é.
Supprimer une règle
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.