nftables Paketfilter 0.9.1 Verëffentlechung

No engem Joer vun Entwécklung presentéiert Pak Filter Fräisetzung nftables 0.9.1, entwéckelt als Ersatz fir iptables, ip6table, arptables an ebtables andeems Packet Filter Interfaces fir IPv4, IPv6, ARP an Netzwierkbrécke vereenegt ginn. Den nftables Package enthält Paketfilterkomponenten déi am Benotzerraum lafen, während d'Kernelniveau Aarbecht vum nf_tables Subsystem geliwwert gëtt, deen Deel vum Linux Kernel zënter der Verëffentlechung 3.13.

De Kernelniveau bitt nëmmen eng generesch protokollonofhängeg Interface déi Basisfunktiounen ubitt fir Daten aus Päckchen ze extrahieren, Datenoperatiounen auszeféieren a Flowkontrolle.
D'Filterlogik selwer a Protokollspezifesch Handler ginn an Bytecode am Benotzerraum zesummegesat, duerno gëtt dëse Bytecode an de Kernel gelueden mat der Netlink Interface an an enger spezieller virtueller Maschinn ausgefouert, déi un BPF (Berkeley Packet Filters) erënnert. Dës Approche erlaabt Iech d'Gréisst vum Filtercode deen um Kernelniveau leeft wesentlech ze reduzéieren an all d'Funktioune vu Parsingregelen a Logik fir mat Protokoller an de Benotzerraum ze réckelen.

Haaptinnovatiounen:

  • IPsec Ënnerstëtzung, erlaabt Matching vun Tunnel Adressen baséiert op Paket, IPsec Ufro ID, an SPI (Security Parameter Index) Tag. Zum Beispill,

    ... ipsec an IP saddr 192.168.1.0/24
    ... ipsec am spi 1-65536

    Et ass och méiglech ze kontrolléieren ob eng Streck duerch en IPsec Tunnel geet. Zum Beispill, fir de Traffic net iwwer IPSec ze blockéieren:

    ... filterausgang rt ipsec fehlend drop

  • Ënnerstëtzung fir IGMP (Internet Group Management Protocol). Zum Beispill kënnt Dir eng Regel benotzen fir opkommend IGMP Grupp Memberschaft Ufroen ze verweigeren

    nft add Regel netdev foo Bar igmp Typ Memberschaft-Ufro Konter drop

  • Méiglechkeet fir Variabelen ze benotzen fir Iwwergangsketten ze definéieren (sprangen / goto). Zum Beispill:

    definéieren dest = ber
    add Regel ip foo Bar sprangen $ dest

  • Ënnerstëtzung fir Masken fir Betribssystemer (OS Fangerofdrock) ze identifizéieren baséiert op TTL Wäerter am Header. Zum Beispill, fir Päckchen op Basis vum Sender OS ze markéieren, kënnt Dir de Kommando benotzen:

    ... meta mark set osf ttl skip name map { "Linux": 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "onbekannt" : 0x0 }
    ... osf ttl skip Versioun "Linux:4.20"

  • D'Kapazitéit fir d'ARP Adress vum Sender an d'IPv4 Adress vum Zilsystem ze passen. Zum Beispill, fir de Konter vun ARP Pakete vun der Adress 192.168.2.1 geschéckt ze erhéijen, kënnt Dir déi folgend Regel benotzen:

    Dësch arp x {
    Kette y {
    Typ Filter Haken Input Prioritéit Filter; Politik akzeptéieren;
    arp saddr IP 192.168.2.1 Konterpakete 1 Bytes 46
    }
    }

  • Ënnerstëtzung fir transparent Forwarding vun Ufroen duerch e Proxy (tproxy). Zum Beispill, fir Uriff op Port 80 op Proxy Port 8080 ze redirectéieren:

    Dësch ip x {
    Kette y {
    Typ Filterhaken Prerouting Prioritéit -150; Politik akzeptéieren;
    tcp dport 80 tproxy op:8080
    }
    }

  • Ënnerstëtzung fir Marquage Sockets mat der Fähegkeet de Set Mark iwwer setsockopt ze kréien () am SO_MARK Modus. Zum Beispill:

    Dësch inet x {
    Kette y {
    Typ Filterhaken Prerouting Prioritéit -150; Politik akzeptéieren;
    tcp dport 8080 Mark Set Socket Mark
    }
    }

  • Ënnerstëtzung fir Prioritéit Text Nimm fir Ketten uginn. Zum Beispill:

    nft add Kette ip x raw {Typ Filterhaken Prerouting Prioritéit raw; }
    nft add Kette ip x Filter {Typ Filterhaken Prerouting Prioritéit Filter; }
    nft add Kette ip x filter_later {Typ Filterhaken Prerouting Prioritéit Filter + 10; }

  • Ënnerstëtzung fir SELinux Tags (Secmark). Zum Beispill, fir den "sshtag" Tag an engem SELinux Kontext ze definéieren, kënnt Dir lafen:

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

    A benotzt dann dëse Label an de Regelen:

    nft add rule inet filter input tcp dport 22 meta secmark set "sshtag"

    nft add map inet filter secmapping {Typ inet_service: secmark; }
    nft add element inet filter secmapping { 22 : "sshtag" }
    nft add rule inet filter Input meta secmark set tcp dport map @secmapping

  • D'Kapazitéit fir Ports ze spezifizéieren, déi zu Protokoller an Textform zougewisen sinn, sou wéi se an der /etc/services Datei definéiert sinn. Zum Beispill:

    nft add rule xy tcp dport "ssh"
    nft Lëscht Regelen -l
    Dësch x {
    Kette y {
    ...
    tcp dport "ssh"
    }
    }

  • D'Kapazitéit fir d'Zort vum Netzwierk Interface ze kontrolléieren. Zum Beispill:

    add rule inet raw prerouting meta iifkind "vrf" akzeptéieren

  • Verbesserte Ënnerstëtzung fir dynamesch Aktualiséierung vum Inhalt vu Sätze andeems Dir den "dynamesche" Fändel explizit spezifizéiert. Zum Beispill, fir Set "s" ze aktualiséieren fir d'Quelladress ze addéieren an d'Entrée zréckzetrieden wann et keng Pakete fir 30 Sekonnen sinn:

    addéieren Dësch x
    add Set xs {Typ ipv4_addr; Gréisst 128; Timeout 30s; Fändelen dynamesch; }
    add Kette xy {Typ Filterhaken Input Prioritéit 0; }
    add Regel xy Update @s {ip saddr}

  • D'Kapazitéit fir eng separat Timeout-Konditioun ze setzen. Zum Beispill, fir de Standard-Timeout fir Päckchen ze iwwerschreiden, déi um Hafen 8888 ukommen, kënnt Dir uginn:

    Dësch IP Filter {
    ct Timeout aggressiv-tcp {
    Protokoll tcp;
    l3proto ip;
    Politik = {etabléiert: 100, close_wait: 4, zou: 4}
    }
    Kettenausgang {
    ...
    tcp dport 8888 ct timeout set "aggressive-tcp"
    }
    }

  • NAT Ënnerstëtzung fir inet Famill:

    Dësch inet nat {
    ...
    ip6 daddr dout::2::1 dnat zu dout:2::99
    }

  • Verbesserte Tippfeeler Berichterstattung:

    nft add Kettenfilter Test

    Feeler: Keng esou Datei oder Verzeechnes; hutt Dir den Dësch "Filter" an der Famill ip gemengt?
    derbäi Kette Filter Test
    ^^^^^^

  • D'Kapazitéit fir Interface Nimm a Sets ze spezifizéieren:

    set sc {
    Typ inet_service . ifnumm
    elements = { "ssh" . "eth0" }
    }

  • Aktualiséiert Flowtable Regelen Syntax:

    nft addéieren Dësch x
    nft add flowtable x ft {Hook ingress Prioritéit 0; Geräter = { eth0, wlan0 }; }
    ...
    nft add rule x forward ip protocol {tcp, udp} flow add @ft

  • Verbesserte JSON Ënnerstëtzung.

Source: opennet.ru

Setzt e Commentaire