nftables packet filter hoʻokuʻu 0.9.1

Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana hōʻike ʻia hoʻokuʻu kānana ʻeke nfttables 0.9.1, e hoʻomohala ana ma ke ʻano he pani no nā iptables, ip6table, arptables a me nā ebtables ma o ka hoʻohui ʻana i nā kānana kānana packet no IPv4, IPv6, ARP a me nā alahaka pūnaewele. Aia ka pūʻolo nftables i nā ʻāpana kānana packet e holo ana ma kahi o ka mea hoʻohana, aʻo ka hana kernel-level e hāʻawi ʻia e ka nf_tables subsystem, kahi ʻāpana o ka kernel Linux mai ka hoʻokuʻu ʻana iā 3.13.

Hāʻawi ka pae kernel i kahi kikowaena kūʻokoʻa protocol generic e hāʻawi i nā hana maʻamau no ka unuhi ʻana i ka ʻikepili mai nā ʻeke, ka hana ʻana i nā hana ʻikepili, a me ka mana kahe.
Hoʻopili ʻia ka loiloi kānana ponoʻī a me nā mea hoʻohana kikoʻī protocol i ka bytecode ma kahi o ka mea hoʻohana, a laila hoʻokomo ʻia kēia bytecode i loko o ka kernel me ka hoʻohana ʻana i ka interface Netlink a hoʻokō ʻia i kahi mīkini virtual kūikawā e hoʻomanaʻo ana i ka BPF (Berkeley Packet Filters). ʻO kēia ala e hiki ai iā ʻoe ke hōʻemi nui i ka nui o ke code kānana e holo ana ma ka pae kernel a neʻe i nā hana āpau o nā lula parsing a me nā loiloi no ka hana ʻana me nā protocols i loko o kahi mea hoʻohana.

Nā hana hou nui:

  • Kākoʻo IPsec, e ʻae ana i ka hoʻohālikelike ʻana i nā helu tunnel e pili ana i ka packet, IPsec noi ID, a me ka tag SPI (Security Parameter Index). ʻo kahi laʻana,

    ... ipsec i ka ip saddr 192.168.1.0/24
    ... ipsec ma spi 1-65536

    Hiki nō hoʻi ke nānā inā e hele ana kahi ala i kahi tunnel IPsec. No ka laʻana, e ālai i ke kaʻa ʻaʻole ma o IPSec:

    … kānana puka rt ipsec hāʻule nalo

  • Kākoʻo no IGMP (Internet Group Management Protocol). No ka laʻana, hiki iā ʻoe ke hoʻohana i ke kānāwai e hoʻolei i nā noi lālā o ka hui IGMP

    nft hoʻohui i ka lula netdev foo bar igmp ʻano lālā-query counter drop

  • Hiki ke hoʻohana i nā mea hoʻololi e wehewehe i nā kaulahao hoʻololi (lele / goto). ʻo kahi laʻana:

    wehewehe dest = ber
    hoʻohui i ka lula ip foo bar jump $dest

  • Kākoʻo no nā masks e ʻike i nā ʻōnaehana hana (OS Fingerprint) e pili ana i nā waiwai TTL ma ke poʻo. No ka laʻana, e hōʻailona i nā ʻeke e pili ana i ka OS hoʻouna, hiki iā ʻoe ke hoʻohana i ke kauoha:

    ... hoʻonohonoho ʻia ka māka meta osf ttl skip name map { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "ʻike ʻole" : 0x0 }
    ... osf ttl skip version "Linux:4.20"

  • Hiki ke hoʻohālikelike i ka helu ARP o ka mea hoʻouna a me ka helu IPv4 o ka ʻōnaehana pahuhopu. No ka laʻana, e hoʻonui i ka counter o nā ʻeke ARP i hoʻouna ʻia mai ka helu helu 192.168.2.1, hiki iā ʻoe ke hoʻohana i kēia lula:

    papa arp x {
    kaulahao y {
    ʻano kānana hoʻokomo hoʻokomo kānana manaʻo; ʻae i nā kulekele;
    arp saddr ip 192.168.2.1 pākeke 1 byte 46
    }
    }

  • Kākoʻo no ka hoʻouna maopopo ʻana i nā noi ma o kahi proxy (tproxy). No ka laʻana, e hoʻohuli hou i nā kelepona i ke awa 80 i ke awa koho 8080:

    papa ip x {
    kaulahao y {
    ʻano kānana hook prerouting priority -150; ʻae i nā kulekele;
    tcp dport 80 tproxy i:8080
    }
    }

  • Kākoʻo no ka mākaʻikaʻi ʻana i nā kumu me ka hiki ke loaʻa hou i ka hōʻailona hoʻonohonoho ma o setsockopt () ma ke ʻano SO_MARK. ʻo kahi laʻana:

    papa inet x {
    kaulahao y {
    ʻano kānana hook prerouting priority -150; ʻae i nā kulekele;
    tcp dport 8080 hōʻailona hoʻonohonoho i ka hōʻailona kumu
    }
    }

  • Kākoʻo no ka wehewehe ʻana i nā inoa kikokikona mua no nā kaulahao. ʻo kahi laʻana:

    nft hoʻohui i ke kaulahao ip x raw { type filter hook prerouting priority raw; }
    nft hoʻohui i ke kaulahao ip x kānana { type filter hook prerouting priority filter; }
    nft hoʻohui i ke kaulahao ip x filter_later { type filter hook prerouting priority filter + 10; }

  • Kākoʻo no nā hōʻailona SELinux (Secmark). No ka laʻana, e wehewehe i ka "sshtag" tag i loko o kahi pōʻaiapili SELinux, hiki iā ʻoe ke holo:

    nft hoʻohui i ka secmark inet kānana sshtag "system_u: object_r: ssh_server_packet_t: s0"

    A laila e hoʻohana i kēia lepili i nā lula:

    nft hoʻohui i ka lula inet filter input tcp dport 22 meta secmark set "sshtag"

    nft hoʻohui palapala inet kānana secmapping { ʻano inet_service : secmark; }
    nft hoʻohui i ka mea kānana inet kānana secmapping { 22 : "sshtag" }
    nft hoʻohui i ka lula inet filter input meta secmark set tcp dport map @secmapping

  • Hiki ke kuhikuhi i nā awa i hāʻawi ʻia i nā protocols ma ke ʻano kikokikona, e like me ka wehewehe ʻana ma ka faila /etc/services. ʻo kahi laʻana:

    nft hoʻohui i ka lula x y tcp dport "ssh"
    nft papa helu lula -l
    papa x {
    kaulahao y {
    ...
    tcp dport "ssh"
    }
    }

  • Hiki ke nānā i ke ʻano o ke kikowaena pūnaewele. ʻo kahi laʻana:

    hoʻohui i ke kānāwai inet raw prerouting meta iifkind "vrf" ʻae

  • Hoʻomaikaʻi i ke kākoʻo no ka hoʻohou hou ʻana i nā ʻike o nā pūʻulu ma ka wehewehe ʻana i ka hae "dynamic". No ka laʻana, e hoʻohou i ka set "s" e hoʻohui i ka helu kumu a hoʻonohonoho hou i ke komo inā ʻaʻohe ʻeke no 30 kekona:

    hoʻohui i ka pākaukau x
    hoʻohui i hoʻonohonoho x s { type ipv4_addr; nui 128; manawa pau 30s; hae hae; }
    hoʻohui i ke kaulahao x y { ʻano kānana makau hoʻokomo mua 0; }
    hoʻohui i ka lula x y hōʻano hou @s { ip saddr }

  • Hiki ke hoʻonohonoho i kahi kūlana manawa kaʻawale. No ka laʻana, no ka hoʻopau ʻana i ka manawa paʻamau no nā ʻeke e hōʻea ana ma ke awa 8888, hiki iā ʻoe ke kuhikuhi:

    papa ip kānana {
    ct manawa hoʻopau ʻino-tcp {
    protocol tcp;
    l3proto ip;
    kulekele = {hoʻokumu: 100, pani_kali: 4, pani: 4}
    }
    kaulahao puka {
    ...
    tcp dport 8888 ct manawa pau i hoʻonohonoho ʻia "aggressive-tcp"
    }
    }

  • Kākoʻo NAT no ka ʻohana inet:

    papa inet nat {
    ...
    ip6 daddr make::2::1 dnat to make:2::99
    }

  • Ua hoʻomaikaʻi ʻia ka hōʻike hewa typo:

    nft add chain filter test

    Hapa: ʻAʻohe faila a papa kuhikuhi paha; ʻO kāu i manaʻo ai i ka papaʻaina "kāna" ma ka ʻohana ip?
    hoʻohui i ka hoʻāʻo kānana kaulahao
    ^^^^^^

  • Hiki ke kuhikuhi i nā inoa interface ma nā pūʻulu:

    hoʻonoho sc {
    ʻano inet_service . ifname
    mau mea = { "ssh" . "eth0" }
    }

  • Hōʻano hou ʻia ka syntax nā lula kahe:

    nft hoʻohui i ka pākaukau x
    nft hoʻohui i ka papa hoʻoheheʻe x ft { ka mea nui e komo ai i ka makau 0; nā mea hana = { eth0, wlan0 }; }
    ...
    nft hoʻohui lula x i mua ip protocol { tcp, udp } kahe hoʻohui @ft

  • Hoʻomaikaʻi ʻia ke kākoʻo JSON.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka