URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 126846
[ Назад ]

Исходное сообщение
"Выпуск пакетного фильтра nftables 1.0.2"

Отправлено opennews , 21-Фев-22 23:38 
Опубликован выпуск пакетного фильтра nftables 1.0.2, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). Необходимые для работы выпуска nftables 1.0.2 изменения включены в состав ядра Linux 5.17-rc...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56739


Содержание

Сообщения в этом обсуждении
"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено InuYasha , 21-Фев-22 23:38 
Не, забавно, конечно, а может, и удобно. Но каждый раз когда начинают сыпать сахар в синтаксис, возникает ситуация, когда одно и то же можно сделать 10ю способами. И всё.

Не понял немного про точки, но вообще, если правил не тысячи, "до оптимизации" было читать в столбик проще. IMHO, конечно.
      meta iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 .
1.1.1.2 . 2.2.2.5 } accept


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 00:04 
нам -Н -Е --надо --сахара
команда --должна --напоминать --шашлык
настоящее -Б людо --для "суровых мужиков"

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено YetAnotherOnanym , 22-Фев-22 01:21 
Отсыпь.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 12:59 
> Не понял немного про точки

это типа конкатенация такая
После оптимизации все, что в скобках можно выписать в столбик и дать имя. Тогда останется одна строчка с правилом и отдельно список значений, на соответствие которым это правило и будет проверять


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 21-Фев-22 23:40 
А ICMP и IGMP не фильтрует что ли?

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено llolik , 21-Фев-22 23:45 
Фильтрует. Но для примера лучше самые попсовые.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Ан , 22-Фев-22 01:10 
R
К сожалению, ничего лучше pf в мире брандмауэров до сих пор не придумано.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Azudim , 22-Фев-22 02:16 
Я вот тоже все поглядываю на замены, но что то не вижу альтернатив..

Вот где еще можно сделать читабельный конфиг, когда у тебя на хосте 2 внешних интерфейса, 5 локальных сетей, 5-6 инстансов OpenPVN со своими ифейсами + MPD который 50 PPPoE сессий поднимает, тонна пробросов на разные сервисы внутри и т.д.. ?


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 05:50 
Надо структурировать задачи и подойти к её решению со стороны zone based firewall.
nftables позволяет сконструировать что угодно.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 11:55 
>MPD который 50 PPPoE сессий поднимает

*  media-sound/mpd
Latest version available:
Latest version installed: [ Not Installed ]
Size of files: 710 KiB
Homepage:      https://www.musicpd.org https://github.com/MusicPlayerDaemon/MPD
Description:   The Music Player Daemon (mpd)
License:       GPL-2
Шта?


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sin2x , 22-Фев-22 12:28 
http://mpd.sourceforge.net/

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено pfg21 , 22-Фев-22 12:26 
дык проще простого, пиши програмку с читабельным конфигом, которая компеляет ентот человекочитаблеьный конфиг в байт-код nft. и все будет оке.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено пох. , 03-Мрт-22 10:18 
Ну если на мир смотреть через дырку в сортире, кроме жопы ничего и не видно.

> MPD который 50 PPPoE сессий поднимает

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

Нет pppoe, нет половины проблемы. А остальное можно оставить в pf.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Anon090807 , 22-Фев-22 09:42 
>К сожалению, ничего лучше iptables в мире брандмауэров до сих пор не придумано.

Поправил тебя. Можешь не благодарить.
P.S. И находятся же еще в мире странные существа, считающие это убожество - pf - пределом мечтаний.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено llolik , 22-Фев-22 10:25 
>>К сожалению, ничего лучше iptables в мире брандмауэров до сих пор не придумано.
> Поправил тебя. Можешь не благодарить.

Ну если быть совсем точным, то iptables - это не брандмауэр, а набор управляющих утилит (как и сабжевый nftables). Брэндмауэр - это netfilter и он в ядре.

А по сабжу, лично мне nftables понравился, хотя и некоторые расширения iptebles пока не реализованы ( https://wiki.nftables.org/wiki-nftables/index.php/Supported_... ). Конфиг пишется понятно и довольно интуитивно, через консоль писать километровые команды построчно - задача не обязательная. Из относительных минусов: документацию хотелось-бы более-менее консистентную, а не ситуационную wiki.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Azudim , 22-Фев-22 14:49 
А есть возможность с IPTABLES прослушать трафик на всех портах разом и выяснить какое правило iptables блокирует/разрешает прохождение пакета? Или просто, какие правила пакет проходит и на каких интерфейсах?



"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 18:31 
modprobe nf_log
iptables -t raw -I PREROUTING <критерий выбора пакета> -j TRACE

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено пох. , 03-Мрт-22 13:04 
только nf_log_ipv4

(угу, очередное поулучшайкали)

sysctl который это активировал, соответственно, стал ненужен.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 11:40 
Agnitum Outpost Firewall

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 01:15 
Какой-то ад, по-моему. Пфом по функционалу оно не стало. А синтаксис для среднестатистического админа нетривиален. Вопрос знатокам: а зачем? Это под гуй тулзы делалось, чтоб для погроммистов мышкой писать окошки админам мышкой?

Пипитаблес звезд с неба не хватал, но был понятен и прозрачен. А для админа который без знаний погроммирования это важно.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 01:37 
Я тут с дебиана 9 на 11 переводил VDSку, так и не разобрался, даже по статьям свежим не работает. В итоге через прослойку iptables сделал. Целый язык-фреймворк придумали. А надо было срочно перейти, т.к. я в команде chmod перед слешем точку не поставил.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено mumu , 22-Фев-22 01:49 
Через прослойку вполне нормальный подход. Все знакомые так делали. Импорт, экспорт, потом немного править руками (define-ы те же). Всё работает как часы.
Нет ни одной причины что-то там писать с нуля, кроме академической.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 02:48 
Зная о том как пишутся костыли гхм прослойки и прочие трансляторы, я бы переписал с 0. Так спокойнее.

Зы. Посоны, война по ходу началась. Всем соболезную.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 10:29 
Что уж, перепишите...
А мне - оно и так работает.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 11:22 
Там сложность в том, что в iptables куча сторонних модулей, трансляцию синтаксиса которых...

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 05:48 
Кто ж виноват, что Вы не готовились заранее?
Да и правила iptables в большинстве случаев транслируются в nft без проблем, затем доводятся на свой вкус.
sets там просто шикарны.
Я использую такой скрипт для nftables:
<quote>
#!/usr/bin/bash

BACKUP_DIR="/var/backups/nftables"
NFTCONF_SRC="/etc/nftables.conf"

YR=$(date +'%Y')
MN=$(date +'%m')
DY=$(date +'%d')
TM=$(date +'%H%M')

if nft -c -f ${NFTCONF_SRC}; then
    if [[ ! -d ${BACKUP_DIR}/${YR}/${MN} ]]; then
        mkdir -p ${BACKUP_DIR}/${YR}/${MN}
    fi
    cp /etc/nftables.conf ${BACKUP_DIR}/${YR}/${MN}/nftables.conf-${YR}${MN}${DY}-${TM}
    /usr/sbin/nft flush ruleset
    /usr/sbin/nft -f ${NFTCONF_SRC}
    echo '#!/usr/sbin/nft -f' > /etc/nftables.conf
    echo "" >> /etc/nftables.conf
    echo "flush ruleset" >> /etc/nftables.conf
    echo "" >> /etc/nftables.conf
    nft -s list ruleset >> /etc/nftables.conf
fi
</quote>
Это позволяет избежать многих граблей.
В отличие от недоразумений вроде ufw и firewald - оно управляемо, т.к. не вносит гору информационного шума и оставляет возможность оптимизации порядка правил по счётчикам пакетов.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 09:44 
А как сделать перенаправление с виртуального /dev/tap_vpn на внешний интерфейс? Т.е. подключаюсь к сети сервера, но чтобы в инет через него?

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 10:34 
Тут сумбур какой-то. Опишите задачу ясней. Половина ответа содержится в правильно сформулированном вопросе.
Если вы приходите по впн, терминируемом сервером, то нужен просто NAT типо такого:
table ip nat {
        set lans {
                type ipv4_addr
                flags interval
                auto-merge
                elements = { 192.168.0.11,
                             192.168.0.12,
                             192.168.0.15-192.168.0.20 }
        }

        chain PREROUTING {
                type nat hook prerouting priority dstnat; policy accept;

        }

        chain INPUT {
                type nat hook input priority 100; policy accept;
        }

        chain POSTROUTING {
                type nat hook postrouting priority srcnat; policy accept;
                oif "eno2" ip saddr @lans counter masquerade
        }

        chain OUTPUT {
                type nat hook output priority -100; policy accept;
        }
}


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 16:30 
При запуске сервера запускается это:
ip address add 192.168.250.1/24 dev tap_vb0
iptables -t nat -A POSTROUTING -s 192.168.250.0/24 -j SNAT --to-source 8x.14x.4x.20x
и как это через nft?

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 24-Фев-22 11:07 
table inet filter {
...
set nat {
        type ipv4_addr
        flags interval
        elements = {
                192.168.1.0/24,
                192.168.250.0/24
        }

...
    chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        oifname "OUT_INTERFACE" ip saddr @nat counter snat to 8x.14x.4x.20x
    }
}


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 16:32 
и dnsmasq занимается динамическими IP

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 05:38 
А по-моему, там всё отлично. Именованные списки sets и maps - очень удобны, жаль только, что не глобальны.
jump, так вообще - вещь, во многих случаях позволяющая избавиться от линейного поиска.
Вот подход линейных портянок pf и ipfilter без каких либо списков, на мой взгляд, не оптимальен - это подход а-ля Cisco acl 20-25 летней давности.
pf пригоден только как хостовый пакетный фильтр, и то часто хотелось бы большего.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sw00p aka Jerom , 22-Фев-22 06:52 
>jump, так вообще - вещь, во многих случаях позволяющая избавиться от линейного поиска

пример в студию


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 10:26 
Точно так же, как в iptables. Синтетический пример:
iif eth0 ...
...
iif eth0 ...
iif eth1 ...

меняем на
iif eth0 jump eth0-forward

table eth0 eth0-forward {
   ваши проверки
}

И пакеты не бегают по линейному списку


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sw00p aka Jerom , 22-Фев-22 12:08 
>[оверквотинг удален]
> iif eth0 ...
> ...
> iif eth0 ...
> iif eth1 ...
> меняем на
> iif eth0 jump eth0-forward
> table eth0 eth0-forward {
>    ваши проверки
> }
> И пакеты не бегают по линейному списку

это что за пример? по какому линейному списку если правила форвардинга никак не пересекаются с правилами фильтрации. Давайте конкретный полный пример, как с реализацией в iptables так и с nftables.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 13:09 
Правила могут пересекаться как для разных интерфейсов, так и для сервисов.
В гугле всё есть - идите и берите "полный пример".

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено leap42 , 22-Фев-22 06:39 
Кулсисопы негодуе, а сетевикам - каеф xD
/s

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено User , 22-Фев-22 10:05 
Сетевики, однако, на цисках давно, и даже sdn все нихрена не на голых *tables.
В общем, пионэры идите в...

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено leap42 , 22-Фев-22 16:22 
> В общем, пионэры идите в...

Пиоэнэры админят свои циски (привет 90е) с венды через pussy.exe, пока профи сидят на линухах (на которых тож внезапно есь огнестена, и давно перешли на жуники). Да и на серваках firewall в приличных конторах настраивает сетевик, а не кулсисоп, как в вашей богадельне.

/s


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено User , 23-Фев-22 07:19 
> Пиоэнэры админят свои циски (привет 90е) с венды через pussy.exe,

Вы так говорите, как будто в этом есть что-то плохое)
> Да и на серваках firewall в приличных конторах настраивает сетевик, а не кулсисоп, как в вашей богадельне.

Ага. На всех трех. Настраивает и настраивает, настраивает и настраивает, наяривает... В перерывах между извлечением застрявшей бумаги из принтера и переносом монитора Зинаиды Васильевны от окна чтоб не дуло.
Firewall. На серваках. Сетевики. В 2022. Ъ.
В худшем случае это какой нибудь ansible по всему зоопарку делает, в более ином вообще ни файрволла ни серваков - одна оркестрашка в облаке...


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено пох. , 03-Мрт-22 13:09 
> одна оркестрашка в облаке...

и сплошной ALLOW для всех.

А потом нвидия такая "ой, даже верилоги поперли!" - кто бы мог подумать, да и было ли, чем.
(особенно учитывая что кульхацкеры ТОЖЕ не смогли - правда "зато у нас есть бэкап!")



"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 11:10 
Один из немногих вменяемых фильтров пакетов.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 06:55 
После systemd хоть камни с неба

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 08:22 
что то не осилил как такую конструкцию втащить?

-A PREROUTING -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name DEFSSH --mask 255.255.255.255 --rsource
-A PREROUTING -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 --name DEFSSH --mask 255.255.255.255 --rsource -j DROP

а ещё я в ipset добавляю себя на несколько часов когда удачно по ssh захожу и соответственно есть правило
-A PREROUTING -m set --match-set temp_allow_hosts src -j ACCEPT

кто то пытался такое перетаскивать в nft?


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 10:36 
https://stackoverflow.com/a/69178498 например

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Sultan , 22-Фев-22 11:09 
С ipset надо переписывать на named sets и named maps. Например:

-A PREROUTING -m set --match-set temp_allow_hosts src -j ACCEPT
надо переписать на named sets

table ip nat {
        set temp_allow_hosts {
                type ipv4_addr
                flags interval
                auto-merge
                elements = { 192.0.0.0/24, 192.168.0.0/24,
                             192.168.10.0/24, 192.168.20.0/24,
                             192.168.251.0-192.168.254.255 }
        }
...
        chain POSTROUTING {
                ip saddr @temp_allow_hosts counter accept
        }
...
}

Изучайте документацию - там всё есть.
Есть и недостаток - пока переписаны не все модули.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 10:42 
Шли годы...
А документации по nftables (нет, пара кривых, устаревших вики-страниц - это не она) так и не появлялось.

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 13:54 
man nft

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено пох. , 03-Мрт-22 13:11 
как будто документация по iptables была чем-то хороша?

Последней качественной линуксной документацией был LARTC. Причем и тот вызывал плевки и перекошенные рожи кодерков "нэ так всэ это было, нэ так!" - поскольку писали его методом реверса, проб и ошибок. Кодеркам было некогда писать документацию, надо было быстрее-быстрее еще что-то поломать.


"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено March_13 , 22-Фев-22 13:12 
Раз уж упомянули... скажите, а вы SCTP часто используете?

"Выпуск пакетного фильтра nftables 1.0.2"
Отправлено Аноним , 22-Фев-22 14:02 
Я сказал демону sshd использовать SCTP. Работает. Но не тестировал пропускную способность по сранению с TCP.