При получении более 20 SIP пакетов с одного адреса в течение секунды, генерируем событие флуда, которое ловит fail2ban. И блокируем трафик на следующую секунду.
# Пишем количество пакетов, соответствующих правилу, и IP-адрес их источника в список SIP.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --set --name SIP
# Если за секунду поступило больше 20 пакетов, то пишем в лог и блокируем адрес.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j LOG --log-prefix "Iptables: SIP flood "
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j REJECT
Правила нужно вставлять до общего разрешения RELATED,ESTABLISHED.
Далее отлавливаем событие с помощью fail2ban. Создаем новый джеил.
[sip_flood]
enabled = true
filter = sip_flood
port = 5060,5061
action = iptables-allports[name=SIP_FLOOD, protocol=all]
sendmail[name=SIP_FLOOD, dest=admin@domain, sender=server@domain]
logpath = /var/log/iptables.log
maxretry = 1
bantime = 600 ; 10 min
В /etc/fail2ban/filter.d/sip_flood.conf.
[INCLUDES]
before = common.conf
[Definition]
failregex = ^(.*)Iptables: SIP flood(.*)SRC=<HOST>(.*)$
ignoreregex =
# Пишем количество пакетов, соответствующих правилу, и IP-адрес их источника в список SIP.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --set --name SIP
# Если за секунду поступило больше 20 пакетов, то пишем в лог и блокируем адрес.
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j LOG --log-prefix "Iptables: SIP flood "
-A INPUT -p udp --dport 5060 -i ens34 -m recent --update --seconds 1 --hitcount 20 --name SIP -j REJECT
Правила нужно вставлять до общего разрешения RELATED,ESTABLISHED.
Далее отлавливаем событие с помощью fail2ban. Создаем новый джеил.
[sip_flood]
enabled = true
filter = sip_flood
port = 5060,5061
action = iptables-allports[name=SIP_FLOOD, protocol=all]
sendmail[name=SIP_FLOOD, dest=admin@domain, sender=server@domain]
logpath = /var/log/iptables.log
maxretry = 1
bantime = 600 ; 10 min
В /etc/fail2ban/filter.d/sip_flood.conf.
[INCLUDES]
before = common.conf
[Definition]
failregex = ^(.*)Iptables: SIP flood(.*)SRC=<HOST>(.*)$
ignoreregex =