Pare-feu: nftables

Comme nftables va devenir le pare-feu par défaut dans Debian, j’ai activé l’outil.

Environnement

PC sous Linux Debian.

Installation

nftables va devenir la norme: https://wiki.debian.org/nftables

 apt install nftables

Utilisation de règles fournies par Debian

cp /usr/share/doc/nftables/examples/workstation.nft /etc/nftables.conf

Ouverture du port tcp/8200 pour Minidlna entre le PC et le mediacenter de la box. Modification du fichier /etc/nftables.conf

    # activate the following line to accept common local services
    tcp dport { 80, 443, 8200 } ct state new accept

Activation du service

systemctl enable nftables.service
systemctl start nftables.service 

Vérification du service

systemctl status nftables.service

 ● nftables.service - nftables
    Loaded: loaded (/lib/systemd/system/nftables.service; enabled; vendor preset: enabled)
    Active: active (exited) since Tue 2019-02-19 15:02:38 CET; 1h 11min ago
      Docs: man:nft(8)
            http://wiki.nftables.org
   Process: 12416 ExecStart=/usr/sbin/nft -f /etc/nftables.conf (code=exited, status=0/SUCCESS)
  Main PID: 12416 (code=exited, status=0/SUCCESS)
 févr. 19 15:02:38 debian systemd[1]: Starting nftables…
 févr. 19 15:02:38 debian systemd[1]: Started nftables...

Vérification de l’état des règles

root@debian:~# nft list ruleset

table inet filter {

    chain input {

        type filter hook input priority 0; policy accept;

        iif "lo" accept

        ct state established,related accept

        tcp dport { http, https, 8200 } ct state new accept


        counter packets 3504 bytes 1523021 drop

    }

}

Explication:

  1. Ce jeu de règles ne concerne que les paquets entrants. Il n’y a aucun filtrage des paquets sortants.
  2. La politique par défaut est d’accepter les paquets entrants.
  3. Les paquets reçus (et donc émis) par l’interface de loopback sont acceptés.
  4. Les paquets reçus appartenant ou liés à des connexions existantes sont acceptés.
  5. Les paquets TCP reçus à destination des ports 80, 443, 8200 créant une nouvelle connexion sont acceptés
  6. Les autres paquets reçus sont comptés et bloqués.

Suppression des anciens outils

apt purge --remove iptables ufw gufw

N.B: La conversion des règles iptables en règles nftables n’a pas été probante pour moi.

Nftables pour PC familial

Fichier /etc/nftables.conf

#!/usr/sbin/nft -f
#
flush ruleset

table inet ma_table {
	chain trafic_entrant {
		type filter hook input priority 0; policy drop;
# par defaut le trafic entrant est rejeté		
		iif lo accept comment "Accepter le trafic local"
#		
		ct state invalid drop comment "Rejeter les connexions invalides"
#	
		ct state established,related accept comment "Accepter le trafic dont nous sommes à l'origine"
#
		counter drop comment "Compter et rejeter tout le reste"
	}

	chain trafic_transfert {
		type filter hook forward priority 0; policy drop; 
		# Pas de transfert, on est pas un routeur 
	}

	chain trafic_sortant {
		type filter hook output priority 0; policy accept; 
		# Accepter tout ce qui sort
	}

}

Vérification

nft list ruleset
table inet ma_table {
	chain trafic_entrant {
		type filter hook input priority filter; policy drop;
		iif "lo" accept comment "Accepter le trafic local"
		ct state invalid drop comment "Rejeter les connexions invalides"
		ct state established,related accept comment "Accepter le trafic dont nous sommes à l'origine"
		counter packets 4 bytes 116 drop comment "Compter et rejeter tout le reste"
	}

	chain trafic_transfert {
		type filter hook forward priority filter; policy drop;
	}

	chain trafic_sortant {
		type filter hook output priority filter; policy accept;
	}
}

Explication

Grossièrement, on filtre intelligemment le trafic entrant, on refuse le trafic en transfert, on autorise le trafic sortant.

D’autres infos

https://www.cert.ssi.gouv.fr/actualite/CERTFR-2017-ACT-030/

https://wiki.nftables.org/wiki-nftables/index.php/Main_Page

https://wiki.archlinux.org/index.php/nftables

https://www.giac.org/paper/gsec/22279/nftables-second-language/120658

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/getting-started-with-nftables_configuring-and-managing-networking

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.