The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск пакетного фильтра nftables 1.0.0

20.08.2021 09:25

Опубликован выпуск пакетного фильтра nftables 1.0.0, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). Необходимые для работы выпуска nftables 1.0.0 изменения включены в состав ядра Linux 5.13. Значительное изменение номера версии не связано с какими-то кардинальными изменениями, а лишь является следствием последовательного продолжения нумерации в десятичном исчислении (прошлый выпуск был 0.9.9).

В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком.

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

Основные новшества:

  • В set-списки добавлена поддержка элемента-маски "*", срабатывающего для любых пакетов, не подпадающих под другие элементы, определённые в наборе.
    
      table x {
            map blocklist {
                    type ipv4_addr : verdict
                    flags interval
                    elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : 
    drop }
            }
    
            chain y {
                    type filter hook prerouting priority 0; policy accept;
                    ip saddr vmap @blocklist
            }
      }
    
  • Предоставлена возможность определения переменных из командной строки при помощи опции "--define".
    
      # cat test.nft
      table netdev x {
            chain y {
                   type filter hook ingress devices = $dev priority 0; policy drop;
            }
      }
    
      # nft --define dev="{ eth0, eth1 }" -f test.nft
    
  • В map-списках разрешено применение постоянных (stateful) выражений:
    
      table inet filter {
           map portmap {
                   type inet_service : verdict
                   counter
                   elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * 
    counter packets 0 bytes 0 : drop }
           }
    
           chain ssh_input {
           }
    
           chain wan_input {
                   tcp dport vmap @portmap
           }
    
           chain prerouting {
                   type filter hook prerouting priority raw; policy accept;
                   iif vmap { "lo" : jump wan_input }
           }
      }
    
  • Добавлена команда "list hooks" для вывода списка обработчиков заданного семейства пакетов:
    
         # nft list hooks ip device eth0
         family ip {
                hook ingress {
                        +0000000010 chain netdev x y [nf_tables]
                        +0000000300 chain inet m w  [nf_tables]
                }
                hook input {
                        -0000000100 chain ip a b [nf_tables]
                        +0000000300 chain inet m z [nf_tables]
                }
                hook forward {
                        -0000000225 selinux_ipv4_forward
                         0000000000 chain ip a c [nf_tables]
                }
                hook output {
                        -0000000225 selinux_ipv4_output
                }
                hook postrouting {
                        +0000000225 selinux_ipv4_postroute
                }
         }
    
  • В блоках "queue" разрешено комбинировать выражения jhash, symhash и numgen для распределения пакетов по очередям в пространстве пользователя.
    
      ... queue to symhash mod 65536
      ... queue flags bypass to numgen inc mod 65536
      ... queue to jhash oif . meta mark mod 32
    
    "queue" также можно сочетать с map-списками для выбора очереди в пространстве пользователя на основе произвольных ключей.
    
      ... queue flags bypass to oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
    
  • Предоставлена возможность раскрытия переменных, включающих set-список, в несколько map-ов.
    
        define interfaces = { eth0, eth1 }
    
         table ip x {
            chain y {
                    type filter hook input priority 0; policy accept;
                    iifname vmap { lo : accept, $interfaces : drop }
            }
       }
       # nft -f x.nft
       # nft list ruleset
       table ip x {
           chain y {
                    type filter hook input priority 0; policy accept;
                    iifname vmap { "lo" : accept, "eth0" : drop, "eth1" : drop }
            }
       }
    
  • Разрешено комбинирование vmap-ов (verdict map) c интервалами:
    
        # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
    
  • Упрощён синтаксис сопоставлений для NAT. Разрешено указание диапазонов адресов:
    
       ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 }
    
    или явных IP-адресов и портов:
    
       ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 }
    
    или комбинации диапазонов IP и портов:
     
       ... dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 
    10.141.10.2-10.141.10.5 . 8888-8999 }
    


  1. Главная ссылка к новости (https://www.mail-archive.com/n...)
  2. OpenNews: Уязвимость в подсистеме ядра Linux Netfilter
  3. OpenNews: Выпуск пакетного фильтра nftables 0.9.9
  4. OpenNews: Оптимизация Linux для обработки 1.2 млн JSON-запросов в секунду
  5. OpenNews: Релиз ядра Linux 5.13
  6. OpenNews: В Ubuntu 20.10 планируют перейти с iptables на nftables
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/55663-netfilter
Ключевые слова: netfilter, nftables
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (125) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, InuYasha (??), 10:11, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Охрененно, просто молодцы! firewall здорового сервера.
     
     
  • 2.8, Аноним (8), 10:59, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +20 +/
    Ага отличный firewall а синтаксис какой хороший. А просмотр правил вообще закачаешься.
     
     
  • 3.11, Аноним (11), 11:28, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –15 +/
    Осталось только переписать это на Rust,
    и станет еще лучше!
    Что видимо скоро неизбежно сделают...
     
     
  • 4.16, DildoZilla (?), 12:17, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    С таким синтаксисом лучше сразу на APL.
     
     
  • 5.52, Аноним (52), 08:27, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В Rust отличный синтаксис!
    Кстати, и синтаксис пакетного фильтра можно завернуть как DSL в Rust.
     
     
  • 6.55, Аноним (55), 10:29, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не уверен, что синтаксис nft можно формализовать (и при этом не поехать кукухой).
     
     
  • 7.58, Аноним (52), 11:48, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Неуверены вы, это и ваши проблемы.

    Главное что уверены в Rust, те кто в нем умеют и понимают, и им ваша неуверенность никак не мешает.

    А кто сказал, что в синтаксис nft что-то уперлось (кроме ваших стереотипов мышления)? (Ну это в случае, что там действительно есть проблемы, и они не ваши личные, как обычно сразу выясняется.)

    Это все что вы можете - придраться к синтаксису nft, когда вы отвечали на пост про DSL в Rust? Вы вообще поняли о чем речь-то шла? Или вы где-то слышали слово "формализовать", и решили, что если вы его скажете вместе со словом "синтаксис", то все сразу поверят в вашу якобы компетентность.

    Раст давно давно "любимый" язык.
    Против Раста только бездари и невежды, что каждый раз они сами про себя и доказывают.

     
     
  • 8.89, Sem (??), 21:44, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вы таблетки забыли принять ... текст свёрнут, показать
     
     
  • 9.124, antonimus (?), 13:32, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    100500 ... текст свёрнут, показать
     
  • 4.20, Аноним (20), 12:58, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Найдутся и такие, кто на Electron перепишет.
     
     
  • 5.97, Ян Злобин (ok), 09:38, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Найдутся и такие, кто на Electron перепишет.

    Вот, пожалуйста, не надо хипстерам идеи подавать! А то много сейчас таких стильных, модных, молодёжных...

     
  • 5.128, Анон123амм (?), 22:47, 02/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    сразу на джаваскрипт
     
  • 4.45, пох. (?), 18:34, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не, не сделают. _начнут_переписывать_

    по дороге, разумеется, еще пару раз сломают. В принципе, чума на оба их дома...

     
     
  • 5.53, Аноним (52), 08:40, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что это такого на Rust где ломают (чтобы систематически, а не какие то отдельные случаи).
    В Rust действительно очень эффективно переписывает старый системный код.
    Другое дело, что как раз таки не надо торопиться быстро переписывать, как обычно на Rust и делают, зато то что написано очень хорошо работает, еще на нулевых версиях.

    Так что очень реальная перспектива.

    >  В принципе, чума на оба их дома...

    Бессильные проклятия сразу выдают зависть и страх неизбежного.

     
  • 3.15, InuYasha (??), 11:54, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    мне (сишнику) норм :) Писать удобно. Разве что, вики не совсем полноценно отражает фичи (а может, уже и допилили).
     
     
  • 4.18, Аноним (20), 12:53, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Поддерживаю. Структурненькое оформление правил, нравится.
     
     
  • 5.25, Аноним (55), 13:48, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Структурное оформление есть, теперь бы семантическое наполнение.

    А то синтаксис как-то вообще не страдает внутренней логичностью и интуитивной понятностью, а документация остаётся на уровне "вот вам пара примеров, не обляпайтесь".

     
     
  • 6.35, Аноньимъ (ok), 15:55, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Сишникам самое оно.
     
  • 6.50, Аноним (-), 22:45, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > теперь бы семантическое наполнение

    И семантическое версионирование в придачу

     
  • 2.38, Аноньимъ (ok), 16:06, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Хоть ты лопни хоть ты тресни
    IPFW на первом месте!
     
     
  • 3.68, Аноним (52), 14:56, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тоже вброс.
     
     
  • 4.98, Ян Злобин (ok), 09:39, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Тоже вброс.

    Что он не так сказал? Ещё и стихами..

     
  • 3.103, Псевдонимус (?), 00:54, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он страшен, как смерть от кровавого поноса.
     
  • 3.105, antonimus (?), 23:02, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ipfw уже научилось в таблицы с таймаутом?
     
     
  • 4.106, Аноньимъ (ok), 23:06, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > ipfw уже научилось в таблицы с таймаутом?

    О чём вы конкретно?

     
     
  • 5.107, antonimus (?), 23:20, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    ipset create test hash:ip timeout 300
    ipset add test 192.168.0.1 timeout 60
    ipset -exist add test 192.168.0.1 timeout 600

    ipset -L test
    ...
    Members:
    192.168.0.1 timeout 598

    Зачем - сам догадаешься?

     
     
  • 6.108, Аноньимъ (ok), 23:46, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вы говорите загадками. И этот синтаксис для меня чужой.

    Что конкретно этот тайм-аут даёт? Как выглядит правило использующее эту таблицу?

     
     
  • 7.110, antonimus (?), 23:54, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Конкретно таймаут позволяет применять правило (accept/drop) для элементов таблицы на некоторое время.
    Добавление в таблицу - делает правило iptables по некоторому критерию.
    Примеры - защита от dos, например. Динамическая, без участия оператора или доп. сервиса.
     
     
  • 8.112, Аноньимъ (ok), 00:52, 25/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю для этого понадобится внешний скрипт или программа ... текст свёрнут, показать
     
     
  • 9.116, antonimus (?), 12:50, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Понадобится, конечно, если пользоваться ipfw А так чем пион, да ... текст свёрнут, показать
     
  • 7.111, antonimus (?), 23:58, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >И этот синтаксис для меня чужой.

    Проследуйте в man или продолжайте себя успокаивать, что ipfw - чем пион :)

     
     
  • 8.113, Аноньимъ (ok), 00:55, 25/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это хороший фаерволл Защита от ддоса отдельная тема, не думаю что вам в этом эт... текст свёрнут, показать
     
     
  • 9.115, antonimus (?), 12:48, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    1 Файрволл в ядре, но ipfw чем пион, да 2 Не надо думать за других, это чрева... текст свёрнут, показать
     
  • 6.109, antonimus (?), 23:50, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну или хотя-бы hash:ip,port
    ?
    Про динамические правила работы говорить вообще не стоит.
    Чистая статика и закат солнца вручную, да :)
     
     
  • 7.114, Аноньимъ (ok), 00:56, 25/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Почитайте ман.
     
     
  • 8.117, antonimus (?), 12:51, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нифига в мане ipfw не нашел про динамические правила ... текст свёрнут, показать
     
     
  • 9.118, antonimus (?), 12:56, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего не нашел в ipfw аналогично ipset create test hash ip,port ipset add test... текст свёрнут, показать
     
  • 8.119, antonimus (?), 13:06, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    И, чтобы закончить измерение прочности бубенчиков, ipfw, как и iptables ipset nf... текст свёрнут, показать
     
  • 2.63, Azudim (??), 13:17, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А чем оно лучше PF (BSD) ?
     
     
  • 3.67, Аноним (52), 14:55, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это был очередной вброс.
     
     
  • 4.82, Azudim (??), 12:37, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, я серьезно! Мне нет разницы на чем запустить виртуалку - линуха или BSD, если мне нужно собрать роутер.. 5-6 локальных сеток, интерфейсы для 3 инстантсов VPN-сервера на 50 клиентов, NAS для биллинга с MPD (PPPoE) и т.п.  С pf есть возможность хотя бы читаемый конфиг сделать, через pflog делать трассировку, etc..
    А что с точки зрения удобства оперативного управления есть в nftables?
     
     
  • 5.90, Sem (??), 21:49, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Слушай, это первый в линукс файрвол здорового человека. Это его основной плюс.
    Читается он точно хуже pf. Но наделают (заточат существующие) фронтэнды и будет легче.  
     
     
  • 6.121, antonimus (?), 13:20, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не первый, есть FERM фронтенд, да, но работает cat usr share doc ferm e... большой текст свёрнут, показать
     
  • 5.95, 1 (??), 09:30, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    pf - на уровне ядра
    nftables - на уровне узверя
     
     
  • 6.120, antonimus (?), 13:10, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >nftables - на уровне узверя

    ЧО?
    https://netfilter.org/projects/nftables/

     
  • 3.88, OpenEcho (?), 19:03, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > А чем оно лучше PF (BSD) ?

    Так под него и косят, Вы разве не видите похожие шаблоны?

     
     
  • 4.122, antonimus (?), 13:26, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Все производители внедорожников косят под Jeep, вы разве не видите похожие шаблоны?
     
     
  • 5.127, OpenEcho (?), 00:22, 30/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Все производители внедорожников косят под Jeep, вы разве не видите похожие шаблоны?

    Вижу, и не говорю что это плохо... пока у всех у них стандартизироное расположение руля, "газа" и тормоза... в отличе от софтверной индустрии, где сперва начинают обезяничать с наилучщих, но так увлекаются что в итоге быстро обрастают несовместимостью, где нет стандартизированных правил не в синтаксе и не в сeмантике

     

  • 1.4, Аноним (4), 10:23, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    GUI так и нет в 2021?
     
     
  • 2.6, Аноним (6), 10:28, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем там GUI? Для гуйни есть gufw с vuurmuur, но там правда iptables.
     
     
  • 3.13, Аноним (11), 11:34, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А если сказать, что в Виндах файрволл лучше, вы вообще все дела бросите и кинетесь доказывать.
    Это же просто тупо вброс.
     
     
  • 4.22, ОноНим (?), 13:45, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что, разве есть такие люди, которые знают как там в виндах работает файрвол на уровне ядра ОС ?
    И для тех, кто скажет "лучше" и для тех кто будет доказывать обратное - всего лишь, курятничье кудахтание.
     
     
  • 5.30, Аноним (55), 13:56, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть люди, которые знают, что диалоговое окно "разрешить/заблокировать?" на каждое новое соединение - это круто (я не специалист но, по-моему, для этого на винду нужно ставить дополнительные программы), и есть те, которые с ними не согласны.

    > всего лишь, курятничье кудахтание.

    Ну комменты к новостям обычно состоят из него на 99%, почему бы и нет?

     
  • 5.41, Аноним (41), 17:09, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +15 +/
    > А что, разве есть такие люди, которые знают как там в виндах работает файрвол на уровне ядра ОС ?

    Они есть, но не факт что они есть на этом форуме, ну и когда вы говорите "файрвол", вы, наверное, имеете в виду Windows Filtering Platform. Это API, которое задокументировано, и на базе которого строятся все реализации файрволов для ядра и сетевого стека венды.
    https://docs.microsoft.com/en-us/windows/win32/fwp/windows-filtering-platform-

    Самих же файрволов несколько, они реализуют разный функционал, как минимум Windows Firewall и RRAS.

    > И для тех, кто скажет "лучше" и для тех кто будет доказывать обратное - всего лишь, курятничье кудахтание.

    Сравнивать по принципу "лучше", как-то странно, потому что nftables и WFP имеют разную архитектуру, в основном, потому что ядра имеют разный сетевой стек... Тёплое vs мягкое.

    Если же говорить про функционал для конченого пользователя (скорее системного администратора), то всё зависит от того, что там на в хозяйстве...
    Windows Firewall - это Identity Based Firewall, он генерирует правила относительно пользователей и компьютеров. В основе аутентификации и авторизации лежит протокол Kerberos, но поддерживаются и другие методы, например сертификаты X.509, или даже ретроградные методы вроде PSK+NTLM. Задача инкапсулировать траффик на незащищенные порты в IPsec, аутентифицировать и авторизовать по ESP-заголовку, проверить хэш-сумму. Шифрование по вкусу.

    Nftables и тулзы построенные поверх него не могут в такой функционал, хотя бы потому что Linux - это Unix-like операционная система. В Unix-like операционных системах нет понятие типов аутентификации и нет поддержки сетевой аутентификации на уровне ядра. Linux/Unix PAM расценивает любую аутентификацию как локальную (Unix - это ОС из 70-х) и не позволяет передать дескрипторы безопасности пользовательской сессии запущенным процессам, для автоматического запроса TGS. Из-за этого поддержка Kerberos, который изначально создавался для Unix-like (иронично не так ли?), всегда где-то сбоку и требует реализации костылей в каждом приложении. Идентификация устройства-компьютера начала появляться только вместе в systemd... Дело не в файрволе, а во всем остальном. Технически подобного функционала можно добиться на Linux, но там придётся столько ручками педалить, что проще жить в списках ACL с IP, настраивая IPsec только там где-это обязательно.

    Опять же, весь этот функционал - это решения задач Workstation в крупных компаниях, в то время как nftables таргетится на задачи удобства управления в рамках кластеров, управляющих контейнерами. Windows Firewall в этой ситуации вообще мимо. Разные применения же.

    Если для понимания нужна цепочка проверки пакета для Windows Firewall (не для RRAS!), то вот она:
    1. Сервисные правила
    2. Интерфейсные ограничения и политики IPsec
    3. Проброс соединений прошедших проверку по состоянию (сущность Stateful Firewall)
    4. Блокировочные правила
    5. Разрешающие правила (в том числе ESP-правила)
    6. Параметры по-умолчанию
    Здесь нету Forward/NAT и прочего, потому что они доступны в RRAS, это файрвол рабочей станции или сервера без RRAS. По сути - цепочка INPUT из iptables c рядом специфики:
    1. Сервисные правила - это особые скрытые из интерфейса наборы правил (они все ограничительные), которые применяются к сервисам, фоновым процессам магазина и пакетам приложений. Их видно только в реестре.
    2. Это параметры для интерфейсов, для NDIS там много всего может быть.
    3. Windows Firewall - это Statefull Firewall, если это не было выключено в настройках. Например, все эти ESTABLISHED, RELATED разрешены, если не запрещены явно.

    Windows Firewall разделяет локальные и доменные правила и управляет тем, какие превалируют только в случае входа в домен, здесь решения применяются вне файрвола. По поводу конфиликтующих правил используется логика "лучше блокировать, чем разрешать". Некоторые сервисы имеют свои цепочки правил, поэтому отключение служб файрвола приведет к их неработоспособности. Причем это самое туманное и то что может вогнать в ступор. Сервисная модель вменяет ограничителоьные правила для системных сервисов, магазин вменяет ограничительные правила для пакетов приложений, а пользователь/администратор не контролирует это ни через GUI ни через powershell ни через netsh, только вручную в реестре... потому что эти правила WFP не имеют отношения к правилам Windows Firewall. А есть еще NDIS-фильтры, и конечно же Winsock-фильтры, которые тоже вне Windows Firewall. Они нужны, когда нужно написать драйвер для кастомнной фильтрации (по аналогии с классическим BPF)...

    Даже не знаю что рассказать, документацию почитайте... Я пишу это не потому что он чем-то лучше, а чтобы показать, что это не rocket science и что информация доступна. Если вы лично чего-то не знаете, это не значит, что этого не знает никто.

    P.S. Инструменты управления у всех вендовых файрволов - оторвать и выбросить и производительность у них до 1809, мягко скажем, посредственная. Они почему так хотят eBPF себе в венду, потому что у них лет 15 точно есть в наличии продвинутый функционал по мониторингу, отладке и аналитике сетевого стека и производительности процессов, но им пользуется 3.5 руссиновича, потому что документация по нему сложна к прочтению, а тулзы настолько неудобны, что их использование напоминает оккультизм и сатанизм (я про netsh trace). То что там было до Windows 7/2008 R2... если вы не знаете, то лучше пусть так и остаётся, про это разве что фильмы ужасов снимать.

     
     
  • 6.59, Аноним (52), 12:21, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >> А если сказать, что в Виндах файрволл лучше, вы вообще все дела бросите и кинетесь доказывать.

    ... и сразу на выходе доклад с претензией на диссертацию. Что и требовалось доказать.

     
  • 6.79, Аноньимъ (ok), 22:16, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Суммировав вышесказанное - фаервол на виндовсе это ад угар и содомия.
     
     
  • 7.84, And (??), 12:56, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    MS бывает критикуют за косолапые и кривые реализации. Паралельно с классными идеями и инструментами от них идёт поток трэша. Поток столь велик, что работая с MS не удаётся быть не перепачканным этой помойкой.

    Всегда с какого-то боку постоянно приходится иметь дело с мелкомягкими поделиями, которыми... "пользуется 3.5 руссиновича, потому что документация по нему сложна к прочтению, а тулзы настолько неудобны, что их использование напоминает оккультизм и сатанизм (я про netsh trace)" (с) см. выше. И без шансов на улучшение - глухарь. В опенсорсе хоть надежда есть, а у этих - мрак.

     
  • 6.80, Аноним (80), 05:01, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Уважаемый, пиши почаще пожалуйста. Такие вещи приятно и полезно читать.
     
  • 6.101, PnD (??), 21:21, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вы хорошо расписали про винду не готов проверять , но несколько не в курсе теку... большой текст свёрнут, показать
     
  • 6.123, antonimus (?), 13:29, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Самих же файрволов несколько, они реализуют разный функционал, как минимум Windows Firewall и RRAS.

    ААААААА!!!!!!!!!
    про это разве что фильмы ужасов снимать.

     
  • 2.9, Аноним (9), 11:00, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    firewalld
     
  • 2.10, leap42 (ok), 11:09, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > GUI так и нет в 2021?

    Именно потому и нет, это 2021, а не 2001. Даже циски и мсфт топят за консоль и конфиги, с чего бы линуху топить за кнопки?

     
  • 2.19, Аноним (20), 12:55, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    GUI мозга? За GUI-обёрками обращайтесь к вашим дистроклепателям.
     
  • 2.44, Онаним (?), 18:23, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы просто плохо себе представляете, как будет под это дело гуй выглядеть.
    Это вам не сохофайрвол, у которого полторы опции, которые он в этот nft или iptables и превращает.
    Если все вариации вынести в гуй - вы чокнетесь по этому гую мышкой тыкать.
     
     
  • 3.48, Michael Shigorin (ok), 19:35, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Из того GUI просто надо RPG сделать -- пусть лазят, осваивают... :]
     
     
  • 4.62, Аноним (52), 12:51, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уже на Ruby же сделали, только сразу через Web, зато сразу jRPG!
     
     
  • 5.72, Онаним (?), 16:24, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    hRPG же
     
  • 3.91, Sem (??), 22:09, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Checkpoint firewall имеет не плохой гуй. Было бы приятно иметь подобное.
    Увы, firewalld GUI далеко не дотягивает. fwbuilder пытается быть похожим, но пока убог и ущербен.
     
     
  • 4.96, 1 (??), 09:37, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У checkpoint-а одна проблема ...
    Сначала ты елозишь мышкой, потом конфигурация "компиляется", потом загружается на устройства.
    Когда устройств больше 3 - всё это выглядит как затыкание дыр "завтра".
     
  • 2.83, And (??), 12:39, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > GUI так и нет в 2021?

    Вместо GUI нужна вот такая дока-учебник - https://github.com/imq/linuximq/wiki/Kernel-Packet-Traveling-Diagram

    GUI неудобен, т.к. по числу щёлков мышью "нереально" в GUI накликать что-то кроме доступа к локал-хосту по SSH у мамы.

    А вот переменные, текстовые конфиги позволяют в один щелчок применять одинаковые правила на разных машинах с динамическими различиями. Это когда ещё защита от DoS и прочие выкрутасы.

    Зачем GUI с нуждой в сложной работе из-за GUI, когда без GUI работа заметно проще.

     
     
  • 3.94, Аноним (94), 07:41, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >GUI неудобен, т.к. по числу щёлков мышью "нереально" в GUI накликать что-то кроме доступа к локал-хосту по SSH у мамы.

    Ты это кровавому энтерпрайзу в лице чекпоинта с палоальтой расскажи.

     
     
  • 4.100, Анто Нимно (?), 15:30, 23/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Когда пакеты пакуют с костылями и не поддерживают в GUI LTS релизы топовых брендов, то, видимо, нет "штатной" разработки темы. Сказать-то нужно, но сначала  разуть уши. А то что-то гуи-то у этих теперь не всюду поддерживается, вышло-то как. Почему-то.
     
     
  • 5.104, Аноним (94), 06:53, 24/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    У тебя русский - не родной? Ты что сказать-то хотел? Я ничего не понял из твоего предложения.
     

  • 1.5, Аноним (6), 10:24, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Релиз? Уже можно заменять iptables потихоньку? Или ещё лет 100 подождать?
     
     
  • 2.7, hefenud (ok), 10:37, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не время переходить с ipchains! Еще лет 10 подожди, хотя бы
     
     
  • 3.14, Аноним (11), 11:37, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да вообще, hosts.allow наше всё!
     
     
  • 4.21, Alladin (?), 13:39, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Анонимы неадекваты нейкие))

    Файл hosts?:) Тот самый?:) Firewall?:) Кажись firewall работает в двух направлениях, а не только в одном)

     
     
  • 5.24, Аноним (55), 13:46, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Нет, мой юный друг, host.allow и host.deny, которые использовались libtcpwrap.
    Вы, наверное, даже слов-то таких никогда не слышали.
     
     
  • 6.26, Аноним (26), 13:49, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    в федоре выплилили tcpwrappers
     
     
  • 7.28, Аноним (55), 13:52, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не хочу вас расстраивать, но ipchains выпилили ещё раньше. Лет на десять как минимум.
     
     
  • 8.29, Аноним (26), 13:56, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вы меня расстроили ... текст свёрнут, показать
     
     
  • 9.31, Аноним (55), 13:56, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Простите ... текст свёрнут, показать
     
  • 5.126, antonimus (?), 14:04, 28/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообще в Linux файрволл работает в трёх направлениях:
    input, forward, output
    не?
    :)
     

  • 1.12, Аноним (-), 11:31, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Удаление правил не по handle так и не добавили(
     
  • 1.17, Аноним (17), 12:28, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    замену NETMAP уже сделали?
     
     
  • 2.23, Аноним (55), 13:45, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обещали в ядре 5.8. Скорее всего сделали, но не задокументировали.

    nft — это магия: позволяет делать всё, но нужно знать сложные заклинания. Которыми создатели не спешат делиться (у них много других, более важных, дел).

     
     
  • 3.51, Аноним (51), 01:08, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Конечно, не спешат. Если все всё знать будут, за поддержку никто платить не будет, вся GPL бизнес модель развалится.
     
     
  • 4.54, Аноним (55), 10:27, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да не смогут они поддерживать. Это тот случай, когда сами разработчики получали рабочие примеры синтаксиса методом брутфорса (идея позаимствована из языка Malbolge).
     
  • 3.57, Аноним (52), 11:37, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    То есть для вас код - это сложные заклинания?

    А ничё, что здесь достаточно людей, которые вообще-то умеют "программировать" (упрощенно выражаясь).
    Или все, всё время должны подстраиваться? под тех, кто не умеет и не знает.

     
     
  • 4.64, Аноним (55), 13:53, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть попробуют попрограммировать на языке Malbolge. Или nft.
     
     
  • 5.66, Аноним (52), 14:52, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Про Malbolge не знаю, а nft - это предметно ориентированный язык, и что?
    Просто на там много писать не надо, а только по предметной области.
    А остальное пишется на языках общего назначения.

    Вам трудно его понять? А в чем тут проблема самого языка?

     
  • 4.74, Аноньимъ (ok), 17:44, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >А ничё, что здесь достаточно людей, которые вообще-то умеют "программировать" (упрощенно выражаясь

    В предедущих сериях мы выяснили, что это большинство умеет программировать на жумле и HTML.

     

  • 1.27, Аноним (55), 13:51, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интересно, чья была гениальная идея использовать для map-ов фигурные скобки, чтобы команду с map-ами обязательно нужно было экранировать в оболочке?
     
     
  • 2.46, пох. (?), 18:35, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    я думаю этот гений пользуется уже почти совсем готовым десктопом, и ни про какие оболочки вообще не в курсе.

     
  • 2.85, And (??), 12:59, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо такие конструкции вставлять в скрипты облочки. Как хэдеры и модули т.п. - в подключаемые файлы. А то станут называть баш-простынями, не поняв, что это норм. средства, но просто использованны неопытно до нечитаемости.
     

  • 1.32, Аноним (-), 14:05, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Wow, мы уж думали этого никогда не случится. Осталось дождаться PipeWire 1.0 и LXQt 1.0 и можно праздновать победу Linux  на десктопе.
     
     
  • 2.34, Аноним (20), 15:32, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А переписывания Systemd и Wayland на Rust?
     
     
  • 3.40, анон (?), 16:40, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    это уже версии 2.0
     
  • 3.61, Аноним (52), 12:48, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Про Wayland вопрос особо не изучал.
    А про Systemd, поскольку там уже все запущено настолько, что он сам претендует на... на... уже не известно на что, на какой-то абстрактно-сферичный захват Мира... в-общем уже хуже не будет, если и его переписать на Rust. Расту будет только дополнительный зачет... и очередное горе для бездарей, как обычно.
     
  • 2.47, Аноним (47), 19:13, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    "Значительное изменение номера версии не связано с какими-то кардинальными изменениями, а лишь является следствием последовательного продолжения нумерации в десятичном исчислении (прошлый выпуск был 0.9.9)"
     

  • 1.33, mumu (ok), 15:10, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сахарок с "*" приятный, главное чтоб всё вело к упрощению понимания, а не парсингу надмозгом каких-то регекспов из закорючек.

    п.с. пару лет как перешел на nft в проде (роутинг телефония+впн). Полет нормальный, хотя по старинке всё делаю через перечитывание конфигов, а не отправку команд. Но возможности для шмякшмякеров там видимо шикарные.

     
  • 1.36, crypt (ok), 16:01, 20/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

    по-моему это дебильная нотация. порт по стандарту uri указывают через ":" всю историю интернета, а тут решили поменять. порт через точку больше на айпишник похож. хотя чего стоило использовать 11.22.33.44:8000; ...:8000; ... и не пришлось бы придавать пробелам такое значение.

     
     
  • 2.39, mumu (ok), 16:16, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Такие же мысли. Почему не двоеточие понятно, оно уже используется. Но даже ключевое слово "port" смотрелось бы лучше этой азбуки Морзе.
     
     
  • 3.43, Онаним (?), 18:20, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Самый простой вариант был двоеточием, и точку с запятой как разделитель.
    Нет, "пошли другим путём"(tm)
     
     
  • 4.60, Аноним 80_уровня (ok), 12:47, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не, не самый. Для записи порта с адресом типа 2a01:0e20:1680::18:1 требуются дополнительные разделители.
     
     
  • 5.70, Онаним (?), 16:20, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В общем случае - не требуется, догадайся, почему :)

    2a01:0e20:1680::18:1:5060 например.
    Или 2a01:0e20:1680:0:0:0:18:1:5060
    Или 2a01:0e20:1680:::5060
    Перепутать невозможно, запись IPv6 не допускает двусмысленности с портом.
    Просто читать неудобно, но для тех, кому не удобно, можно например такую запись сделать дополнительной:

    [2a01:0e20:1680::18:1]:5060
    [2a01:0e20:1680:0:0:0:18:1]:5060
    [2a01:0e20:1680::]:5060

     
     
  • 6.73, Аноним 80_уровня (ok), 17:35, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В общем случае - не требуется, догадайся, почему :)
    > 2a01:0e20:1680::18:1:5060 например.
    > Или 2a01:0e20:1680:0:0:0:18:1:5060
    > Или 2a01:0e20:1680:::5060
    > Перепутать невозможно, запись IPv6 не допускает двусмысленности с портом.

    В общем случае как раз требуется, а ты привел некоторые частности.
    2a01:e20::1:5060
    Я тоже здесь привел некоторый частный случай, а "общий случай" охватывает обе частности, то есть в нем таки требуется.

    > Просто читать неудобно, но для тех, кому не удобно, можно например такую
    > запись сделать дополнительной:
    > [2a01:0e20:1680::18:1]:5060
    > [2a01:0e20:1680:0:0:0:18:1]:5060
    > [2a01:0e20:1680::]:5060

    Я и говорю - требуется дополнительный разделитель.

     
     
  • 7.75, Онаним (?), 20:34, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не требуется. Возможен для удобоваримости, но не нужен.
    Попробуй выйти из "частностей" в своём мозгу, и сообразить таки, как IPv6 записываются.
     
     
  • 8.77, Онаним (?), 20:40, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Короче вышел из частностей в своём мозгу я, я забыл, что после в v6 может сле... текст свёрнут, показать
     
  • 7.76, Онаним (?), 20:35, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А, сорян, ты прав.
    Публично признаю себя идиотом.
     
  • 2.42, Онаним (?), 18:19, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вод да, с раздейлителями у этого счастья полный пейсец.
    С другой стороны можно налепить себе конвертор из откуда угодно.
     
     
  • 3.49, Michael Shigorin (ok), 19:39, 20/08/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > С другой стороны можно налепить себе конвертор из откуда угодно.

    Это просто обычно показатель уровня тех, кто продумывал (или что там) синтаксис.

    PS: в смысле когда вместо самодокументированного по аналогии приходится делать конвертор в марсианский...

     
  • 2.56, Аноним (56), 10:35, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > хотя чего стоило использовать 11.22.33.44:8000; ...:8000;

    в случае точки с запятой больше похоже на перечисление, а тут все же словарь, для которого используется двоеточие в json/yaml и некоторых языках. Даже немного интересно, как ipv6 адреса надо записывать

     
     
  • 3.65, Аноним (55), 14:42, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя нигде в документации это не формализовано (или я не нашёл), но выглядит так, что окружённое пробелом двоеточие является разделителем пары ключ-значение в map, окружённая пробелами точка — разделителем между адресом и портом, а их аналоги без пробелов — разделителями групп байт в IPv6 и IPv4 адресах соответственно.
     
     
  • 4.71, Онаним (?), 16:22, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Значащие пробелы - это ад, там явно был кто-то с питоном межушного ганглия.
     
     
  • 5.87, And (??), 13:04, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. Это родилось раньше - make/cmake - разница между табом и пробелом в начале строки определяет текст это или шелл команда... Полвека, а то и вся история человека, дурацким идеям бестолкового остроумия.
     
  • 4.78, Аноним (78), 21:41, 21/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Адреса IPv6 заключаются в квадратные скобки: [address]:port
     

  • 1.69, Вуиииииии (?), 15:55, 21/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Хде можно почитать наиболее полную инфу о нфтэйблс на русском?
     
     
  • 2.81, Random (??), 09:54, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вменяемой и полной документации и на английском нет.
     
     
  • 3.86, And (??), 13:02, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Тады, набрав попкорна, ждём чем закончится бунтарство с синтаксисом и житейским опытом. Только тогда уже и только после в прод.
     
     
  • 4.92, Sem (??), 22:23, 22/08/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это не бунтарство, это эволюция.

    Те, кому уже поперек горла зоопарк с iptables, ip6table, arptables, ebtables и iptables-extensions - уже в восторге. Документацию скоро напишут. А для суровых-бородатых-админов и не нужна документация - RTFS )

     

  • 1.93, Хан (?), 04:48, 23/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Растоманы в комментах совсем кукухой тронулись со своим растом... еще и правила в файрволле предлагают на расте писать
     
  • 1.99, Разбойник (?), 10:09, 23/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >1.0.0

    Следуя философии Linux Way, пора бы уже объявить deprecated.

     
  • 1.102, Псевдонимус (?), 00:52, 24/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что за ужас я увидел в примерах? Они там совсем того?
     
  • 1.125, antonimus (?), 13:35, 28/08/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Исправьте новость, nft - это фронтенд сетевого фильтра для ядра Linux, а не пакетный фильтр.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру