Udviklingen af pakke-filteret nftables 0.9.2

Har fundet sted pakke-filter udgivelse nftables 0.9.2, som udvikler sig som en erstatning for iptables, ip6tables, arptables og ebtables ved at forene grænsefladerne til pakke filtrering for IPv4, IPv6, ARP og netværksbroer. I nftables-pakken indgår komponenter til pakke filtrering, der arbejder i brugerens rum, mens nf_tables-subsystemet, der er en del af Linux-kernen siden version 3.13, sørger for arbejdet på kerniveau. De nødvendige ændringer for at inkludere nftables 0.9.2 i Linux-kernen 5.3.

På kernel niveau tilbydes kun et generelt interface, der ikke er afhængigt af protokollen og giver grundlæggende funktioner til at udtrække data fra pakker, udføre operationer med data og kontrollere strømmen. Selve filtreringslogikken og protokolspecifikke håndterere kompilere til bytekode i brugerrummet, hvorefter denne bytekode indlæses i kernen via Netlink-grænsefladen og eksekveres i en speciel virtuel maskine, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion af størrelsen på den kode, der kører på kernel niveau, og flytter alle funktioner til regel analyse og protokol logik til brugerrummet.

Hovednyhederne:

  • Mulighed for at kontrollere portnummeret fra transportlagets header uafhængigt af protokoltypen på lag 4:

    add rule x y ip protocol { tcp, udp } th dport 53

  • Understøttelse af genopretning af livstidsværdi for elementmængden:

    add element ip x y { 1.1.1.1 timeout 30s expires 15s }

  • Mulighed for at kontrollere specifikke muligheder (lsrr, rr, ssrr og ra) fra IPv4-pakker:

    add rule x y ip option rr exists drop

    For ruteindstillinger kan felterne type, ptr, length og addr kontrolleres:

    add rule x y ip option rr type 1 drop

  • I udtryk er det nu tilladt at angive netværksprefixer og adresseintervaller:

    iifname ens3 snat to 10.0.0.0/28
    iifname ens3 snat to 10.0.0.1-10.0.0.15

  • Understøttelse af brugen af variabler i kæde definitioner:

    define default_policy = accept
    add chain ip foo bar { type filter hook input priority filter; policy $default_policy }

  • Angivelse af kædeprioritet kan nu ske både i numerisk og symbolsk form:

    define prio = filter
    define prionum = 10
    define prioffset = «filter — 150»

    add table ip foo
    add chain ip foo bar { type filter hook input priority $prio; }
    add chain ip foo ber { type filter hook input priority $prionum; }
    add chain ip foo bor { type filter hook input priority $prioffset; }

  • Understøttelse af synproxy-modulet er implementeret. For eksempel kan følgende regel sæt bruges til at beskytte TCP-port 8888 med synproxy:

    table ip x {
    chain y {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    chain z {
    type filter hook forward priority filter; policy accept;
    tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct state invalid drop
    }
    }

  • For at definere i conntrack-tabellen ekstra forbindelser, der forventes med den aktuelle forbindelse, som anvendes i protokoller og scenarier, der kræver oprettelse af flere forbindelser, kan politikker defineres via standard regelsæt. For eksempel, for at definere de efterfølgende forbindelser til TCP-port 5432 efter forbindelser til port 8888, kan følgende regler angives:

    table x {
    ct expectation myexpect {
    protocol tcp
    dport 5432
    timeout 1h
    size 12
    l3proto ip
    }

    chain input {
    type filter hook input priority 0;
    ct state new tcp dport 8888 ct expectation set myexpect
    ct state established,related counter accept
    }
    }

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster