Comprendre et administrer le pare-feu Linux avec nftables et iptables : règles, chaînes, politiques, NAT, journalisation, persistance, migration et dépannage.
sudo nft list ruleset > /root/nftables-avant-modification.nftSauvegarder les règles nftablessudo iptables-save > /root/iptables-avant-modification.rulesSauvegarder les règles iptablessudo ss -lntupVérifier les services réellement en écoutesudo nft list tablesLister les tablessudo nft list rulesetAfficher toutes les règlessudo nft -n -a list rulesetAfficher en numérique avec les handlessudo nft list table inet filterAfficher une table précisesudo nft add table inet filtersudo nft 'add chain inet filter input { type filter hook input priority filter; policy accept; }'sudo nft 'add chain inet filter forward { type filter hook forward priority filter; policy drop; }'sudo nft 'add chain inet filter output { type filter hook output priority filter; policy accept; }'sudo nft add rule inet filter input iifname "lo" counter acceptAutoriser loopbacksudo nft add rule inet filter input ct state invalid counter dropRejeter les états invalidessudo nft add rule inet filter input ct state established,related counter acceptAutoriser les connexions existantessudo nft add rule inet filter input ip protocol icmp counter acceptAutoriser ICMP IPv4sudo nft add rule inet filter input ip6 nexthdr ipv6-icmp counter acceptAutoriser ICMPv6sudo nft add rule inet filter input ip saddr 192.168.1.0/24 tcp dport 22 ct state new counter acceptSSH depuis le LANsudo nft add rule inet filter input tcp dport '{ 80, 443 }' ct state new counter acceptHTTP et HTTPSflush rulesettable inet filter {set ssh_admins {type ipv4_addrflags intervalelements = { 192.168.1.0/24 }}chain input {type filter hook input priority filter; policy drop;iifname "lo" counter acceptct state invalid counter dropct state established,related counter acceptip protocol icmp counter acceptip6 nexthdr ipv6-icmp counter acceptip saddr @ssh_admins tcp dport 22 ct state new counter accepttcp dport { 80, 443 } ct state new counter acceptlimit rate 5/second log prefix "nft-input-drop: " counter drop}chain forward {type filter hook forward priority filter; policy drop;}chain output {type filter hook output priority filter; policy accept;}}sudo nft -c -f /etc/nftables.confValider sans appliquersudo nft -f /etc/nftables.confCharger le fichier validésudo nft list rulesetContrôler le résultatsudo nft 'add set inet filter admins { type ipv4_addr; flags interval; }'sudo nft add element inet filter admins '{ 192.168.1.10, 192.168.1.20, 10.10.0.0/24 }'sudo nft add rule inet filter input ip saddr @admins tcp dport 22 counter acceptsudo nft delete element inet filter admins '{ 192.168.1.20 }'sudo nft list set inet filter adminssudo nft add rule inet filter input tcp dport 8080 counter acceptAjouter en fin de chaînesudo nft insert rule inet filter input tcp dport 22 counter acceptInsérer au débutsudo nft -a list chain inet filter inputTrouver le handlesudo nft delete rule inet filter input handle 12Supprimer par handlesudo nft flush chain inet filter inputVider une chaîne — dangereux à distancesudo nft list countersLister les compteurs nomméssudo nft reset countersRemettre les compteurs à zérosudo journalctl -k -g 'nft-input-drop'Filtrer les logs noyau nftablessudo dmesg --level=warn,errVoir les messages noyau récentslimit rate 5/second burst 10 packets log prefix "nft-drop: " counter dropsysctl net.ipv4.ip_forwardsudo sysctl -w net.ipv4.ip_forward=1echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --systemsudo nft add table ip natsudo nft 'add chain ip nat postrouting { type nat hook postrouting priority srcnat; policy accept; }'sudo nft add rule ip nat postrouting oifname "eth0" ip saddr 10.10.0.0/24 counter masqueradesudo nft add rule inet filter forward ct state established,related counter acceptsudo nft add rule inet filter forward iifname "lan0" oifname "eth0" ip saddr 10.10.0.0/24 counter acceptsudo nft list ruleset > /etc/nftables.confExporter le ruleset actuelsudo nft -c -f /etc/nftables.confVérifier le fichiersudo systemctl enable --now nftablesActiver le service au démarragesudo systemctl status nftablessudo journalctl -u nftables -bLogs du chargement au démarragesudo iptables -SRègles IPv4 sous forme de commandessudo iptables -L -n -v --line-numbersRègles, compteurs et numérossudo ip6tables -SRègles IPv6sudo iptables -A INPUT -i lo -j ACCEPTAutoriser loopbacksudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTConnexions établiessudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPTSSH depuis le LANsudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPTHTTP et HTTPSsudo iptables -P INPUT DROPPolitique par défaut — après les autorisationssudo iptables -L INPUT -n -v --line-numberssudo iptables -D INPUT 4Supprimer la règle numéro 4sudo iptables-save > /root/iptables.rulessudo iptables-restore < /root/iptables.rulesiptables --versionAffiche souvent nf_tables ou legacysudo update-alternatives --display iptablesBackend sélectionné sur Debian et Ubuntusudo nft list rulesetVoir si les règles iptables apparaissent dans nftablesiptables-translate -A INPUT -p tcp --dport 22 -j ACCEPTiptables-restore-translate -f /root/iptables.rulessudo iptables-save > /root/iptables-a-migrer.rulessudo iptables-restore-translate -f /root/iptables-a-migrer.rules > /root/nftables-migre.nftsudo nft -c -f /root/nftables-migre.nftsudo nft list ruleset | lessInspecter les règles ajoutées par Dockersudo iptables -S DOCKER-USERChaîne de filtrage utilisateur avec le backend iptablesdocker network inspect bridgeVoir le sous-réseau Docker par défautsudo conntrack -LExaminer les connexions suiviessudo nft -c -f /root/nftables-avant-modification.nftVérifier la sauvegardesudo nft -f /root/nftables-avant-modification.nftRestaurer nftablessudo iptables-restore < /root/iptables-avant-modification.rulesRestaurer iptablessudo nft add rule inet filter input ip saddr 192.0.2.10 meta nftrace set 1Marquer temporairement une IP de testsudo nft monitor traceTracer les paquets marqués nftracesudo tcpdump -ni any port 22Vérifier l'arrivée du trafic SSHsudo ss -lntupVérifier que le service écouteAucune commande ne correspond à ce filtre.