Lëshimi i filtrit të paketave nftables 1.0.0

Lëshimi i versionit 1.0.0 të filtrit të paketave nftables, i cili unifikon ndërfaqet e filtrimit të paketave për IPv4, IPv6, ARP dhe urat rrjetësore (në synim për të zëvendësuar iptables, ip6table, arptables dhe ebtables). Ndryshimet e nevojshme për funksionimin e versionit 1.0.0 të nftables janë përfshirë në bërthamën Linux 5.13. Ndryshimi i rëndësishëm në numrin e versionit nuk lidhet me ndonjë ndryshim radikal, por është thjesht rezultat i vazhdimit të renditjes në sistemin decimal (lëshimi i kaluar ishte 0.9.9).

Paketat nftables përfshijnë komponentët e filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor, funksionin e realizon nën-sistemi nf_tables, i pranishëm në bërthamën Linux që nga lëshimi 3.13. Në nivelin e bërthamor ofrohet vetëm një ndërfaqe e përgjithshme, e pavarur nga protokolli konkret dhe që ofron funksione bazike për nxjerrjen e të dhënave nga paketat, realizimin e operacioneve me të dhëna dhe menaxhimin e fluksit.

Rregullat e filtrimit dhe trajtuesit specifik për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mjedis të veçantë. makinën virtuale, i ngjan Berkley Packet Filters (BPF). Qashtu, kjo qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që funksionon në nivelin e bërthamës dhe të nxirren të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

TĂ« rejat kryesore:

  • NĂ« listat set Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r elementin maskĂ« «*», i cili aktivizohet pĂ«r çdo paketĂ« qĂ« nuk bĂ«n pjesĂ« nĂ« elementet e tjera tĂ« pĂ«rcaktuara nĂ« set. 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 } }
  • Krijohet mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar variablat nga komanda e linjĂ«s pĂ«rmes opsionit «—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
  • NĂ« listat map Ă«shtĂ« lejuar pĂ«rdorimi i shprehjeve tĂ« pĂ«rhershme (stateful): 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 } } }
  • Shtohet komanda «list hooks» pĂ«r tĂ« nxjerrĂ« njĂ« listĂ« tĂ« trajtuesve pĂ«r njĂ« familje tĂ« caktuar paketash: # 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 } }
  • NĂ« blloqet «queue» lejohet kombinimi i shprehjeve jhash, symhash dhe numgen pĂ«r shpĂ«rndarjen e paketave nĂ« radhĂ« nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit. 
 queue to symhash mod 65536 
 queue flags bypass to numgen inc mod 65536 
 queue to jhash oif . meta mark mod 32 «queue» gjithashtu mund tĂ« kombinohen me listat map pĂ«r tĂ« zgjedhur radhĂ«n nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit nĂ« bazĂ« tĂ« çelĂ«save tĂ« rastĂ«sishĂ«m. 
 queue flags bypass to oifname map { «eth0» : 0, «ppp0» : 2, «eth1» : 2 }
  • Krijohet mundĂ«sia pĂ«r tĂ« zbuluar variablat, qĂ« pĂ«rfshijnĂ« listĂ«n set, nĂ« disa lista map. 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 } } }
  • Lejohet kombinimi i vmap-eve (vota harta) me intervale: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : pranoni }
  • Sintaksa e thjeshtuar e pĂ«rputhjeve pĂ«r NAT. Lejohet shĂ«nimi i intervaleve tĂ« adresave: 
 snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } ose tĂ« qartĂ«. IP-adresave dhe porteve: 
 dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } ose kombinime tĂ« intervaleve IP dhe porteve: 
 dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster