Lëshimi i filtrit të paketave nftables 0.9.5

Publikuar lëshimi i filtrit të paketave nftables 0.9.5, i zhvilluar si një zëvendësim për iptables, ip6tables, arptables dhe ebtables përmes unifikimit të ndërfaqeve të filtrimit të paketave për IPv4, IPv6, ARP dhe urat rrjetë. Në paketën nftables përfshihen komponentë të filtrit të paketave që punojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthames punën e siguron nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga lëshimi 3.13. Ndryshimet e nevojshme për funksionimin e lëshimit nftables 0.9.5 janë përfshirë në bërthamë Linux 5.7.

Në nivelin e bërthames ofrohet vetëm një ndërfaqe e përgjithshme, që nuk varet nga protokolli specifik dhe ofron funksione të bazës për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve me të dhëna dhe menaxhimin e rrjedhës. Rregullat e filtrimit dhe trajtuesit specifikë për protokollet kompilohet në kod bajtësh në hapësirën e përdoruesit, pas së cilës ky kod bajtësh ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një makinë virtuale speciale, e cila i ngjan BPF (Berkeley Packet Filters). Ky qasje lejon të zvogëlohet në mënyrë të konsiderueshme madhësia e kodit të filtrimit që punon në nivelin bërthamor dhe të transferohen të gjitha funksionet e analizës së rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

Novitetet kryesore:

  • NĂ« grupe janĂ« shtuar mbĂ«shtetje pĂ«r numĂ«ruesit e paketave dhe trafikut, tĂ« lidhur me elementĂ«t e grupit. NumĂ«ruesit aktivizohen pĂ«rmes fjalĂ«s kyçe "counter":

    tabela ip x {
    grupi y {
    lloji i ip saddr
    numërues
    elementët = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    zinxhiri z {
    tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
    ip daddr @y
    }
    }

  • PĂ«r tĂ« vendosur vlerat fillestare tĂ« numĂ«ruesve, pĂ«r shembull, pĂ«r tĂ« rikuperuar numĂ«ruesit e kaluar pas rilĂ«shimit, nĂ« grup mund tĂ« pĂ«rdoret komanda "nft -f":

    # cat ruleset.nft
    tabela ip x {
    grupi y {
    lloji i ip saddr
    numërues
    elementët = { 192.168.10.35 numërues paketash 1 bytes 84, 192.168.10.101 \
    numërues p 192.168.10.135 numërues paketash 0 bytes 0 }
    }

    zinxhiri z {
    tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    # nft list ruleset
    tabela ip x {
    grupi y {
    lloji i ip saddr
    numërues
    elementët = { 192.168.10.35 numërues paketash 1 bytes 84, 192.168.10.101 \
    numërues p 192.168.10.135 numërues paketash 0 bytes 0 }
    }

    zinxhiri z {
    tipi i filtrit të lidhjes së daljes me prioritet filtri; politika pranohet;
    ip daddr @y
    }
    }

  • MbĂ«shtetje pĂ«r numĂ«ruesit Ă«shtĂ« shtuar gjithashtu nĂ« flowtable:

    tabela ip foo {
    flowtable bar {
    në folderin e hyrjes me prioritet -100
    dispozitat = { eth0, eth1 }
    numërues
    }

    zinxhiri përpara {
    tipi i filtrit të lidhjes së përparme me prioritet filtri;
    rrjedha shto @bar numërues
    }
    }

    Për të parë listën e numëruesve mund të përdoret komanda "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 paketat=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 paketat=8 bytes=428 [OFFLOAD] mark=0 \
    secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    paketat=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    paketet=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2

  • NĂ« paketat pĂ«r bashkĂ«ngjitjet (concatenation, lidhje specifike tĂ« adresave dhe porteve qĂ« lehtĂ«sojnĂ« pĂ«rshtatjen) Ă«shtĂ« e mundur tĂ« pĂ«rdoret direktiva "typeof", e cila pĂ«rcakton tipin e dhĂ«nave tĂ« elementeve pĂ«r pĂ«rbĂ«rĂ«sit e elementeve tĂ« paketĂ«s:

    tabela ip foo {
    set whitelist {
    typeof ip saddr . tcp dport
    elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    ip daddr . tcp dport @whitelist accept
    }
    }

  • Direktiva typeof tani gjithashtu aplikohet pĂ«r bashkĂ«ngjitjet nĂ« listat e hartĂ«s:

    tabela ip foo {
    map addr2mark {
    typeof ip saddr . tcp dport : meta mark
    elements = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135 . 80 : 0x00000002 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    meta mark set ip daddr . tcp dport map @addr2mark accept
    }
    }

  • Shtuar mbĂ«shtetje pĂ«r bashkĂ«ngjitjet me diapazone nĂ« paketat anonime (tĂ« paemĂ«ruara):

    # nft add rule inet filter input ip daddr . tcp dport \
    { 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept

  • Ofruar mundĂ«sia pĂ«r tĂ« hedhur paketa me flamuj 802.1q (VLAN) gjatĂ« trajtimit tĂ« urave rrjetĂ«:

    # nft add rule bridge foo bar ether type vlan reject with tcp reset

  • Shtuar mbĂ«shtetje pĂ«r pĂ«rshtatjen sipas identifikuesit tĂ« seancĂ«s TCP (conntrack ID). PĂ«r tĂ« pĂ«rcaktuar conntrack ID, mund tĂ« pĂ«rdoret opsioni "—output id":

    # conntrack -L —output id
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
    bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
    [ASSURED] mark=0 use=1 id=2779986232

    # nft add rule foo bar ct id 2779986232 counter

Burimi: opennet.ru

Bleni hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera đŸ”„ Bli hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera | ProHoster