nftables pakketfilter release 0.9.3

gepubliceerd vrijgeven van pakketfilters ftables 0.9.3, ontwikkeld als vervanging voor iptables, ip6table, arptables en ebtables door pakketfilterinterfaces voor IPv4, IPv6, ARP en netwerkbruggen te verenigen. Het nftables-pakket bevat pakketfiltercomponenten die in de gebruikersruimte draaien, terwijl het werk op kernelniveau wordt geleverd door het nf_tables-subsysteem, dat sinds release 3.13 deel uitmaakt van de Linux-kernel. De wijzigingen die nodig zijn om de nftables 0.9.3-release te laten werken, zijn opgenomen in de komende Linux 5.5-kerneltak.

Het kernelniveau biedt alleen een generieke protocol-onafhankelijke interface die basisfuncties biedt voor het extraheren van gegevens uit pakketten, het uitvoeren van gegevensbewerkingen en stroomcontrole. De filterlogica zelf en protocolspecifieke handlers worden in de gebruikersruimte gecompileerd tot bytecode, waarna deze bytecode via de Netlink-interface in de kernel wordt geladen en wordt uitgevoerd in een speciale virtuele machine die doet denken aan BPF (Berkeley Packet Filters). Met deze aanpak kunt u de grootte van de filtercode die op kernelniveau wordt uitgevoerd aanzienlijk verkleinen en alle functies van parseerregels en logica voor het werken met protocollen naar de gebruikersruimte verplaatsen.

Belangrijkste innovaties:

  • Ondersteuning voor het matchen van pakketten op tijd. U kunt zowel het tijd- als het datumbereik definiëren waarin de regel wordt geactiveerd, en u kunt het activeren op afzonderlijke dagen van de week configureren. Ook een nieuwe optie "-T" toegevoegd om de tijd in seconden weer te geven.

    metatijd \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    meta-uur \"17:00\" - \"19:00\"
    metadag \"vrij\"

  • Ondersteuning voor het herstellen en opslaan van SELinux-markeringen (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Ondersteuning voor synproxy-kaartlijsten, waardoor u meer dan één regel per backend kunt definiëren.

    tafel ip foo {
    synproxy https-synproxy {
    mss 1460
    wschaal 7
    tijdstempel zak-perm
    }

    synproxy andere-synproxy {
    mss 1460
    wschaal 5
    }

    keten pre {
    type filter hook prerouting prioriteit raw; beleid accepteren;
    tcp dport 8888 tcp-vlaggen syn notrack
    }

    kettingblad {
    type filterhaak voorwaarts prioriteitsfilter; beleid accepteren;
    ct-status ongeldige, niet-bijgehouden synproxynaam ip saddr-kaart {192.168.1.0/24: "https-synproxy", 192.168.2.0/24: "andere-synproxy" }
    }
    }

  • De mogelijkheid om ingestelde elementen dynamisch uit pakketverwerkingsregels te verwijderen.

    nft regel toevoegen ... verwijder @set5 { ip6 saddr . ip6 vaderdr}

  • Ondersteuning voor VLAN-toewijzing op basis van ID en protocol gedefinieerd in de metadata van de netwerkbruginterface;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Optie "-t" ("--terse") om elementen van setsets uit te sluiten bij het weergeven van regels. Het uitvoeren van "nft -t list regelset" zal het volgende opleveren:

    tabel ip x {
    stel y {
    typ ipv4_adr
    }
    }

    En met “nft-lijstregelset”

    tabel ip x {
    stel y {
    typ ipv4_adr
    elementen = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34}
    }
    }

  • Mogelijkheid om meer dan één apparaat in netdev-ketens te specificeren (werkt alleen met kernel 5.5) om algemene filterregels te combineren.

    voeg tabel netdev x toe
    keten netdev xy toevoegen { \
    type filter hook ingress devices = { eth0, eth1 } prioriteit 0;
    }

  • Mogelijkheid om beschrijvingen van gegevenstypen toe te voegen.

    #nft beschrijft ipv4_adr
    datatype ipv4_addr (IPv4-adres) (basistype geheel getal), 32 bits

  • Mogelijkheid om een ​​CLI-interface te bouwen met de linenoise-bibliotheek in plaats van libreadline.

    ./configure --with-cli=linenoise

Bron: opennet.ru

Voeg een reactie