Ntfables est bien entendu présent sur Clear mais est moins facilement manipulable tel quel que sur d'autres distributions.
Je suppose donc que beaucoup utilisent la surcouche firewalld.
Voici donc une procédure de configuration directe pour nftables (sans surcouche) à adapter en fonction de vos besoins. Il suffit de remplacer le nom des interfaces par les vôtres, et de commenter/décommenter ce qui est nécessaire en fonction des différents cas présentés ici - par défaut ici : tout ouvert en stateful depuis la machine (vers internet) et tout fermé dans le sens entrant)
D'abord installer network-basic si ce n'est pas déjà le cas :
sudo swupd bundle-add network-basic
Créer un fichier de configuration (/etc/nftables.conf) avec le contenu suivant :
#!/usr/sbin/nft -f
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iifname 'lo' accept
iifname { 'bridge0', 'enp0s31f6', 'wlp147s0' } ct state established,related accept
#---- Autoriser le flux entrant SSH ----#
# tcp dport 22 accept
#---- Autoriser les flux entrants pour SSH, SMTP, HTTP, HTTPS, FTP ----#
# tcp dport { 22, 25, 80, 443, 21 } accept
#---- Autoriser le flux entrant HTTPS ----#
# tcp dport 443 accept
#---- Autoriser le flux entrant ICMP ----#
# icmp type echo-request accept
# icmp type echo-reply accept
#---- Limiter les requêtes SSH entrantes ----#
# ip saddr { 192.168.1.100, 192.168.1.101 } tcp dport 22 limit rate 5/minute accept
#---- Autoriser le trafic entrant en IPv6 ----#
# ip6 saddr { 2001:db8::/32 } accept
#---- Rejeter plutôt que jeter le trafic entrant sur le port Telnet ----#
# tcp dport 23 reject
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Créer un service pour le contrôle via systemd
(et oui, il n'y a pas de service systemd pour nftables actuellement, il faut donc le créer) :
Créer le fichier /etc/systemd/system/nftables.service avec le contenu suivant :
[Unit]
Description=Start and load the nftables firewall rules
After=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/nft -f /etc/nftables.conf
ExecReload=/usr/sbin/nft flush ruleset; /usr/sbin/nft -f /etc/nftables.conf
ExecStop=/usr/sbin/nft flush ruleset
[Install]
WantedBy=multi-user.target
Activer et démarrer le service fraîchement créé :
sudo systemctl daemon-reload ; sudo systemctl enable nftables ; sudo systemctl start nftables
sudo systemctl status nftables
sudo nft list ruleset
sudo nft flush ruleset && sudo nft -f /etc/nftables.conf