nftables packet filter 0.9.1 rilaxx

Wara sena ta 'żvilupp ippreżentata rilaxx tal-filtru tal-pakkett nftables 0.9.1, tiżviluppa bħala sostitut għal iptables, ip6table, arptables u ebtables billi tgħaqqad l-interfaces tal-filtrazzjoni tal-pakketti għall-IPv4, IPv6, ARP u pontijiet tan-netwerk. Il-pakkett nftables jinkludi komponenti tal-filtri tal-pakketti li jaħdmu fl-ispazju tal-utent, filwaqt li x-xogħol fil-livell tal-kernel huwa pprovdut mis-subsistema nf_tables, li ilha parti mill-kernel tal-Linux sa mir-rilaxx 3.13.

Il-livell tal-qalba jipprovdi biss interface ġeneriku indipendenti mill-protokoll li jipprovdi funzjonijiet bażiċi għall-estrazzjoni tad-dejta minn pakketti, it-twettiq ta 'operazzjonijiet tad-dejta, u l-kontroll tal-fluss.
Il-loġika tal-filtrazzjoni nnifisha u handlers speċifiċi għall-protokoll huma kkompilati f'bytecode fl-ispazju tal-utent, u wara dan il-bytecode jitgħabba fil-qalba bl-użu tal-interface Netlink u eżegwit f'magna virtwali speċjali li tfakkar fil-BPF (Berkeley Packet Filters). Dan l-approċċ jippermettilek tnaqqas b'mod sinifikanti d-daqs tal-kodiċi tal-filtrazzjoni li taħdem fil-livell tal-qalba u tmexxi l-funzjonijiet kollha tal-parsing tar-regoli u l-loġika biex taħdem bi protokolli fl-ispazju tal-utent.

Innovazzjonijiet ewlenin:

  • Appoġġ IPsec, li jippermetti t-tqabbil tal-indirizzi tal-mini bbażat fuq pakkett, ID ta 'talba IPsec, u tag SPI (Indiċi tal-Parametru tas-Sigurtà). Pereżempju,

    ... ipsec fl-ip saddr 192.168.1.0/24
    ... ipsec in spi 1-65536

    Huwa wkoll possibbli li tiċċekkja jekk rotta tgħaddix minn mina IPsec. Pereżempju, biex timblokka t-traffiku mhux permezz tal-IPSec:

    … filtru output rt ipsec qatra nieqsa

  • Appoġġ għall-IGMP (Internet Group Management Protocol). Pereżempju, tista' tuża regola biex tarmi t-talbiet ta' sħubija fil-grupp IGMP li jkunu deħlin

    nft żid regola netdev foo bar igmp tip sħubija-query counter drop

  • Possibbiltà li jintużaw varjabbli biex jiddefinixxu ktajjen ta 'tranżizzjoni (jump / goto). Pereżempju:

    define dest = ber
    żid regola ip foo bar jump $dest

  • Appoġġ għal maskri biex jidentifikaw sistemi operattivi (OS Fingerprint) ibbażati fuq valuri TTL fl-header. Pereżempju, biex timmarka pakketti bbażati fuq l-OS li jibgħat, tista' tuża l-kmand:

    ... meta mark set osf ttl skip name map { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "mhux magħruf" : 0x0}
    ... osf ttl skip version "Linux:4.20"

  • Kapaċità li tqabbel l-indirizz ARP tal-mittent u l-indirizz IPv4 tas-sistema fil-mira. Pereżempju, biex iżżid il-counter ta 'pakketti ARP mibgħuta mill-indirizz 192.168.2.1, tista' tuża r-regola li ġejja:

    tabella arp x {
    katina y {
    tip filtru ganċ input filtru prijoritarju; politika taċċetta;
    arp saddr ip 192.168.2.1 counter packets 1 bytes 46
    }
    }

  • Appoġġ għal trażmissjoni trasparenti ta' talbiet permezz ta' prokura (tproxy). Pereżempju, biex terġa 'tidderieġi sejħiet lejn il-port 80 lejn il-port prokura 8080:

    tabella ip x {
    katina y {
    tip filtru ganċ prerouting prijorità -150; politika taċċetta;
    tcp dport 80 tproxy għal:8080
    }
    }

  • Appoġġ għall-immarkar ta 'sokits bil-kapaċità li tkompli tikseb il-marka stabbilita permezz ta' setsockopt() fil-mod SO_MARK. Pereżempju:

    tabella inet x {
    katina y {
    tip filtru ganċ prerouting prijorità -150; politika taċċetta;
    tcp dport 8080 marka sett sokit marka
    }
    }

  • Appoġġ għall-ispeċifikazzjoni ta' ismijiet ta' test ta' prijorità għal ktajjen. Pereżempju:

    nft add chain ip x raw { tip filtru hook prerouting prijorità prima; }
    nft add chain ip x filter { tip filtru hook prerouting filtru prijoritarju; }
    nft żid katina ip x filter_later { tip filtru hook prerouting filtru prijoritarju + 10; }

  • Appoġġ għat-tikketti SELinux (Secmark). Pereżempju, biex tiddefinixxi t-tikketta "sshtag" f'kuntest SELinux, tista' tmexxi:

    nft żid secmark inet filter sshtag "system_u:object_r:ssh_server_packet_t:s0"

    U mbagħad uża din it-tikketta fir-regoli:

    nft żid regola inet filtru input tcp dport 22 meta secmark issettja “sshtag”

    nft żid mappa inet filter secmapping { tip inet_service : secmark; }
    nft żid element inet filter secmapping { 22 : "sshtag" }
    nft żid regola inet filtru input meta secmark issettja tcp dport map @secmapping

  • Kapaċità li tispeċifika portijiet assenjati għal protokolli f'forma ta 'test, kif huma definiti fil-fajl /etc/services. Pereżempju:

    nft żid regola xy tcp dport "ssh"
    nft list ruleset -l
    tabella x {
    katina y {
    ...
    tcp dport "ssh"
    }
    }

  • Kapaċità li tivverifika t-tip ta 'interface tan-netwerk. Pereżempju:

    żid regola inet raw prerouting meta iifkind "vrf" jaċċetta

  • Appoġġ imtejjeb għall-aġġornament dinamiku tal-kontenut tas-settijiet billi tispeċifika b'mod espliċitu l-bandiera "dinamika". Pereżempju, biex taġġorna s-sett "s" biex iżżid l-indirizz tas-sors u reset id-dħul jekk ma jkunx hemm pakketti għal 30 sekonda:

    żid it-tabella x
    żid sett xs { tip ipv4_addr; daqs 128; timeout 30s; bnadar dinamiċi; }
    żid katina xy { tip filtru ganċ input prijorità 0; }
    żid ir-regola xy update @s { ip saddr }

  • Kapaċità li tissettja kundizzjoni ta' timeout separata. Pereżempju, biex tegħleb il-timeout default għall-pakketti li jaslu fuq il-port 8888, tista' tispeċifika:

    filtru ip tabella {
    ct timeout aggressiv-tcp {
    protokoll tcp;
    l3proto ip;
    policy = {stabbilit: 100, close_wait: 4, close: 4}
    }
    output tal-katina {
    ...
    tcp dport 8888 ct timeout issettjat "aggressive-tcp"
    }
    }

  • Appoġġ NAT għall-familja inet:

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

  • Rappurtar imtejjeb tal-iżbalji tat-typo:

    nft żid test tal-filtru tal-katina

    Żball: L-ebda fajl jew direttorju bħal dan; Ridt tfisser tabella "filtru" fl-ip tal-familja?
    żid it-test tal-filtru tal-katina
    ^^^^^^

  • Kapaċità li tispeċifika l-ismijiet tal-interface f'settijiet:

    issettja sc {
    tip inet_service . ifname
    elementi = { "ssh" . "eth0"}
    }

  • Sintassi aġġornata tar-regoli tal-flowtable:

    nft żid tabella x
    nft żid flowtable x ft { prijorità tad-dħul tal-ganċ 0; apparati = { eth0, wlan0 }; }
    ...
    nft żid regola x forward ip protocol { tcp, udp } flow add @ft

  • Appoġġ JSON imtejjeb.

Sors: opennet.ru

Żid kumment