nftables csomagszűrő kiadás 1.0.6

Megjelent az nftables 1.0.6 csomagszűrő kiadása, amely egyesíti az IPv4, IPv6, ARP és hálózati hidak csomagszűrő interfészeit (az iptables, ip6table, arptables és ebtables helyettesítésére). Az nftables csomag felhasználói térben futó csomagszűrő komponenseket tartalmaz, míg a kernel szintjét az nf_tables alrendszer biztosítja, amely a 3.13-as kiadás óta a Linux kernel része. Kernel szinten csak egy általános, protokollfüggetlen interfész biztosított, amely alapvető funkciókat biztosít az adatok csomagokból történő kinyeréséhez, az adatokkal kapcsolatos műveletek végrehajtásához és az áramlás szabályozásához.

Magukat a szűrési szabályokat és a protokoll-specifikus kezelőket felhasználói térbeli bájtkódba fordítják, majd ezt a bájtkódot a Netlink interfész segítségével betöltik a kernelbe, és egy speciális, BPF-hez (Berkeley Packet Filters) hasonlító virtuális gépben hajtják végre a kernelben. Ez a megközelítés lehetővé teszi a kernel szinten futó szűrőkód méretének jelentős csökkentését, valamint az elemzési szabályok összes funkciójának és a protokollokkal való munka logikájának a felhasználói térbe való áthelyezését.

Nagy változások:

  • A "-o/--optimize" opció megadásakor meghívott szabályoptimalizálóban a szabályok automatikus csomagolása be van állítva, ezek kombinálásával és térkép- és halmazlistákká konvertálásával. Például a szabályok a következők: # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; politika csökkenése; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 elfogadja meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 elfogadja meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 ip daddr 24 ip dad1 elfogadja1.1.1.2iip .2.2.4.0 .2.2.4.10 ip daddr 2-1.1.1.3 accept meta iifname eth2.2.2.5 ip saddr 4 ip daddr 17 accept } } az "nft -o -c -f ruleset.nft" után a következőre konvertálódik: szabályok. nft:74:1-1.1.1.1: meta iifname eth2.2.2.3 ip saddr 5 ip daddr 17 elfogadja a szabályokat.nft:74:1-1.1.1.2: meta iifname eth2.2.2.4 ip saddr 6 ip daddr 17: ruleet. 77:1-1.1.1.2: meta iifname eth2.2.3.0 ip saddr 24 ip daddr 7/17 elfogadja a szabályokat.nft:83:1-1.1.1.2: meta iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 8 elfogadja ruleset.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 accept into: iifname . ip saddr . ip daddr { eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1, eth1.1.1.2 . 2.2.3.0. 24/1, eth1.1.1.2 . 2.2.4.0. 2.2.4.10-2, eth1.1.1.3 . 2.2.2.5. XNUMX } elfogadja
  • Az optimalizáló olyan szabályokat is tömöríthet, amelyek már egyszerű halmazlistákat használnak, például: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; politika csökkenése; iifname "lo" elfogadja ct állapot létrehozva, kapcsolódó elfogadja megjegyzés "A forgalomban mi származunk, bízunk" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149port daddr 123 port 32768 elfogadni iifname "enp65535s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 ezt a csomagot elfogadja -nft } -etnf csomag elfogadása } -etnf. : ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr { 6, 209.115.181.102 } ip daddr 216.197.228.230 udp sport 10.0.0.149et123npport 32768:65535et7nf22 :143-0 31 : iifname "enp6s64.59.144.17f64.59.150.133" ip saddr { 10.0.0.149, 53 } ip daddr 32768 udp sport 65535 udp dport 0-31 név elfogadása a következőbe: ip saddr . ip apa . udp sport. udp dport { enp6s209.115.181.102f10.0.0.149 . 123 . 32768 . 65535 . 0-31, enp6s216.197.228.230f10.0.0.149 . 123 . 32768 . 65535 . 0-31, enp6s64.59.144.17f10.0.0.149 . 53. 32768 . 65535 . 0-31, enp6s64.59.150.133f10.0.0.149 . 53. 32768 . 65535 . XNUMX-XNUMX } elfogadja
  • Megoldott egy problémát a bájtkód generálásával az olyan intervallumok egyesítéséhez, amelyek különböző végződésű típusokat használnak, például IPv4 (hálózati végpont) és metajel (rendszervégződés). táblázat ip x { map w { typeof ip saddr . metajel : ítéletjelzők intervallumszámláló elemek = {127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : elfogad, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : elfogad, } } chain k { type filter hook input priority filter; politika csökkenése; ip saddr . meta jel vmap @w } }
  • Továbbfejlesztett ritka protokollleképezések nyers kifejezések használatakor, például: meta l4proto 91 @th,400,16 0x0 accept
  • Javítva a szabályok időközönkénti engedélyezésével kapcsolatos problémák: xy szabály beszúrása tcp sport { 3478-3497, 16384-16387 } counter accept
  • A JSON API-t továbbfejlesztették, hogy támogassa a kifejezéseket a készlet- és leképezési listákban.
  • Az nftables python könyvtár bővítményeiben megengedett a szabálykészletek betöltése ellenőrzési módban ("-c") történő feldolgozáshoz, és hozzáadásra került a külső változódefiníció támogatása.
  • Megjegyzések hozzáadása megengedett a set-listák elemeiben.
  • A bájt sebességkorlátban nulla érték adható meg.

Forrás: opennet.ru

Hozzászólás