nftables packet filter 0.9.1 nga pagpagawas

Human sa usa ka tuig nga kalamboan gipresentar pagpagawas sa packet filter nftables 0.9.1, nag-develop isip kapuli sa mga iptable, ip6table, arptables ug ebtables pinaagi sa paghiusa sa mga packet filtering interface para sa IPv4, IPv6, ARP ug network bridges. Ang nftables package naglakip sa packet filter components nga nagdagan sa user space, samtang ang kernel-level work gihatag sa nf_tables subsystem, nga nahimong bahin sa Linux kernel sukad sa pagpagawas sa 3.13.

Ang lebel sa kernel naghatag lamang sa usa ka generic nga protocol-independent nga interface nga naghatag og mga batakang gimbuhaton alang sa pagkuha sa datos gikan sa mga pakete, paghimo sa mga operasyon sa datos, ug pagkontrol sa dagan.
Ang filtering logic mismo ug protocol-specific handlers gihugpong ngadto sa bytecode sa user space, pagkahuman niini nga bytecode gikarga sa kernel gamit ang Netlink interface ug gipatuman sa usa ka espesyal nga virtual machine nga nagpahinumdom sa BPF (Berkeley Packet Filters). Kini nga pamaagi nagtugot kanimo nga makunhuran ang gidak-on sa code sa pagsala nga nagdagan sa lebel sa kernel ug ibalhin ang tanan nga mga gimbuhaton sa mga lagda sa pag-parse ug lohika alang sa pagtrabaho kauban ang mga protocol sa wanang sa gumagamit.

Panguna nga mga inobasyon:

  • Ang suporta sa IPsec, nga nagtugot sa pagpares sa mga adres sa tunnel base sa packet, IPsec request ID, ug SPI (Security Parameter Index) tag. Pananglitan,

    ... ipsec sa ip saddr 192.168.1.0/24
    ... ipsec sa spi 1-65536

    Posible usab nga susihon kung ang usa ka ruta moagi sa usa ka tunel sa IPsec. Pananglitan, aron babagan ang trapiko dili pinaagi sa IPSec:

    … filter output rt ipsec nawala drop

  • Suporta alang sa IGMP (Internet Group Management Protocol). Pananglitan, mahimo nimong gamiton ang usa ka lagda aron isalikway ang umaabot nga mga hangyo sa membership sa grupo sa IGMP

    nft add rule netdev foo bar igmp type membership-query counter drop

  • Posibilidad sa paggamit sa mga variable aron mahibal-an ang mga kadena sa pagbalhin (jump / goto). Pananglitan:

    define dest = ber
    idugang ang lagda ip foo bar jump $dest

  • Suporta alang sa mga maskara aron mahibal-an ang mga operating system (OS Fingerprint) base sa mga kantidad sa TTL sa header. Pananglitan, aron markahan ang mga packet base sa sender OS, mahimo nimong gamiton ang command:

    ... meta mark set osf ttl skip name map {"Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "wala mailhi": 0x0}
    ... osf ttl laktawan ang bersyon "Linux:4.20"

  • Abilidad sa pagpares sa ARP address sa nagpadala ug sa IPv4 address sa target nga sistema. Pananglitan, aron madugangan ang counter sa mga pakete sa ARP nga gipadala gikan sa adres nga 192.168.2.1, mahimo nimong gamiton ang mosunod nga lagda:

    lamesa arp x {
    kadena y {
    type filter hook input priority filter; pagdawat sa palisiya;
    arp saddr ip 192.168.2.1 counter packets 1 bytes 46
    }
    }

  • Suporta alang sa transparent nga pagpasa sa mga hangyo pinaagi sa proxy (tproxy). Pananglitan, sa pag-redirect sa mga tawag sa port 80 ngadto sa proxy port 8080:

    lamesa ip x {
    kadena y {
    type filter hook prerouting priority -150; pagdawat sa palisiya;
    tcp dport 80 tproxy ngadto sa:8080
    }
    }

  • Suporta alang sa pagmarka sa mga socket nga adunay abilidad sa dugang nga pagkuha sa set nga marka pinaagi sa setsockopt() sa SO_MARK mode. Pananglitan:

    lamesa inet x {
    kadena y {
    type filter hook prerouting priority -150; pagdawat sa palisiya;
    Ang tcp dport 8080 nga marka nagbutang sa marka sa socket
    }
    }

  • Suporta alang sa pagpiho sa prayoridad nga mga ngalan sa teksto alang sa mga kadena. Pananglitan:

    nft add chain ip x raw {type filter hook prerouting priority raw; }
    nft add chain ip x filter {type filter hook prerouting priority filter; }
    nft add chain ip x filter_later { type filter hook prerouting priority filter + 10; }

  • Suporta alang sa SELinux tags (Secmark). Pananglitan, aron mahibal-an ang "sshtag" nga tag sa konteksto sa SELinux, mahimo nimong dagan:

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

    Ug dayon gamita kini nga label sa mga lagda:

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

    nft add map inet filter secmapping {type inet_service: secmark; }
    nft pagdugang elemento inet filter secmapping {22: "sshtag"}
    nft add rule inet filter input meta secmark set tcp dport map @secmapping

  • Kaarang sa pagtino sa mga pantalan nga gi-assign sa mga protocol sa porma sa teksto, ingon nga kini gihubit sa file nga /etc/services. Pananglitan:

    nft idugang ang lagda xy tcp dport "ssh"
    nft list ruleset -l
    lamesa x {
    kadena y {
    ...
    tcp dport "ssh"
    }
    }

  • Abilidad sa pagsusi sa matang sa network interface. Pananglitan:

    add rule inet raw prerouting meta iifkind "vrf" accept

  • Gipauswag nga suporta alang sa dinamikong pag-update sa mga sulud sa mga set pinaagi sa dayag nga pagtino sa "dinamikong" bandila. Pananglitan, sa pag-update sa set "s" aron idugang ang tinubdan nga adres ug i-reset ang entry kung walay mga pakete sulod sa 30 segundos:

    idugang ang lamesa x
    idugang set xs {type ipv4_addr; gidak-on 128; timeout 30s; dinamikong mga bandila; }
    idugang ang chain xy {type filter hook input priority 0; }
    idugang ang lagda xy update @s { ip saddr }

  • Abilidad sa pagtakda sa usa ka bulag nga kahimtang sa timeout. Pananglitan, aron ma-override ang default timeout para sa mga packet nga moabot sa port 8888, mahimo nimong ipiho:

    lamesa ip filter {
    ct timeout agresibo-tcp {
    protocol tcp;
    l3proto ip;
    polisiya = {established: 100, close_wait: 4, close: 4}
    }
    kadena nga output {
    ...
    tcp dport 8888 ct timeout set "agresibo-tcp"
    }
    }

  • Suporta sa NAT alang sa inet nga pamilya:

    lamesa inet nat {
    ...
    ip6 daddr patay::2::1 dnat sa patay:2::99
    }

  • Mas maayo nga typo error reporting:

    nft add chain filter test

    Sayop: Walay ingon nga file o direktoryo; ang imong gipasabot nga table "filter" sa family ip?
    idugang ang pagsulay sa pagsala sa kadena
    ^^^^^^

  • Abilidad sa pagtino sa mga ngalan sa interface sa mga set:

    ibutang ang sc {
    type inet_service . ifname
    elemento = { "ssh". "eth0" }
    }

  • Gi-update nga flowtable rules syntax:

    nft idugang ang lamesa x
    nft add flowtable x ft { hook ingress priority 0; mga himan = { eth0, wlan0 }; }
    ...
    nft add rule x forward ip protocol {tcp, udp} flow add @ft

  • Gipauswag nga suporta sa JSON.

Source: opennet.ru

Idugang sa usa ka comment