nftables pakét filter release 0.9.1

Sanggeus sataun pangwangunan ditepikeun release pakét filter nftables 0.9.1, Ngembangkeun salaku gaganti pikeun iptables, ip6table, arptables sareng ebtables ku ngahijikeun antarmuka panyaring pakét pikeun IPv4, IPv6, ARP sareng sasak jaringan. Paket nftables kalebet komponén saringan pakét anu dijalankeun dina rohangan pangguna, sedengkeun padamelan tingkat kernel disayogikeun ku subsistem nf_tables, anu parantos janten bagian tina kernel Linux ti saprak ngaleupaskeun 3.13.

Tingkat kernel ngan nyadiakeun antarbeungeut protokol-bebas generik nu nyadiakeun pungsi dasar pikeun extracting data tina pakét, ngajalankeun operasi data, jeung kontrol aliran.
Logika nyaring sorangan jeung pawang husus protokol anu disusun kana bytecode dina spasi pamaké, nu satutasna bytecode ieu dimuat kana kernel ngagunakeun panganteur Netlink sarta dieksekusi dina mesin virtual husus reminiscent tina BPF (Berkeley Packet Filters). Pendekatan ieu ngamungkinkeun anjeun sacara signifikan ngirangan ukuran kode nyaring anu dijalankeun dina tingkat kernel sareng mindahkeun sadaya fungsi aturan parsing sareng logika pikeun damel sareng protokol kana rohangan pangguna.

Inovasi utama:

  • Dukungan IPsec, ngamungkinkeun cocog alamat torowongan dumasar kana pakét, ID pamundut IPsec, sareng tag SPI (Indéks Parameter Kaamanan). Salaku conto,

    ... ipsec dina ip saddr 192.168.1.0/24
    ... ipsec di spi 1-65536

    Ieu oge mungkin pikeun pariksa naha ruteu ngaliwatan torowongan IPsec. Contona, pikeun meungpeuk lalulintas teu via IPSec:

    … kaluaran filter rt ipsec leungit serelek

  • Rojongan pikeun IGMP (Internet Group Management Protocol). Contona, anjeun tiasa nganggo aturan pikeun miceun requests kaanggotaan grup IGMP asup

    nft tambihan aturan netdev foo bar igmp type membership-query counter drop

  • Kamungkinan ngagunakeun variabel pikeun nangtukeun ranté transisi (luncat / goto). Salaku conto:

    nangtukeun tujuan = ber
    tambahkeun aturan ip foo bar luncat $dest

  • Rojongan pikeun masker pikeun ngaidentipikasi sistem operasi (OS Fingerprint) dumasar kana nilai TTL dina header. Contona, pikeun nyirian pakét dumasar kana OS pangirim, anjeun tiasa nganggo paréntah:

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

  • Kamampuhan pikeun cocog sareng alamat ARP pangirim sareng alamat IPv4 tina sistem target. Contona, pikeun ngaronjatkeun counter pakét ARP dikirim ti alamat 192.168.2.1, anjeun tiasa nganggo aturan ieu:

    tabél arp x {
    ranté y {
    tipe filter hook input prioritas filter; kawijakan narima;
    arp saddr ip 192.168.2.1 pakét kontra 1 bait 46
    }
    }

  • Rojongan pikeun diteruskeun transparan tina requests ngaliwatan proxy a (tproxy). Contona, pikeun alihan telepon ka port 80 ka port proxy 8080:

    tabél ip x {
    ranté y {
    tipe filter hook prerouting prioritas -150; kawijakan narima;
    tcp dport 80 tproxy ka:8080
    }
    }

  • Rojongan pikeun nyirian sockets kalawan kamampuhan pikeun ménta salajengna tanda set via setsockopt () dina modeu SO_MARK. Salaku conto:

    tabél inet x {
    ranté y {
    tipe filter hook prerouting prioritas -150; kawijakan narima;
    tcp dport 8080 tanda set stop kontak
    }
    }

  • Rojongan pikeun nangtukeun ngaran téks prioritas pikeun ranté. Salaku conto:

    nft nambahkeun ranté ip x atah {tipe filter hook prerouting prioritas atah; }
    nft nambahkeun ranté ip x filter {tipe filter hook prerouting prioritas filter; }
    nft nambahkeun ranté ip x filter_later {tipe filter hook prerouting prioritas filter + 10; }

  • Rojongan pikeun tag SELinux (Secmark). Contona, pikeun nangtukeun tag "sshtag" dina konteks SELinux, anjeun tiasa ngajalankeun:

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

    Teras nganggo labél ieu dina aturan:

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

    nft nambahkeun peta inet filter secmapping {tipe inet_service: secmark; }
    nft nambahkeun unsur inet filter secmapping {22: "sshtag"}
    nft nambahkeun aturan inet filter input meta secmark set tcp dport peta @secmapping

  • Kamampuhan pikeun netepkeun palabuhan anu ditugaskeun ka protokol dina bentuk téks, sabab didefinisikeun dina file /etc/services. Salaku conto:

    nft nambahkeun aturan xy tcp dport "ssh"
    nft daptar ruleset -l
    tabél x {
    ranté y {
    ...
    tcp dport "ssh"
    }
    }

  • Kamampuhan pikeun mariksa jinis antarmuka jaringan. Salaku conto:

    tambahkeun aturan inet atah prerouting meta iifkind "vrf" narima

  • Ningkatkeun rojongan pikeun dinamis ngamutahirkeun eusi susunan ku eksplisit nangtukeun bendera "dinamis". Contona, pikeun ngapdet set "s" pikeun nambahkeun alamat sumber tur ngareset entri lamun euweuh pakét pikeun 30 detik:

    tambahkeun tabel x
    tambahkeun set xs {tipe ipv4_addr; ukuran 128; waktos kaluar 30s; umbul dinamis; }
    tambahkeun ranté xy {tipe filter hook prioritas input 0; }
    tambahkeun aturan xy update @s {ip saddr}

  • Kamampuhan pikeun nyetél kaayaan seep misah. Contona, pikeun nimpa wates waktu standar pikeun pakét anu sumping dina port 8888, anjeun tiasa netepkeun:

    tabél ip filter {
    ct timeout agrésif-tcp {
    protokol tcp;
    l3proto ip;
    kawijakan = {ngadegkeun: 100, nutup_antosan: 4, nutup: 4}
    }
    kaluaran ranté {
    ...
    tcp dport 8888 ct seep set "agrésif-tcp"
    }
    }

  • Pangrojong NAT pikeun kulawarga inet:

    tabel inet nat {
    ...
    ip6 daddr maot:: 2:: 1 dnat ka maot: 2:: 99
    }

  • Pelaporan kasalahan typo ningkat:

    nft nambahkeun tés filter ranté

    Kasalahan: Henteu aya file atanapi diréktori sapertos kitu; Dupi anjeun hartosna tabel "filter" dina ip kulawarga?
    tambahkeun tés filter ranté
    ^^^^^^

  • Kamampuhan pikeun nangtukeun nami antarmuka dina set:

    atur sc {
    ngetik inet_service . lamun ngaran
    elemen = { "ssh". "ét0" }
    }

  • Sintaksis aturan flowtable anu diropéa:

    nft nambahkeun tabel x
    nft nambahkeun flowtable x ft {hook ingress prioritas 0; alat = {eth0, wlan0}; }
    ...
    nft nambahkeun aturan x maju ip protokol {tcp, udp} aliran nambahkeun @ft

  • Ningkatkeun dukungan JSON.

sumber: opennet.ru

Tambahkeun komentar