Chapitre 3 · 3.4
Un pare-feu avec ufw (ou nftables)
Sur le réseau de WebOké, tout le trafic entrant vers votre VPS est autorisé. C'est vous qui décidez de ce qui entre, à l'aide d'un pare-feu sur votre serveur. Vous n'autorisez ainsi que le nécessaire, comme SSH et votre site web.
Attention : Ouvrez SSH avant d'activer le pare-feu. Sinon, vous vous retrouverez bloqué à l'extérieur. Si cela arrive malgré tout, désactivez le pare-feu via la console (voir Accès bloqué : vous ne parvenez plus à accéder à votre serveur).
ufw sur Debian et Ubuntu
ufw est une couche simple au-dessus du pare-feu de Linux. Il est déjà présent sur Ubuntu. Sur Debian, installez-le :
anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw allow OpenSSH
anna@web1:~$ sudo ufw allow 80,443/tcp
anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
anna@web1:~$ sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (v6) ALLOW IN Anywhere (v6)
Tout ce que vous n'autorisez pas est refusé. Les règles s'appliquent automatiquement aussi à IPv6. Les ports 80 et 443 ne sont nécessaires que pour un site web (chapitre 5). Si vous utilisez Caddy avec HTTP/3, ouvrez également sudo ufw allow 443/udp.
Commandes ufw utiles
| Commande | Que fait-elle ? |
|---|---|
sudo ufw status numbered | Afficher les règles avec un numéro |
sudo ufw delete 3 | Supprimer la règle 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Ouvrir un port pour une seule adresse IP |
sudo ufw limit OpenSSH | Refuser temporairement une adresse qui ouvre 6 connexions ou plus en 30 secondes |
sudo ufw disable | Désactiver le pare-feu (par exemple via la console si vous êtes bloqué à l'extérieur) |
Sans ufw : nftables
Sur Debian, nftables est le pare-feu qui fonctionne en coulisses. Si vous ne voulez pas d'ufw, écrivez vous-même les règles dans /etc/nftables.conf. Une petite base pour IPv4 et IPv6 ensemble :
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 80, 443 } accept
}
}
anna@web1:~$ sudo nft -c -f /etc/nftables.conf
anna@web1:~$ sudo systemctl enable --now nftables
Avec nft -c, vérifiez d'abord le fichier. Utilisez ufw ou nftables, mais pas les deux en même temps.
Sur AlmaLinux et Rocky Linux, firewalld est déjà présent : sudo firewall-cmd --permanent --add-service=http --add-service=https et sudo firewall-cmd --reload. SSH y est ouvert par défaut.
Astuce : Vous utilisez Docker ? Les ports que vous publiez avec Docker contournent ufw. Lisez donc Docker et le pare-feu : publier des ports en toute sécurité.
