Назад | Перейти на главную страницу

Возможны ли условия гонки при использовании iptables-persistent и fail2ban вместе?

Я использую iptables модуль geoip разрешить трафик только из некоторых стран и fail2ban в общем, чтобы заблокировать сканирование.

Я знаю, что сам fail2ban управляет постоянством своих правил. Теперь я также хочу, чтобы мои правила geoip были постоянными, используя iptables-persistent.

Моя (потенциальная) проблема: Когда iptables-persistent восстанавливает правила, которые использует iptables-restore < /etc/iptables/rules.v4 без -n опция, что означает, что все существующие правила будут перезаписаны.

Теперь я боюсь условий гонки при запуске системы, когда fail2ban в середине или завершено восстановление своих правил, а затем iptables-restore перезаписывает все.

В настоящее время я поставил -n возможность /usr/share/netfilter-persistent/plugins.d/15-ip4tables который будет называться iptables-persistent но изменение некоторых сценариев, управляемых пакетом, не является хорошей идеей, поскольку оно может быть перезаписано обновлением.

Есть ли безопасный или стандартный способ восстановить правила iptables без потенциальных конфликтов при запуске службы fail2ban? Или это гарантировано iptables-restore будет работать до начала fail2ban?

Сейчас я поставил опцию -n

Конечно, вы можете использовать iptables-restore --noflush ... чтобы избежать удаления правил из fail2ban (или других сервисов). Просто помните о порядке правил (fail2ban будет вставлять правила перед всеми другими правилами в цепочке INPUT, поэтому, если вам нужно предварительно вставить некоторые другие правила в дальнейшем, используйте это необходимо с зависимостями служб).

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

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

Или гарантировано, что iptables-restore запустится до запуска fail2ban?

Вы должны добавить зависимость для службы fail2ban, чтобы гарантировать это.

Или вы можете попробовать переключиться на какой-нибудь лучший сетевой фильтр (например, nftables) с использованием реальных таблиц. Просто у вас может возникнуть такая же проблема, если какая-либо служба, начавшая очищать весь список (удаляя каждую таблицу), сделает это где-то посередине.