Objavljen je paketni filter nftables 1.0.0

Objavljen je izdanje paketnog filtra nftables 1.0.0, koji unificira sučelja filtriranja paketa za IPv4, IPv6, ARP i mrežne mostove (cilja na zamjenu iptables, ip6tables, arptables i ebtables). Potrebne izmjene za rad nftables 1.0.0 uključene su u jezgri Linux 5.13. Značajna promjena verzije nije povezana sa značajnim promjenama, već je samo rezultat kontinuiranog nastavka numeracije u decimalnom sustavu (prethodno izdanje je bilo 0.9.9).

U paket nftables uključeni su komponente paketskog filtra koje rade u korisničkom prostoru, dok na razini jezgre rad osigurava pod-sustav nf_tables, koji je deo jezgre Linuxa od izdanja 3.13. Na razini jezgre pruža se samo opće sučelje koje nije ovisno o specifičnom protokolu i koje osigurava osnovne funkcije ekstrakcije podataka iz paketa, izvršavanja operacija s podacima i upravljanja protokom.

Izravno pravila filtriranja i specifični za protokole obrada se kompajliraju u bajtkod u korisničkom prostoru, nakon čega se taj bajtkod učitava u jezgru putem Netlink sučelja i izvršava u jezgru u posebnoj virtualnoj mašini, koja podsjeća na BPF (Berkeley Packet Filters). Ovaj pristup omogućava značajno smanjenje veličine koda filtriranja koji radi na razini jezgre i prebacivanje svih funkcija analize pravila i logike rada s protokolima u korisnički prostor.

Glavne novine:

  • U set-liste dodana je podrška za masku elementa „*“, koja se aktivira za sve pakete koji ne pripadaju drugim elementima definiranim u skupu. table x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } chain y { type filter hook prerouting priority 0; policy accept; ip saddr vmap @blocklist } }
  • Omogućeno je definiranje varijabli iz komandne linije pomoću opcije „—define“. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; policy drop; } } # nft —define dev=„{ eth0, eth1 }“ -f test.nft
  • U map-listama dopuštena je primjena trajnih (stateful) izraza: table inet filter { map portmap { type inet_service : verdict counter elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; policy accept; iif vmap { „lo“ : jump wan_input } } }
  • Dodana je komanda „list hooks“ za ispis popisa handlera određenog obiteljskog paketa: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev x y [nf_tables] +0000000300 chain inet m w [nf_tables] } hook input { -0000000100 chain ip a b [nf_tables] +0000000300 chain inet m z [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip a c [nf_tables] } hook output { -0000000225 selinux_ipv4_output } hook postrouting { +0000000225 selinux_ipv4_postroute } }
  • U blokovima „queue“ dopušteno je kombiniranje izraza jhash, symhash i numgen za raspodjelu paketa po redovima u prostoru korisnika. … queue to symhash mod 65536 … queue flags bypass to numgen inc mod 65536 … queue to jhash oif . meta mark mod 32 „queue“ se također može kombinirati s map-ponudama za odabir reda u prostoru korisnika na temelju proizvoljnih ključeva. … queue flags bypass to oifname map { „eth0“ : 0, „ppp0“ : 2, „eth1“ : 2 }
  • Omogućeno je otkrivanje varijabli koje uključuju set-listu, u više mapa. define interfaces = { eth0, eth1 } table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { „lo“ : accept, „eth0“ : drop, „eth1“ : drop } } }
  • Dopuštena je kombinacija vmap-ova (verdict map) s intervalima: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
  • P pojednostavljen je sintaks pravi za NAT. Dopušteno je navođenje raspona adresa: … snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } ili eksplicitnih IP adresa i portova: … dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } ili kombinacija raspona IP-a i portova: … dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster