Издаден пакетен филтър nftables 0.9.3

Публикувано издаване на пакетен филтър nftables 0.9.3, който се развива като заместител на iptables, ip6tables, arptables и ebtables чрез унификация на интерфейсите за филтриране на пакети за IPv4, IPv6, ARP и мрежови мостове. В пакет nftables влизат компоненти на пакетния филтър, работещи в пространството на потребителя, докато на ниво ядро работата се осигурява от подсистемата nf_tables, която е част от ядрото на Linux от версия 3.13. Необходимите промени за работа с nftables 0.9.3 са включени в бъдещата версия на ядрото на Linux 5.5.

На ниво ядро се предоставя само общ интерфейс, независим от конкретен протокол и осигуряващ основни функции за извличане на данни от пакети, извършване на операции с данни и управление на потока. Логиката за филтриране и специфичните за протоколите обработчици се компилират в байткод в потребителското пространство, след което този байткод се зарежда в ядрото чрез интерфейса Netlink и се изпълнява в специална виртуална машина, подобна на BPF (Berkeley Packet Filters). Подобен подход позволява значително да се намали размерът на кода за филтриране, работещ на ниво ядро, и да се изнесат всички функции за анализ на правилата и логиката на работа с протоколите в потребителското пространство.

Основни нововъведения:

  • Поддръжка на времеви съпоставки на пакети. Може да се зададат диапазони от време и дати, в които правилото ще работи, както и да се настрои активиране в определени дни от седмицата. Също така е добавена нова опция „-T“ за извеждане на времеви марки в секунди.

    meta time "2019-12-24 16:00" — "2020-01-02 7:00"
    meta hour "17:00" — "19:00"
    meta day "Fri"

  • Поддръжка на възстановяване и запаметяване на метки SELinux (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Поддръжка на map-списъци synproxy, позволяващи определяне на повече от едно правило за бэкэнд.

    table ip foo {
    synproxy https-synproxy {
    mss 1460
    wscale 7
    timestamp sack-perm
    }

    synproxy other-synproxy {
    mss 1460
    wscale 5
    }

    chain pre {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    chain bar {
    type filter hook forward priority filter; policy accept;
    ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • Възможност за динамично изтриване на елементи от set-набори в правилата за обработка на пакети.

    nft add rule … delete @set5 { ip6 saddr . ip6 daddr }

  • Поддръжка на съпоставяне на VLAN по идентификатор и протокол, зададени в метаданните на интерфейса на мрежовия мост;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Опцията «-t» («—terse») за изключване на елементи от наборите при показване на правилата. При изпълнение на «nft -t list ruleset» ще бъдат показани:

    таблица ip x {
    набор y {
    тип ipv4_addr
    }
    }

    А при «nft list ruleset»

    таблица ip x {
    набор y {
    тип ipv4_addr
    елементи = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Възможност за указване на повече от едно устройство в веригите netdev (работи само с ядро 5.5) за обединяване на типовите правила за филтриране.

    добави таблица netdev x
    добави верига netdev x y { \
    тип филтър за входни устройства = { eth0, eth1 } приоритет 0;
    }

  • Възможност за добавяне на описания на типовете данни.

    # nft describe ipv4_addr
    datatype ipv4_addr (IPv4 адрес) (основен тип integer), 32 бита

  • Възможност за изграждане на CLI интерфейс с библиотеката linenoise вместо libreadline.

    .\/configure —with-cli=linenoise

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster