nftables packet filter 0.9.1 release

Sawise setahun pembangunan diwenehi release paket filter nftables 0.9.1, berkembang minangka panggantos kanggo iptables, ip6table, arptables lan ebtables dening manunggalaken antarmuka panyaring paket kanggo IPv4, IPv6, ARP lan jembatan jaringan. Paket nftables kalebu komponen filter paket ruang pangguna, dene karya tingkat kernel diwenehake dening subsistem nf_tables, sing wis dadi bagian saka kernel Linux wiwit dirilis 3.13.

Tingkat kernel mung nyedhiyakake antarmuka bebas protokol umum sing nyedhiyakake fungsi dhasar kanggo ngekstrak data saka paket, nindakake operasi data, lan kontrol aliran.
Logika nyaring dhewe lan panangan khusus protokol dikompilasi dadi bytecode ing ruang pangguna, sawise bytecode iki dimuat menyang kernel nggunakake antarmuka Netlink lan dieksekusi ing mesin virtual khusus kaya BPF (Berkeley Packet Filters). Pendekatan iki ngidini sampeyan nyuda ukuran kode panyaring kanthi signifikan ing tingkat kernel lan mindhah kabeh fungsi aturan parsing lan logika kanggo nggarap protokol menyang ruang pangguna.

Inovasi utama:

  • Dhukungan IPsec, ngidini cocog alamat trowongan adhedhasar paket, ID panjalukan IPsec, lan tag SPI (Indeks Parameter Keamanan). Tuladhane,

    ... ipsec ing ip saddr 192.168.1.0/24
    ... ipsec ing spi 1-65536

    Sampeyan uga bisa mriksa apa rute liwat trowongan IPsec. Contone, kanggo mblokir lalu lintas ora liwat IPSec:

    … output Filter rt ipsec ilang gulung

  • Dhukungan kanggo IGMP (Internet Group Management Protocol). Contone, sampeyan bisa nggunakake aturan kanggo mbuang panjalukan anggota klompok IGMP mlebu

    nft nambah aturan netdev foo bar igmp jinis membership-query counter drop

  • Kamungkinan nggunakake variabel kanggo nemtokake rantai transisi (mlumpat / goto). Tuladhane:

    nemtokaken tujuwan = ber
    nambah aturan ip foo bar mlumpat $dest

  • Dhukungan kanggo topeng kanggo ngenali sistem operasi (OS Fingerprint) adhedhasar nilai TTL ing header. Contone, kanggo menehi tandha paket adhedhasar OS pangirim, sampeyan bisa nggunakake printah:

    ... meta mark set osf ttl skip name map { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "ora dingerteni": 0x0}
    ... osf ttl skip versi "Linux:4.20"

  • Kemampuan kanggo cocog alamat ARP saka pangirim lan alamat IPv4 saka sistem target. Contone, kanggo nambah counter paket ARP sing dikirim saka alamat 192.168.2.1, sampeyan bisa nggunakake aturan ing ngisor iki:

    tabel arp x {
    rantai y {
    jinis Filter pancing prioritas input Filter; kawicaksanan nampa;
    arp saddr ip 192.168.2.1 paket counter 1 byte 46
    }
    }

  • Dhukungan kanggo nerusake panjalukan sing transparan liwat proxy (tproxy). Contone, kanggo ngarahake telpon menyang port 80 menyang port proxy 8080:

    tabel ip x {
    rantai y {
    jinis Filter pancing prioritas prerouting -150; kawicaksanan nampa;
    tcp dport 80 tproxy kanggo:8080
    }
    }

  • Dhukungan kanggo tandha sockets karo kemampuan kanggo luwih diwenehi tandha pesawat liwat setsockopt () ing mode SO_MARK. Tuladhane:

    tabel inet x {
    rantai y {
    jinis Filter pancing prioritas prerouting -150; kawicaksanan nampa;
    tcp dport 8080 tandha nyetel tandha soket
    }
    }

  • Dhukungan kanggo nemtokake jeneng teks prioritas kanggo rantai. Tuladhane:

    nft nambah chain ip x raw {jinis filter hook prerouting prioritas mentah; }
    nft nambah chain ip x filter {jinis filter pancing prerouting prioritas filter; }
    nft nambah chain ip x filter_later {jinis Filter pancing prerouting prioritas Filter + 10; }

  • Dhukungan kanggo tag SELinux (Secmark). Contone, kanggo nemtokake tag "sshtag" ing konteks SELinux, sampeyan bisa mbukak:

    nft nambah secmark inet filter sshtag "system_u: object_r: ssh_server_packet_t:s0"

    Banjur gunakake label iki ing aturan:

    nft nambah aturan input filter inet tcp dport 22 meta secmark set "sshtag"

    nft nambah peta inet filter secmapping { ketik inet_service : secmark; }
    nft nambah elemen inet filter secmapping {22: "sshtag"}
    nft nambah aturan inet filter input meta secmark nyetel tcp dport map @secmapping

  • Kemampuan kanggo nemtokake port sing ditugasake kanggo protokol ing wangun teks, kaya sing ditetepake ing file /etc/services. Tuladhane:

    nft nambah aturan x y tcp dport "ssh"
    nft dhaftar aturan -l
    tabel x {
    rantai y {
    ...
    tcp dport "ssh"
    }
    }

  • Kemampuan kanggo mriksa jinis antarmuka jaringan. Tuladhane:

    nambah aturan inet mentah prerouting meta iifkind "vrf" nampa

  • Dhukungan sing luwih apik kanggo nganyari isi set kanthi dinamis kanthi nemtokake bendera "dinamis". Contone, kanggo nganyari set "s" kanggo nambah alamat sumber lan ngreset entri yen ora ana paket kanggo 30 detik:

    nambah tabel x
    nambah set x s {ketik ipv4_addr; ukuran 128; wektu entek 30s; gendΓ©ra dinamis; }
    nambah chain x y {jinis filter pancing prioritas input 0; }
    nambah aturan x y nganyari @s { ip saddr }

  • Kemampuan kanggo nyetel kondisi wektu entek kapisah. Contone, kanggo ngilangi wektu entek standar kanggo paket sing teka ing port 8888, sampeyan bisa nemtokake:

    tabel ip filter {
    ct wektu entek agresif-tcp {
    protokol tcp;
    l3proto ip;
    kabijakan = {diadegakΓ©: 100, close_wait: 4, close: 4}
    }
    rantai output {
    ...
    tcp dport 8888 ct wektu entek nyetel "agresif-tcp"
    }
    }

  • Dhukungan NAT kanggo kulawarga inet:

    tabel inet nat {
    ...
    ip6 daddr mati::2::1 dnat kanggo mati:2::99
    }

  • Pelaporan kesalahan ketik sing luwih apik:

    nft nambah tes saringan rantai

    Kesalahan: Ora ana file utawa direktori kasebut; Apa tegese tabel "filter" ing ip kulawarga?
    nambah test Filter chain
    ^^^^^^

  • Kemampuan kanggo nemtokake jeneng antarmuka ing set:

    atur sc {
    ketik inet_service . yen jeneng
    unsur = { "ssh". "eth0" }
    }

  • Sintaks aturan flowtable sing dianyari:

    nft nambah tabel x
    nft nambah flowtable x ft {prioritas mlebu pancing 0; piranti = {eth0, wlan0}; }
    ...
    nft nambah aturan x maju protokol ip {tcp, udp} aliran nambah @ft

  • Dhukungan JSON sing luwih apik.

Source: opennet.ru

Add a comment