NFTables
NFTables (nft
) korvaa vanhat iptables
(IPv4), ip6tables
(IPv6), arptables
(ARP/RARP) ja ebtables
(Silta) -palomuuriohjelmistot. NFTables nitoo kaikki vanhat ohjelmat yhden ohjelman alle. Joissain jakeluissa NFTables on asennettu jo vakiona ja joihinkin se pitää asentaa. Paketin nimi on yleensä nft
tai nftables
. NFTables kehitettiin mm. siksi, että vanhoja edellä mainittuja ohjelmia on paljon ja näin monen ohjelman ylläpito ja kehitys on hankalaa. NFTables tulee syrjäyttämään vanhat palomuuriohjelmat tulevaisuudessa.
Joitain ominaisuuksia
- Atominen tuki (lisää/korvaa/muuta kaikki tai osa säännöistä kerralla)
- Vanhassa iptablesissa säännöt syötettiin yksitellen ja ne astuivat voimaan syöttämisjärjestyksessä
- Interaktiivinen konsoli
- Skriptituki
- Reaaliaikainen palomuurisääntöjen muutosten seuranta (
nft monitor
)- Mahdollistaa esimerkiksi skriptin teon, joka ottaa automaattiset varmuuskopiot git-versionhallinnan avulla sekä kirjoittaa tiedon milloin muutos tehtiin
- Tämä taas mahdollistaa helpon palomuurisääntöjen historiaseurannan ja muutoksen peruutuksen
- Mahdollistaa esimerkiksi skriptin teon, joka ottaa automaattiset varmuuskopiot git-versionhallinnan avulla sekä kirjoittaa tiedon milloin muutos tehtiin
- JSON- ja XML-tuki
- Helpottaa sääntöjen kirjoittamista ja luettavuutta ohjelmistoilla
- Esimerkiksi sääntöjen listauksesta luettavassa JSON-muodossa:
nft export json | jq
- Yhdistetty IPv4 ja IPv6 sääntö
inet
-nimen alle, mutta myösip
jaip6
ovat käytettävissä erikseen
Esimerkki
/etc/nftables.conf
# Käytetään inet-taulua, joka mätsää ipv4- sekä ipv6-liikenteen table inet filter { chain INPUT { # Pudota kaikki paketit vakiona type filter hook input priority 0; policy drop; # Salli ping (ICMP) icmp type echo-request counter packets 0 bytes 0 accept icmp type echo-reply counter packets 0 bytes 0 accept # Salli DHCP udp sport 67-68 udp dport 67-68 counter packets 0 bytes 0 accept # Salli DNS udp dport 53 counter packets 0 bytes 0 accept udp sport 53 counter packets 0 bytes 0 accept # Salli LAN <-> LAN -liikenne ip saddr 10.0.0.0/8 ip daddr 10.0.0.0/8 counter packets 0 bytes 0 accept ip saddr 172.16.0.0/12 ip daddr 172.16.0.0/12 counter packets 0 bytes 0 accept ip saddr 192.168.0.0/16 ip daddr 192.168.0.0/16 counter packets 0 bytes 0 accept ct state established,related counter packets 0 bytes 0 accept # Salli loopback interface 127.0.0.1 lo iifname "lo" counter packets 0 bytes 0 accept } chain OUTPUT { # Pudota kaikki paketit vakiona type filter hook output priority 0; policy drop; # Salli ping icmp type echo-request counter packets 0 bytes 0 accept icmp type echo-reply counter packets 0 bytes 0 accept # Salli DHCP udp sport 67-68 udp dport 67-68 counter packets 0 bytes 0 accept # Allow DNS udp dport 53 counter packets 0 bytes 0 accept udp sport 53 counter packets 0 bytes 0 accept # Salli LAN <-> LAN ip saddr 10.0.0.0/8 ip daddr 10.0.0.0/8 counter packets 0 bytes 0 accept ip saddr 172.16.0.0/12 ip daddr 172.16.0.0/12 counter packets 0 bytes 0 accept ip saddr 192.168.0.0/16 ip daddr 192.168.0.0/16 counter packets 0 bytes 0 accept # Allow loopback interface 127.0.0.1 oifname "lo" counter packets 0 bytes 0 accept ct state new counter packets 0 bytes 0 accept ct state related,established counter packets 0 bytes 0 accept } chain FORWARD { # Pudota kaikki paketit vakiona type filter hook forward priority 0; policy drop; } }
Muuta
NFTablesiin on tehty apuohjelmia ja skriptejä, joilla voit käyttää NFTablesia kuten käyttäisit iptablesia, mutta apuohjelma muuttaa iptables-säännöt NFTables-yhteensopiviksi. Esimerkiksi Ubuntussa paketin nimi on iptables-nftables-compat
.
Aiheesta muualla
- Kotisivu: http://netfilter.org/projects/nftables/
- Wiki: https://wiki.nftables.org/wiki-nftables/index.php/Main_Page
- Arch Linuxin wiki: https://wiki.archlinux.org/index.php/nftables
- Gentoon wiki: https://wiki.gentoo.org/wiki/Nftables