Ero sivun ”NFTables” versioiden välillä
Pohjaa... |
+esimerkki |
||
| (3 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 22: | Rivi 97: | ||
* Wiki: https://wiki.nftables.org/wiki-nftables/index.php/Main_Page | * Wiki: https://wiki.nftables.org/wiki-nftables/index.php/Main_Page | ||
* 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 | |||
[[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ösipjaip6ovat 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