Utgivning av paketfiltern nftables 0.9.5

Publicerad utgivning av paketfilter nftables 0.9.5, som utvecklas som en ersÀttning för iptables, ip6tables, arptables och ebtables genom att förena grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbroar. Paketet nftables innehÄller komponenter för paketfiltrering som arbetar i anvÀndarrummet, medan subsystemet nf_tables i kÀrnan, som ingÄr i Linux-kÀrnan frÄn version 3.13, ansvarar för arbetet. NödvÀndiga Àndringar för att fÄ nftables 0.9.5 att fungera ingÄr i kÀrnan. Linux 5.7.

PÄ kÀrnnivÄ tillhandahÄlls endast ett gemensamt grÀnssnitt, oberoende av specifik protokoll och ger grundlÀggande funktioner för att extrahera data frÄn paket, utföra operationer med data och kontrollera flödet. Regler för filtrering och protokollspecifika behandlare kompileras direkt till bytekod i anvÀndarrummet, varefter denna bytekod laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell virtuell maskin som liknar BPF (Berkeley Packet Filters). Detta tillvÀgagÄngssÀtt möjliggör en betydande minskning av storleken pÄ filtreringskoden som körs pÄ kÀrnnivÄ och flyttar alla funktioner för reglerdjup och logik av protokoll till anvÀndarrummet.

Huvudsakliga nyheter:

  • I seten har stöd för paket- och trafikrĂ€knare lagts till, kopplade till setens element. RĂ€knare aktiveras med nyckelordet "counter":

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

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

  • För att stĂ€lla in initialvĂ€rden för rĂ€knarna, till exempel för att Ă„terstĂ€lla tidigare rĂ€knare efter en omstart, kan kommandot "nft -f" anvĂ€ndas:

    # cat ruleset.nft
    table 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 }
    }

    chain z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    # nft list ruleset
    table 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 }
    }

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

  • Stöd för rĂ€knare har ocksĂ„ lagts till i 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
    }
    }

    För att se listan över rÀknare kan kommandot "conntrack -L" anvÀndas:

    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

  • I anslutningssatser (concatenation, specifika kopplingar av adresser och portar som förenklar mappning) har möjligheten att anvĂ€nda direktivet "typeof" införts, vilket definierar datatyperna för element i komponenterna av satsen:

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

  • Direktivet typeof Ă€r nu ocksĂ„ tillĂ€mpligt för anslutningar i map-listor:

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

  • Stöd för anslutningar med intervaller har lagts till i anonyma (namnlösa) satsar:

    # 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

  • Möjlighet att förkasta paket med 802.1q (VLAN) -flaggor har erbjudits vid behandling av nĂ€tverksbryggor:

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

  • Stöd för mappning efter TCP-sessionens identifierare (conntrack ID) har lagts till. För att bestĂ€mma conntrack ID kan alternativet "--output id" anvĂ€ndas:

    # 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

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster