Я бы предположил, что ваши комбинации флагов (правило 6 и последующие)почти все подпадают под действие правила 2, --state INVALID
.
Я применяю довольно строгий набор правил на одном из моих общедоступных -серверов, а настраиваемый fail2ban
сидит прямо там, вверху. (Я провожу три страйка и ты вылетаешь на пару часов, а три аута — бан на месяц. С парой исключений на основе IP-адреса -, чтобы предотвратить полную блокировку.)
Это (урезанная )версия моего rules.v4
набора
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
...
# Exceptions to allow suitably authorised traffic
...
-A INPUT -j LOG --log-level info --log-prefix "firewall: REJECT "
-A INPUT -j REJECT
Количество соответствующих пакетов от iptables --line-numbers -nvL INPUT
с начала месяца
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 97753 26M f2b-recidive tcp -- * * 0.0.0.0/0 0.0.0.0/0
2 94046 26M f2b-XXXXXXXXXXXX tcp -- * * 0.0.0.0/0 0.0.0.0/0
3 94046 26M f2b-XXXXXXXXXXXX tcp -- * * 0.0.0.0/0 0.0.0.0/0
4 88576 26M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0
5 902K 333M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
6 2463M 2399G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
7 1152 52453 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
...
19 417K 13M ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
20 56921 4276K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "firewall: REJECT "
21 56921 4276K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Как видите, мы получаем довольно много пакетов с неверными данными, но в основном это простые проверки TCP/IP. И большинство из них запускают правила fail2ban
, как и должны.
Возможно одновременное использование iptables
и nftables
ядра, помимо NAT, но это требует некоторого внимания. Порядок применения правил определяется приоритетом хука; legacy iptables
по умолчанию равен 0, поэтому хуку nft
можно установить приоритет -1, если он должен применяться до iptables
, или 1, если он должен применяться позже.
iptables-nft
предназначен для облегчения перехода на nft
. Установка этого вместе с nft
позволит программам, ожидающим интерфейс iptables
/ ip6tables
, продолжать работу, используя nftables
в ядре.
Этот подход используется в современных контейнерных средах, таких как Kubernetes. :Предполагается, что контейнеры определяют, какой набор таблиц используется хостом, и используют соответствующий iptables
интерфейс (, загружая устаревшие таблицы илиnftables
). Подробнее см. Kubernetes issue #71305 .
Основной проблемой является сочетание iptables-nft
и iptables-legacy
:: они используют один и тот же приоритет, поэтому пакеты проходят через обе цепочки и нигде не заканчиваются.
См. Когда и как использовать приоритеты цепочки в nftables для получения подробной информации о приоритетах nftables
.