nftables-0.9.3

Introduction nftables

Le paquet nftables, conçu comme le successeur d'iptables-1.8.4, fournit une interface de programmation (API) netlink de bas-niveau et des utilitaires en espace utilisateur pour le sous-système nf_tables du noyau.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-9.0.

Informations sur le paquet

Dpendances de nftables

Requises

libnftnl-1.1.5

Recommandées

Facultatives

iptables-1.8.4 et DocBook-utils-0.6.14

Facultatives (à l'exécution)

contrack-tools nfacct ulogd

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/nftables

Configuration du noyau

Activez les options suivantes dans la configuration du noyau et recompilez-le si nécessaire (ajoutez les fonctionnalités nf_tables dont vous avez besoin) :

[*] Networking support [CONFIG_NET] --->
    Networking options --->
    [*] Network packet filtering framework (Netfilter) [CONFIG_NETFILTER] --->
        Core Netfilter Configuration --->
          <*> * protocol support [CONFIG_NF_CONNTRACK_*]
          <*> Netfilter nf_tables support [CONFIG_NF_TABLES]
          [*]   Netfilter nf_tables * support [CONFIG_NF_TABLES_*]

Ajoutez tous les protocoles de suivi de connexion que vous utiliserez et tous les protocoles que vous voulez utiliser dans la section « Core Netfilter Configuration ». En plus, ajoutez tous les « Netfilter nf_tables * module » que vous utiliserez dans la section « Netfilter nf_tables support ».

Installation de nftables

Installez nftables en lanant les commandes suivantes :

./configure --prefix=/usr     \
            --sbindir=/sbin   \
            --sysconfdir=/etc \
            --with-json       \
            --with-python-bin=/usr/bin/python3 &&
make

Ce paquet n'est pas fourni avec une suite de tests.

Maintenant, en tant qu'utilisateur root :

make install                   &&
mv /usr/lib/libnftables.so.* /lib &&
ln -sfv ../../lib/$(readlink /usr/lib/libnftables.so) /usr/lib/libnftables.so

Explication des commandes

--with-json : construit la prise en charge du format de sorti JSON. Supprimez-le si jansson-2.12 n'est pas disponible.

--with-python-bin=/usr/bin/python3 : force l'utilisation de Python3.

--enable-man-doc : construit les pages de manuel si asciidoc-8.6.9 est installé (requis si vous ajoutez la prise en charge de json).

--with-xtables : construit la prise en charge de libxtables d'iptables-1.8.4.

mv -v /usr/lib/nftables.so.* ... : déplace les bibliothèques partagées vers /lib pour qu'elles soient disponibles avant le montage de /usr.

Configuration de nftables

[Note]

Note

Si vous voulez utiliser firewalld-0.8.1 pour configurer les règles de votre pare-feu, vous ne devriez pas utiliser la configuration d'exemple fournie ici, et vous ne devriez pas activer le script de démarrage.

Routeur masquant

Un pare-feu réseau a deux interface, une connectée à un intranet, dans cet exemple LAN1 et une connectée à internet, ici WAN1. Vous devrez ajuster les valeurs pour qu'elles correspondent à votre système. Pour fournir le plus de sécurité au pare-feu lui-même, assurez-vous qu'il n'y a pas de serveur non nécessaire qui tourne dessus, comme X11 et compagnie. En général, le pare-feu lui-même ne devrait pas avoir accès à des services qui ne sont pas de confiance (comme un serveur distant qui donnerait des réponses qui feraient crasher votre système, ou pire, qui implémenterait un vers via un dépassement de tampon).

[Note]

Note

Dans l'exemple de configuration suivant, LAN1 est utilisé pour l'interface LAN interne, et WAN1 pour l'interface externe connectée à internet. Vous devrez remplacer ces valeurs par les valeurs appropriées correspondant aux noms des ces interfaces sur votre système.

cat > /etc/nftables/nftables.conf << "EOF"
#!/sbin/nft -f

# You're using the example configuration for a setup of a firewall
# from Beyond Linux From Scratch.
#
# This example is far from being complete, it is only meant
# to be a reference.
#
# Firewall security is a complex issue, that exceeds the scope
# of the configuration rules below.
#
# You can find additional information
# about firewalls in Chapter 4 of the BLFS book.
# http://www.linuxfromscratch.org/blfs

# Drop all existing rules
flush ruleset

# Filter for both ip4 and ip6 (inet)
table inet filter {

        # filter incomming packets
        chain input {

                # Drop everything that doesn't match policy
                type filter hook input priority 0; policy drop;

                # accept packets for established connections
                ct state { established, related } accept

                # Drop packets that have a connection state of invalid
                ct state invalid drop

                # Allow connections to the loopback adapter
                iifname "lo" accept

                # Allow connections to the LAN1 interface
                iifname "LAN1" accept

                # Accept icmp requests
                ip protocol icmp accept

                # Allow ssh connections on LAN1
                iifname "LAN1" tcp dport ssh accept

                # Drop everything else
                drop
        }

        # Allow forwarding for external connections to WAN1
        chain forward {

                # Drop if it doesn't match policy
                type filter hook forward priority 0; policy drop;

                # Accept connections on WAN1
                oifname "WAN1" accept

                # Allow forwarding to another host via this interface
                # Uncomment the following line to allow connections
                # ip daddr 192.168.0.2 ct status dnat accept

                # Allow established and related connections
                iifname "WAN1" ct state { established, related } accept
        }

        # Filter output traffic
        chain output {

                # Allow everything outbound
                type filter hook output priority 0; policy accept;
        }
}

# Allow NAT for ip protocol (both ip4 and ip6)
table ip nat {

        chain prerouting {

                # Accept on inbound interface for policy match
                type nat hook prerouting priority 0; policy accept;

                # Accept http and https on 192.168.0.2
                # Uncomment the following line to allow http and https
                #iifname "WAN1" tcp dport { http, https } dnat to 192.168.0.2
        }

        chain postrouting {

                # accept outbound
                type nat hook postrouting priority 0; policy accept;

                # Masquerade on WAN1 outbound
                oifname "WAN1" masquerade
        }
}
EOF

Avec cette configuration, votre intranet devrait être raisonnablement sécurisé contre des attaques externes. Personne ne devrait être capable de créer une nouvelle connexion vers un service interne qui n'est pas configuré ci-dessus.

Il y a plusieurs autres exemples dans le répertoire /etc/nftables.

Script de dmarrage

Pour configurer le pare-feu nftables au démarrage, installez le script de démarrage /etc/rc.d/init.d/nftables inclus dans le paquet blfs-bootscripts-20191204.

make install-nftables

Contents

Programmes installs: nft
Bibliothques installes: libnftables.{a,so}
Rpertoires installs: /etc/nftables

Descriptions courtes

nft

interface en ligne de commande pour le sous-système nf_tables.

libnftables.{a,so}

fournit des fonctions pour manipuler le sous-système nf_tables.

Last updated on 2019-12-14 11:24:24 +0000