Chapitre 3 · 3.4
Un pare-feu avec ufw (ou nftables)
Regarder en courte vidéo
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é.
