Ero sivun ”NFTables” versioiden välillä
Ei muokkausyhteenvetoa |
(+esimerkki) |
||
(2 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
'''NFTables''' (<code>nft</code>) korvaa vanhat <code>[[iptables]]</code> ([[IPv4]]), <code>[[ip6tables]]</code> ([[IPv6]]), <code>[[arptables]]</code> ([[ARP]]/RARP) ja <code>[[ebtables]]</code> (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ä <code>nft</code> tai <code>nftables</code>. 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. | '''NFTables''' (<code>nft</code>) korvaa vanhat <code>[[iptables]]</code> ([[IPv4]]), <code>[[ip6tables]]</code> ([[IPv6]]), <code>[[arptables]]</code> ([[ARP]]/RARP) ja <code>[[ebtables]]</code> ([[Bridge|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ä <code>nft</code> tai <code>nftables</code>. 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 == | == Joitain ominaisuuksia == | ||
Rivi 8: | Rivi 8: | ||
* [https://wiki.nftables.org/wiki-nftables/index.php/Scripting Skriptituki] | * [https://wiki.nftables.org/wiki-nftables/index.php/Scripting Skriptituki] | ||
** Muuttujatuki | ** Muuttujatuki | ||
*** <code>define ntp_servers = { 127.0.0.1, 192.168.0.1 }</code> | *** [[NTP]]-aikapalvelimet: <code>define ntp_servers = { 127.0.0.1, 192.168.0.1 }</code> | ||
*** <code>define google_dns = 8.8.8.8</code> | *** [[DNS]]-nimipalvelin: <code>define google_dns = 8.8.8.8</code> | ||
** Tiedostojen liittäminen | ** Tiedostojen liittäminen skriptitiedostoihin: | ||
*** <code>include "variables.ruleset"</code> | *** <code>include "variables.ruleset"</code> | ||
*** <code>include "lan-rules.ruleset"</code> | *** <code>include "lan-rules.ruleset"</code> | ||
*** <code>include "wan-rules.ruleset"</code> | *** <code>include "wan-rules.ruleset"</code> | ||
* Reaaliaikainen palomuurisääntöjen muutosten seuranta (<code>nft monitor</code>) | |||
** 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 | |||
* [[JSON]]- ja [[XML]]-tuki | |||
** Helpottaa sääntöjen kirjoittamista ja luettavuutta ohjelmistoilla | |||
** Esimerkiksi sääntöjen listauksesta luettavassa JSON-muodossa: <code>nft export json | jq</code> | |||
* Yhdistetty IPv4 ja IPv6 sääntö <code>inet</code>-nimen alle, mutta myös <code>ip</code> ja <code>ip6</code> ovat käytettävissä erikseen | |||
== Esimerkki == | |||
<code>/etc/nftables.conf</code> | |||
<pre> | |||
# 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; | |||
} | |||
} | |||
</pre> | |||
== Muuta == | == Muuta == | ||
NFTablesiin on tehty apuohjelmia ja skriptejä, joilla voit käyttää NFTablesia kuten käyttäisit | NFTablesiin on tehty apuohjelmia ja skriptejä, joilla voit käyttää NFTablesia kuten käyttäisit [[iptables]]ia, mutta apuohjelma muuttaa iptables-säännöt NFTables-yhteensopiviksi. Esimerkiksi [[Ubuntu]]ssa paketin nimi on <code>iptables-nftables-compat</code>. | ||
== Aiheesta muualla == | == Aiheesta muualla == | ||
Rivi 23: | Rivi 98: | ||
* Arch Linuxin wiki: https://wiki.archlinux.org/index.php/nftables | * Arch Linuxin wiki: https://wiki.archlinux.org/index.php/nftables | ||
* Gentoon wiki: https://wiki.gentoo.org/wiki/Nftables | * Gentoon wiki: https://wiki.gentoo.org/wiki/Nftables | ||
[[Luokka:Järjestelmä]] | |||
[[Luokka:Verkko]] | |||
[[Luokka:Tietoturva]] | |||
[[Luokka:Ylläpitotyökalut]] | |||
[[Luokka:Komentorivin perustyökalut]] |
Nykyinen versio 4. kesäkuuta 2019 kello 16.53
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[muokkaa]
- 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[muokkaa]
/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[muokkaa]
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[muokkaa]
- 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