nftables packet filter release 0.9.1

Apre yon ane nan devlopman prezante pake filtre lage nftables 0.9.1, devlope kòm yon ranplasman pou iptables, ip6table, arptables ak ebtables pa inifye entèfas filtraj pake pou IPv4, IPv6, ARP ak pon rezo. Pake nftables a gen ladan eleman filtre pake ki kouri nan espas itilizatè yo, pandan y ap travay nan nivo nwayo a se sou-sistèm nf_tables ki te bay, ki te fè pati nwayo Linux la depi lage 3.13.

Nivo nwayo a bay sèlman yon koòdone jenerik pwotokòl endepandan ki bay fonksyon debaz pou ekstrè done ki soti nan pake, fè operasyon done, ak kontwòl koule.
Lojik filtraj tèt li ak moun kap okipe pwotokòl espesifik yo konpile nan bytecode nan espas itilizatè, apre sa bytecode sa a chaje nan nwayo a lè l sèvi avèk koòdone Netlink la epi egzekite nan yon machin vityèl espesyal ki okoumansman de BPF (Berkeley Packet Filters). Apwòch sa a pèmèt ou redwi siyifikativman gwosè kòd filtraj ki kouri nan nivo nwayo a epi deplase tout fonksyon analiz règ ak lojik pou travay ak pwotokòl nan espas itilizatè.

Prensipal inovasyon:

  • Sipò IPsec, ki pèmèt matche adrès tinèl ki baze sou pake, ID demann IPsec, ak tag SPI (Security Parameter Index). Pa egzanp,

    ... ipsec nan ip saddr 192.168.1.0/24
    ... ipsec nan spi 1-65536

    Li posib tou pou tcheke si yon wout pase nan yon tinèl IPsec. Pou egzanp, bloke trafik pa atravè IPSec:

    … filtre pwodiksyon rt ipsec manke gout

  • Sipò pou IGMP (Protokòl Jesyon Gwoup Entènèt). Pa egzanp, ou ka itilize yon règ pou jete demann manm gwoup IGMP k ap vini yo

    nft ajoute règ netdev foo bar igmp kalite manm-rekèt kontwa gout

  • Posiblite pou itilize varyab pou defini chenn tranzisyon (sote / goto). Pa egzanp:

    defini dest = ber
    ajoute règ ip foo bar so $dest

  • Sipò pou mask yo idantifye sistèm opere (OS Fingerprint) ki baze sou valè TTL nan header la. Pou egzanp, pou make pake ki baze sou eksplwatasyon moun k ap voye a, ou ka itilize kòmandman an:

    ... meta mark set osf ttl skip name map { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "enkoni": 0x0}
    ... osf ttl sote vèsyon "Linux: 4.20"

  • Kapasite pou matche ak adrès ARP moun k la ak adrès IPv4 sistèm sib la. Pou egzanp, pou ogmante kontwa pake ARP ki voye soti nan adrès 192.168.2.1, ou ka itilize règ sa a:

    tab arp x {
    chèn y {
    kalite filtre zen filtre priyorite opinyon; politik aksepte;
    arp saddr ip 192.168.2.1 counter packets 1 bytes 46
    }
    }

  • Sipò pou transparan voye demann atravè yon prokurasyon (tproxy). Pou egzanp, redireksyon apèl nan pò 80 nan pò proxy 8080:

    tab ip x {
    chèn y {
    kalite filtre zen prerouting priyorite -150; politik aksepte;
    tcp dport 80 tproxy pou :8080
    }
    }

  • Sipò pou make sockets ak kapasite pou plis jwenn mak la mete atravè setsockopt () nan mòd SO_MARK. Pa egzanp:

    tab inet x {
    chèn y {
    kalite filtre zen prerouting priyorite -150; politik aksepte;
    tcp dport 8080 make mete mak socket
    }
    }

  • Sipò pou espesifye non tèks priyorite pou chenn. Pa egzanp:

    nft add chain ip x raw { type filter hook prerouting priyorite kri; }
    nft add chain ip x filter { type filter hook prerouting priyorite filtre; }
    nft ajoute chèn ip x filter_later { type filter hook prerouting priyorite filter + 10; }

  • Sipò pou etikèt SELinux (Secmark). Pa egzanp, pou defini tag "sshtag" nan yon kontèks SELinux, ou ka kouri:

    nft ajoute secmark inet filter sshtag "system_u:object_r:ssh_server_packet_t:s0"

    Apre sa, sèvi ak etikèt sa a nan règ yo:

    nft ajoute règ inet filter input tcp dport 22 meta secmark mete "sshtag"

    nft ajoute kat jeyografik inet filter secmapping { tape inet_service : secmark; }
    nft ajoute eleman inet filter secmapping { 22 : "sshtag" }
    nft ajoute règ inet filtre antre meta secmark mete tcp dport kat @secmapping

  • Kapasite pou presize pò yo asiyen nan pwotokòl nan fòm tèks, jan yo defini nan /etc/services dosye a. Pa egzanp:

    nft ajoute règ xy tcp dport "ssh"
    nft list ruleset -l
    tab x {
    chèn y {
    ...
    tcp dport "ssh"
    }
    }

  • Kapasite yo tcheke ki kalite koòdone rezo a. Pa egzanp:

    ajoute règ inet kri prerouting meta iifkind "vrf" aksepte

  • Amelyore sipò pou dinamik aktyalizasyon sa ki nan seri pa klèman espesifye drapo "dinamik la". Pou egzanp, mete ajou seri "s" pou ajoute adrès sous la ak reset antre a si pa gen okenn pake pou 30 segonn:

    ajoute tab x
    ajoute mete xs { tape ipv4_addr; gwosè 128; delè 30s; drapo dinamik; }
    ajoute chèn xy { kalite filtre zen priyorite opinyon 0; }
    ajoute règ xy aktyalizasyon @s { ip saddr }

  • Kapasite pou mete yon kondisyon separe timeout. Pa egzanp, pou chanje delè defo pou pake ki rive sou pò 8888, ou ka presize:

    tab ip filtè {
    ct timeout agresif-tcp {
    pwotokòl tcp;
    l3proto ip;
    politik = {etabli: 100, close_wait: 4, fèmen: 4}
    }
    pwodiksyon chèn {
    ...
    tcp dport 8888 ct timeout mete "agresif-tcp"
    }
    }

  • NAT sipò pou fanmi inet:

    tab inet nat {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • Amelyore rapò erè typo:

    nft ajoute chèn filtre tès

    Erè: Pa gen dosye oswa anyè sa yo; ou te vle di tab "filtre" nan fanmi IP?
    ajoute chèn filtre tès
    ^^^^^^

  • Kapasite pou presize non koòdone nan seri:

    mete sc {
    tape inet_service . ifname
    eleman = { "ssh" . "eth0"}
    }

  • Mizajou sentaks règ flowtable:

    nft ajoute tab x
    nft ajoute flowtable x ft { zen priyorite antre 0; aparèy = {eth0, wlan0}; }
    ...
    nft ajoute règ x avanse pwotokòl ip { tcp, udp } koule ajoute @ft

  • Amelyore sipò JSON.

Sous: opennet.ru

Add nouvo kòmantè