nftables pakete iragazkiaren bertsioa 0.9.1

Urtebeteko garapenaren ostean aurkeztu pakete-iragazkia askatzea nftables 0.9.1, iptables, ip6table, arptables eta ebtables ordezko gisa garatuz, paketeak iragazteko interfazeak bateratuz IPv4, IPv6, ARP eta sareko zubietarako. nftables paketeak erabiltzailearen espazioan exekutatzen diren pakete-iragazki osagaiak biltzen ditu, kernel-mailako lana, berriz, nf_tables azpisistemak eskaintzen du, 3.13 bertsiotik Linux nukleoaren parte izan dena.

Nukleo-mailak protokolotik independentea den interfaze generiko bat eskaintzen du, paketeetatik datuak ateratzeko, datu-eragiketak egiteko eta fluxu-kontrolerako oinarrizko funtzioak eskaintzen dituena.
Iragazte-logika bera eta protokoloaren berariazko kudeatzaileak bytecode batean konpilatzen dira erabiltzailearen espazioan, eta ondoren bytekode hau nukleoan kargatzen da Netlink interfazea erabiliz eta BPF (Berkeley Packet Filters) gogorarazten duen makina birtual berezi batean exekutatzen da. Ikuspegi honek nukleo mailan exekutatzen den iragazketa-kodearen tamaina nabarmen murrizteko eta protokoloekin lan egiteko analisi-arauak eta logika funtzio guztiak erabiltzaileen espaziora eraman ditzakezu.

Berrikuntza nagusiak:

  • IPsec euskarria, tuneleko helbideak paketean, IPsec eskaeraren IDan eta SPI (Segurtasun Parametroen Indizea) etiketaren arabera lotzea ahalbidetuz. Adibidez,

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

    Ibilbide bat IPsec tunel batetik pasatzen den egiaztatzeko aukera ere badago. Adibidez, IPSec bidez ez dagoen trafikoa blokeatzeko:

    … iragazki irteera rt ipsec tanta falta da

  • IGMP (Internet Group Management Protocol) euskarria. Esate baterako, arau bat erabil dezakezu sarrerako IGMP taldeko kidetze-eskaerak baztertzeko

    nft gehitu araua netdev foo bar igmp mota kidetza-kontsulta-kontagailua jaitsiera

  • Trantsizio-kateak definitzeko aldagaiak erabiltzeko aukera (jauzi / goto). Adibidez:

    definitu dest = ber
    gehitu araua ip foo barra salto $dest

  • Sistema eragileak (OS Fingerprint) identifikatzeko maskarentzako laguntza goiburuko TTL balioetan oinarrituta. Adibidez, igorlearen sistema eragilean oinarritutako paketeak markatzeko, komandoa erabil dezakezu:

    ... meta mark set osf ttl saltatu izena mapa { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "ezezaguna" : 0x0}
    ... osf ttl saltatu bertsioa "Linux:4.20"

  • Igorlearen ARP helbidea eta xede-sistemaren IPv4 helbidea bat etortzeko gaitasuna. Adibidez, 192.168.2.1 helbidetik bidalitako ARP paketeen kontadorea handitzeko, honako arau hau erabil dezakezu:

    taula arp x {
    katea y {
    type filter hook input priority filter; policy accept;
    arp saddr ip 192.168.2.1 kontagailu paketeak 1 byte 46
    }
    }

  • Proxy (tproxy) bidez eskaerak gardena bidaltzeko laguntza. Adibidez, 80 atakarako deiak 8080 proxy atakara birbideratzeko:

    taula ip x {
    katea y {
    mota iragazkia kako prerouting lehentasuna -150; politika onartu;
    tcp dport 80 tproxy: 8080ra
    }
    }

  • SO_MARK moduan setsockopt() bidez ezarritako marka gehiago lortzeko gaitasuna duten socketak markatzeko laguntza. Adibidez:

    taula inet x {
    katea y {
    mota iragazkia kako prerouting lehentasuna -150; politika onartu;
    tcp dport 8080 mark ezarri socket marka
    }
    }

  • Kateetarako lehentasunezko testu-izenak zehazteko laguntza. Adibidez:

    nft add chain ip x raw { type filter hook prerouting lehentasuna raw; }
    nft add chain ip x filter { type filter hook prerouting lehentasun-iragazkia; }
    nft add chain ip x filter_later { type filter hook prerouting lehentasun-iragazkia + 10; }

  • SELinux etiketen laguntza (Secmark). Adibidez, "sshtag" etiketa SELinux testuinguru batean definitzeko, exekutatu dezakezu:

    nft gehitu secmark inet iragazkia sshtag "system_u:object_r:ssh_server_packet_t:s0"

    Eta gero erabili etiketa hau arauetan:

    nft gehitu araua inet iragazkia sarrera tcp dport 22 meta sekmark ezarri "sshtag"

    nft gehitu mapa inet iragazkia secmapping { type inet_service : secmark; }
    nft gehitu elementua inet iragazkia secmapping { 22 : "sshtag" }
    nft gehitu araua inet filter input meta secmark set tcp dport map @secmapping

  • Protokoloei esleitutako atakak testu moduan zehazteko gaitasuna, /etc/services fitxategian definituta dauden bezala. Adibidez:

    nft gehitu araua xy tcp dport "ssh"
    nft zerrendako arau multzoa -l
    taula x {
    katea y {
    ...
    tcp dport "ssh"
    }
    }

  • Sare-interfaze mota egiaztatzeko gaitasuna. Adibidez:

    gehitu araua inet raw prerouting meta iifkind "vrf" onartu

  • Multzoen edukia dinamikoki eguneratzeko euskarria hobetu da "dinamiko" bandera esplizituki zehaztuta. Adibidez, "s" multzoa eguneratzeko iturburu-helbidea gehitzeko eta sarrera berrezarri 30 segundotan paketerik ez badago:

    gehitu taula x
    gehitu xs multzoa { type ipv4_addr; 128 tamaina; denbora-muga 30s; banderak dinamikoak; }
    add chain xy { type filter hook sarrerako lehentasuna 0; }
    gehitu araua xy eguneratzea @s { ip saddr }

  • Denbora-muga baldintza bereizi bat ezartzeko gaitasuna. Adibidez, 8888 atakatik iristen diren paketeen denbora-muga lehenetsia gainidazteko, zehaztu dezakezu:

    taula ip iragazkia {
    ct timeout oldarkorra-tcp {
    protokoloa tcp;
    l3proto ip;
    politika = {established: 100, close_wait: 4, close: 4}
    }
    kate irteera {
    ...
    tcp dport 8888 ct denbora-muga ezarri "aggressive-tcp"
    }
    }

  • NAT laguntza inet familiarako:

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

  • Akats ortografikoen berri ematea hobetu da:

    nft gehitu kate-iragazkia proba

    Errorea: ez dago horrelako fitxategirik edo direktoriorik; Taula "iragazkia" esan nahi al zenuen familiaren ip-ean?
    gehitu kate-iragazkia proba
    ^^^^^^

  • Interfazearen izenak multzoetan zehazteko gaitasuna:

    ezarri sc {
    idatzi inet_service . bada izena
    elementuak = { "ssh" . "eth0"}
    }

  • Fluxu-taula-arauen sintaxia eguneratua:

    nft gehitu taula x
    nft add flowtable x ft { hook ingress lehentasuna 0; gailuak = { eth0, wlan0 }; }
    ...
    nft gehitu araua x aurrera ip protokoloa { tcp, udp } flow gehitu @ft

  • JSON laguntza hobetua.

Iturria: opennet.ru

Gehitu iruzkin berria