Опубликован выпуск пакетного фильтра nftables 1.0.7, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком...Подробнее: https://www.opennet.me/opennews/art.shtml?num=58791
Лучший пакетный фильтр. Хотя системы надо проектировать так, чтобы nftables/iptables были опциональными = чтобы система не перестала быть защищенной, если эти фильтры внезапно отключить.
Лучший?Уже 10 лет у них просят string/hex match, в ответ: используйте iptables.
нет регулярок? пичалько
Регулярки - тяжесть.
фильтровать айпишники по "регуляркам и строкам"? вы там с дуба рухнули? уже есть маски
Причём тут IP?!Где я написал хоть слово про IP?!
Мне содержимое пакетов надо анализировать и на основе этого drop.
И нет, я не ISP, мне это для домашней машины надо.
и что же ты там по сырому потенциально зашифрованному телу пакета собрался фильтровать?
Аноним, у тебя галлюцинации?Где ты увидел слово "зашифрованный" трафик?
Сначала ты нёс про IP, теперь про шифрование, дальше что?
Приведи юзкейс уже для такого.
Непонятно почему человека заминусили.
У меня такой юзкейс: в сторону бакэнда делаешь каунт на GET, при зашкаливании пишешь в сет. По этому сету в мир уменьшаешь размер окна в 0. Помогает от ddos школьников.
Как такое сделать на nftables пока не знаю, поделитесь, кто в курсе.
iptables -I INPUT -p tcp --sport 80 -m string --string "Location: http://warning.rt.ru/" --algo bm -j DROP
пишешь нфтейблес "пакеты перенаправлять в мою программу" и там онализируешь.
Песец.А вы мне подарите EPYC на 96 ядер, чтобы гонять трафик из ядра в userspace и обратно для потока в 500Mbit?
Значит просто, без задней мысли, пишешь нфтейблес "пакеты перенаправлять в мой модуль ядра" и там анализируешь
50 мбайт/с? 96 ядер ??? Такой поток пишется на жесткий диск 20 летней свежести одним ядром тех же времен
Чел, чем ты там занимаешься?!
Комменты пишет же
Тебе лучше на чём-то из этого https://www.xilinx.com/products/boards-and-kits/alveo.html фильтровать. Дешевле выйдет, чем 96 ядер.
>используйте eBPFfixed.
Изучаю базовые команды линуха. Уже взялся тыкать iptables, но тут узнал, что это легаси и ненужно. А собственно чем nftables лучше? Ну кроме того, что iptables выпиливают из свежих дистров.
> что iptables выпиливают из свежих дистровА в замен ничего не впиливают?
по теме "чем лучше" написаны кучи статей, но сложных и мудреных.
iptables остается до поры до времени, как один из интерфейсов управления, его правила компилируются в "nftables-байткод" и отдаются в ядро на исполнение.
iptables сейчас работает через nftables.
К тому же он проще, если его действительно удаляют из дистрибутивов то очень плохо
Лучше, ХЗ.Сложнее на порядок и синтаксис ад - да, несомненно.
Я голосую за приведения синтаксиса nftables к синтаксису rust. И все будут довольны.
Опять же безопастностЪ !
Что в нём адово? Синтаксис наподобие iproute2.
iptables никуда не денутся ещё ... всегда будут, просто потому что userspace API Линус не ломает, точка.Изучайте, используйте.
Другой вопрос, что в новомодных компаниях их местные senior devops могут решить, что nfilters - будущее, и вы обязаны их использовать.
iptables - это не API ядра, это утилиты. В ядре только, собственно, сам фильтр - netfilter. Так что выкинуть могут.> и вы обязаны их использовать
Ну, не утверждаю про обязаны, но nftables, как-минимум ИМХО, сильно читабельней.
>выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters).eBPF?
не взлетит, пока доцкеры сидят на iptables
Давно уже не использую iptables и вырубил его использование у докера вообще, только мешается.Вот все достаточно просто:
root@localhost:~# cat /etc/nftables.conf
#!/usr/sbin/nft -fflush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;ct state invalid counter drop comment "early drop of invalid packets"
ct state {established, related} accept comment "established, related"
iif lo accept comment "accept loopback"
ip saddr 192.168.0.0/16 accept comment "accept private networks"
ip saddr 172.16.0.0/12 accept comment "accept private networks"
ip saddr 10.0.0.0/8 accept comment "accept private networks"ip protocol icmp accept comment "accept all ICMP types"
#log prefix "Dropped: " flags all drop comment "dropped packets logger"
#log prefix "Rejected: " flags all reject comment "rejected packets logger"counter comment "count dropped packets"
}
chain forward {
type filter hook forward priority 0; policy accept;
counter jump docker-user
counter jump docker-isolation-stage-1
oifname "docker0" ct state related,established counter accept
oifname "docker0" counter jump docker
iifname "docker0" oifname != "docker0" counter accept
iifname "docker0" oifname "docker0" counter accept
}
chain output {
type filter hook output priority 0; policy accept;
}chain docker {
}
chain docker-isolation-stage-1 {
iifname "docker0" oifname != "docker0" counter jump docker-isolation-stage-2
counter return
}
chain docker-isolation-stage-2 {
oifname "docker0" counter drop
counter return
}
chain docker-user {
counter return
}}
table ip nat {
chain prerouting { type nat hook prerouting priority -100; policy accept;
fib daddr type local counter jump docker
}
chain input { type nat hook input priority 100; policy accept; }
chain output { type nat hook output priority -100; policy accept;
ip daddr != 127.0.0.0/8 fib daddr type local counter jump docker
}
chain postrouting { type nat hook postrouting priority 100; policy accept;
oifname != "docker0" ip saddr 172.17.0.0/16 counter masquerade
}
chain docker{
iifname "docker0" counter return
}
}
Волшебные номера вхардкожены, и - имена интерфейсов. А тогда - не так всё просто.
Помнится мне обещали что ip4 скоро кончится, зато ip6 который мне присвоят не требует настройки брандмауэра!
Наоборот же :). Не меньше, а больше брандмауэра, из-за отсутствия NAT.Но ipv6 всё равно отличная вещь, там, где он есть.
И ещё более отличная, там где его нет.
В Linux запилили NAT для IPv6.
это не тот нат, что в ип4.
>ip6 который мне присвоят не требует настройки брандмауэра!1. IPv6 в РФ не присвоят, РКН против.
2. Тебе безбожно врали.
> 1. IPv6 в РФ не присвоят, РКН против.Каво? У меня пров /56 сети раздаёт... Хошь подключай.
Я не осилил, в отличие от iptables. Это надо отдельно курс пройти по разработке конфигураций.