Az nftables 1.0.6 csomagszűrő kiadása

Megjelent az nftables 1.0.6 verziójú csomagszűrő, amely egységesíti a csomagszűrési interfészeket IPv4, IPv6, ARP és hálózati hidak számára (célja az iptables, ip6tables, arptables és ebtables helyettesítése). Az nftables csomag tartalmazza a felhasználói térben működő csomagszűrő komponenseket, míg a kernel szintjén az nf_tables alrendszer biztosítja a működést, amely a Linux kernel 3.13-as verziójától van jelen. A kernel szintjén csak egy általános interfész áll rendelkezésre, amely független a konkrét protokolloktól, és alapvető funkciókat nyújt a csomagokból származó adatok kinyerésére, az adatokkal kapcsolatos műveletek végrehajtására és az adatfolyam irányítására.

Közvetlenül a szűrési szabályok és a protokollspecifikus kezelők felhasználói térben bájt kódba vannak fordítva, majd ezt a bájt kódot a Netlink interfész segítségével betöltik a kernelbe, ahol speciális környezetben végrehajtásra kerül. virtuális gépben, amely a BPF (Berkeley Packet Filters) eljárásra emlékeztet. Ez a megközelítés jelentősen csökkenti a kernel szinten működő szűrési kód méretét, miközben az összes szabályok parszolásával és a protokollokkal kapcsolatos logikával kapcsolatos funkciót a felhasználói térbe helyezi.

Főbb változások:

  • Az -o/--optimize opció megadásakor hívott szabályoptimalizáló automatikus szabálycsomagolást végez a szabályok egyesítésével és map- és set-listás átalakításával. Például a szabályok # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; policy drop; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept } } a «nft -o -c -f ruleset.nft» végrehajtása után a következőképpen átalakul: ruleset.nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft:6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept átalakítva: iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.4, eth1 . 1.1.1.2 . 2.2.3.0/24, eth1 . 1.1.1.2 . 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3 . 2.2.2.5 } accept
  • Az optimalizáló képes lehet a szabályok tömörített formába történő átalakítására, amelyekben már egyszerű set-listák szerepelnek, például a következő szabályokban: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; policy drop; iifname "lo" accept ct state established,related accept comment "A forgalomban, amit generálunk, megbízunk" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } az "nft -o -c -f ruleset.nft" végrehajtása után a következőképpen lesznek csomagolva: ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept ruleset.nft:7:22-143: iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept into: iifname . ip saddr . ip daddr . udp sport . udp dport { enp0s31f6 . 209.115.181.102 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 216.197.228.230 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 64.59.144.17 . 10.0.0.149 . 53 . 32768-65535, enp0s31f6 . 64.59.150.133 . 10.0.0.149 . 53 . 32768-65535 } accept
  • Megoldódott a bytecode generálás problémája a különböző byte sorrendű típusokkal, például IPv4 (hálózati byte sorrend) és meta mark (rendszerszintű byte sorrend) intervallumok összefésülésénél. table ip x { map w { typeof ip saddr . meta mark : verdict flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : accept, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accept, } } chain k { type filter hook input priority filter; policy drop; ip saddr . meta mark vmap @w } }
  • Megoldódott a ritka protokollok leképezése, amikor raw kifejezéseket használnak, például: meta l4proto 91 @th,400,16 0x0 accept
  • Megoldódott a szabályok intervallumos alkalmazásával kapcsolatos problémák: insert rule x y tcp sport { 3478-3497, 16384-16387 } counter accept
  • Javult a JSON API, amely mostantól támogatja a set- és map-listák kifejezéseit.
  • A python-nftables könyvtár kiterjesztéseiben engedélyezve lett a szabályhalmazok betöltése ellenőrzési módban („-c”), valamint a külső változók definiálásának támogatása.
  • A set-listákban lehetővé tettük a megjegyzések hozzáadását.
  • A byte ratelimit lehetővé teszi a nullás érték megadását.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster