Pare-feu : UFW, écrire des règles
Syntaxe et exemples de règles. Adresses génériques : 10.0.0.0/24 (réseau interne), 203.0.113.10 (poste d’administration).
ufw [insert N] allow|deny|reject|limit [in|out] [on INTERFACE] [from ADRESSE [port PORT]] [to ADRESSE [port PORT]] [proto tcp|udp] [comment 'texte']| Action | Effet |
|---|---|
allow |
Accepte |
deny |
Ignore silencieusement |
reject |
Refuse avec une réponse d’erreur |
limit |
Accepte, mais refuse une adresse qui ouvre 6 connexions ou plus en 30 secondes |
Ouvrir un port
Section intitulée « Ouvrir un port »sudo ufw allow 22/tcpsudo ufw allow 53 # TCP et UDPsudo ufw allow 80,443/tcp # plusieurs ports : protocole obligatoiresudo ufw allow 6000:6010/tcp # plagesudo ufw allow http # par nom de servicesudo ufw allow 443/udp # HTTP/3 (QUIC)Restreindre à des adresses
Section intitulée « Restreindre à des adresses »sudo ufw allow from 203.0.113.10 to any port 22 proto tcpsudo ufw allow from 10.0.0.0/24 to any port 5432 proto tcp comment 'PostgreSQL réseau interne'sudo ufw deny from 198.51.100.0/24sudo ufw allow from 2001:db8::/32 to any port 22 proto tcpC’est la bonne méthode pour ouvrir une base de données à un autre serveur : ne jamais ouvrir MySQL, MariaDB, PostgreSQL, Redis ou MongoDB à tout Internet.
Limiter les tentatives
Section intitulée « Limiter les tentatives »sudo ufw limit 22/tcp # remplace « allow 22/tcp »limit compte les connexions, pas les échecs d’authentification : un script légitime qui ouvre beaucoup de connexions SSH rapides peut être bloqué. Fail2ban est plus fin (voir Fail2ban).
Interfaces
Section intitulée « Interfaces »sudo ufw allow in on eth1 to any port 3306 # base seulement sur l'interface privéesudo ufw allow in on wg0 # tout le trafic du VPN WireGuardsudo ufw deny in on eth0 to any port 3306Profils d’applications
Section intitulée « Profils d’applications »sudo ufw app listsudo ufw app info OpenSSHsudo ufw allow 'Nginx Full' # nom avec espace : guillemetsProfil personnalisé, /etc/ufw/applications.d/monapp :
[MonApp]title=Application monappdescription=Application web sur le port 3000ports=3000/tcpsudo ufw app update MonAppsudo ufw allow MonAppPlusieurs groupes de protocoles : ports=80,443/tcp|53/udp.
Lister et supprimer
Section intitulée « Lister et supprimer »sudo ufw status numberedsudo ufw delete 2 # par numérosudo ufw delete allow 80,443/tcp # par règle (retire aussi la jumelle IPv6)sudo ufw show added # règles saisies, sous forme de commandesOrdre des règles
Section intitulée « Ordre des règles »La première règle qui correspond s’applique. Pour qu’une règle précise passe avant une règle générale :
sudo ufw insert 1 deny from 198.51.100.7Pour bloquer une adresse au sein d’un réseau autorisé, la règle deny doit précéder la règle allow du réseau.
sudo ufw route allow in on eth0 out on lxdbr0Les règles route concernent le trafic transféré entre interfaces (pont LXD, VPN). Voir LXD : réseau et UFW et Docker.
Exemples complets
Section intitulée « Exemples complets »Serveur web
Section intitulée « Serveur web »sudo ufw default deny incomingsudo ufw default allow outgoingsudo ufw limit OpenSSHsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw allow 443/udpsudo ufw enableServeur de base de données interne
Section intitulée « Serveur de base de données interne »sudo ufw default deny incomingsudo ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'Administration'sudo ufw allow from 10.0.0.0/24 to any port 5432 proto tcp comment 'PostgreSQL : serveurs applicatifs'sudo ufw enableSauvegarder les règles
Section intitulée « Sauvegarder les règles »sudo cp -a /etc/ufw /root/ufw-sauvegardesudo ufw show added > ufw-regles.txtDépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
Wrong number of arguments |
Plusieurs ports : ajouter proto tcp |
Skipping adding existing rule |
La règle existe déjà |
allow from sans effet |
L’adresse vue par le serveur diffère (NAT, proxy) |
deny sans effet |
Une règle allow générale la précède : ufw insert 1 deny … |
Could not find a profile |
ufw app list ; guillemets pour les noms avec espace |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Syntaxe et comportement identiques (UFW 0.36.2 sur les deux versions).
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel :
man ufw - Suite : UFW et Docker