Lëshimi i filtrit të paketave nftables 0.9.5

Publikuar lëshimi i filtrit të paketave nftables 0.9.5, duke po zhvillimin si zëvendësim i iptables, ip6tables, arptables dhe ebtables përmes unifikimit të ndërfaqeve të filtrimit të paketeve për IPv4, IPv6, ARP dhe ura rrjetesh. Paketimi i nftables përfshin komponentët e filtrimit të paketeve që funksionojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamës, sistemi nf_tables siguron funksionimin e tij, që është pjesë e bërthamës Linux që nga versioni 3.13. Ndryshimet e nevojshme për punimin e versionit nftables 0.9.5 janë përfshirë në bërthamë Linux 5.7.

Në nivelin themelor, ofrohet vetëm një interfacë të përgjithshme, e cila nuk varet nga protokolli i caktuar dhe ofron funksione bazë për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve me të dhënat dhe menaxhimin e rrjedhës. Rregullat e filtrimit dhe përpunuesit e caktuar për protokollet kompilohen direkt në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod narkohet në kernel përmes interfecës Netlink dhe ekzekutohet në kernel në një makinë virtuale të veçantë, e ngjashme me BPF (Filtrat e Paketave Berkeley). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që funksionon në nivelin e kernelit dhe të zhvendosë të gjitha funksionet për analizimin e rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit.

TĂ« rejat kryesore:

  • Shtimi i mbĂ«shtetjes pĂ«r numĂ«ruesit e paketeve dhe trafikut, tĂ« lidhur me elementet e grupeve. NumĂ«ruesit aktivizohen pĂ«rmes fjalĂ«s kyçe "counter":

    tavolinë ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    zinxhir z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }

  • PĂ«r tĂ« vendosur vlerat fillestare tĂ« numĂ«ruesve, pĂ«r shembull, pĂ«r tĂ« rikuperuar numĂ«ruesit e mĂ«parshĂ«m pas rinisjes, mund tĂ« pĂ«rdorni komandĂ«n "nft -f":

    # cat ruleset.nft
    tavolinë ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    zinxhir z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    # nft list ruleset
    tavolinë ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    zinxhir z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }

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

    table ip foo {
    flowtable bar {
    hook ingress priority -100
    devices = { eth0, eth1 }
    counter
    }

    chain forward {
    type filter hook forward priority filter;
    flow add @bar counter
    }
    }

    Lista e numëruesve mund të shikohet përmes komandës "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=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 \
    packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2

  • NĂ« grupet pĂ«r bashkimin (concatenation, lidhje tĂ« caktuara adresash dhe portesh qĂ« lehtĂ«sojnĂ« pĂ«rputhjen) Ă«shtĂ« siguruar mundĂ«sia e pĂ«rdorimit tĂ« drejtpĂ«rdrejtĂ«s "typeof", e cila pĂ«rcakton llojin e tĂ« dhĂ«nave pĂ«r elementĂ«t e pjesĂ«ve tĂ« grupeve:

    table 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
    }
    }

  • Drejtpa tjetĂ«rshofja typeof tani Ă«shtĂ« gjithashtu e aplikueshme pĂ«r bashkimet nĂ« listat e map-it:

    table 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 bashkime me intervale nĂ« grupe anonime (pa emĂ«r):

    # 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

  • Siguruar mundĂ«sinĂ« e hedhjes sĂ« paketeve me flamuj 802.1q (VLAN) gjatĂ« pĂ«rpunimit tĂ« urave rrjetesh:

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

  • Shtuar mbĂ«shtetje pĂ«r pĂ«rputhjen sipas identifikatorit tĂ« sesionit TCP (conntrack ID). PĂ«r tĂ« pĂ«rcaktuar identifikatorin e conntrack, mund tĂ« pĂ«rdorni opsionin "—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 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