правила fail2ban и iptables переполняются (, что приводит к плохой пропускной способности)

Файл, используемый для блокировки, не имеет значения, сценарий использует $0, поскольку известно, что этот файл существует.

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

Вы можете использовать любой файловый дескриптор, не обязательно 0. Блокировка удерживается на файле, открытом для файлового дескриптора, а не на самом дескрипторе.

( flock -x 9 || exit 1
  echo 'Locking for 5 secs'; sleep 5; echo 'Done' ) 9>/tmp/lock &
2
01.03.2021, 19:03
1 ответ

ipsetбыл разработан для решения этой проблемы. Вы можете создать набор IP-адресов или подсетей :

.
ipset create bannedv4 hash:net family ipv4 comment
ipset create bannedv6 hash:net family ipv6 comment

Добавьте одно правило iptables, подобное этому:

iptables -A INPUT -m set --match-set bannedv4 src -j DROP
ip6tables -A INPUT -m set --match-set bannedv6 src -j DROP

Затем вы можете добавить много записей в запрещенные наборы. Я не знаю, как настроить fail2ban для его использования. Для меня уже есть действия ipset, определенные в /etc/fail2ban/action.d, но это, вероятно, зависит от дистрибутива.

ipset add bannedv4 1.2.3.4/16 comment "SSH bot"
ipset add bannedv6 64:ff9b::1.2.3.4/112 comment "SSH bot"

Также возможно наличие записей с истекающим сроком действия. Когда вы создаете набор, просто добавьте опцию timeout 604800, чтобы запретить их только на неделю. Вы можете переопределить этот тайм-аут по умолчанию, передав ту же опцию в ipset add. Вы, вероятно, также захотите сохранить наборы из своих сценариев инициализации, как вы сохраняете свои правила iptables. Обратите внимание, что вы должны восстановить наборы перед правилами iptables.

ipset save > /var/lib/firewall/ipset
ipset restore < /var/lib/firewall/ipset
1
18.03.2021, 22:28

Теги

Похожие вопросы