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.
Tlchargement (HTTP) : https://netfilter.org/projects/nftables/files/nftables-0.9.3.tar.bz2
Somme de contrle MD5 du tlchargement : 9913b2b46864394d41916b74638e0875
Taille du tlchargement : 772 Ko
Estimation de l'espace disque requis : 34 Mo
Estimation du temps de construction : 0.2 SBU
jansson-2.12 (pour la prise en charge des tableaux de règles en JSON)
iptables-1.8.4 et DocBook-utils-0.6.14
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/nftables
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 ».
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
--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.
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 l'unité systemd.
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).
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
.
Pour configurer le pare-feu nftables au démarrage, installez
l'unité nftables.service
incluse
dans le paquet blfs-systemd-units-20191026.
make install-nftables
Last updated on 2019-12-14 11:24:24 +0000