Asterisk + Fail2Ban

Asterisk + Fail2Ban

В данной статье мы расскажем как сделать связку Asterisk + Fail2Ban. Произведем минимальные настройки Fail2Ban для обеспечения безопасности Asterisk.

Установим требуемые пакеты

apt-get install fail2ban
apt-get install iptables

Fail2ban содержит правила и фильтры для Asterisk по умолчанию в файле /etc/fail2ban/filter.d/asterisk.conf

/etc/fail2ban/jail.conf

Настроим правила для IPtables, по которым Fail2Ban будет добавлять злоумышленников

[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root@localhost, sender=fail2ban@localhost]
logpath = /var/log/asterisk/messages
maxretry = 3
findtime = 86400
bantime = 604800

Создадим отдельный лог для fail2ban

В файле /etc/asterisk/logger.conf добавляем следующее:

messages => notice,warning,error
asterisk -rx "logger reload"

Обновим правила

service fail2ban restart

Проверяем работу Fail2Ban

Посылаем некорректные запросы на авторизацию

sipsak  -U  -s sip:s@192.168.0.1:5060
sipsak  -U  -s sip:s@192.168.0.1:5060
sipsak  -U  -s sip:s@192.168.0.1:5060

Смотрим iptables

iptables -vnL --line
Chain fail2ban-ASTERISK (1 references)
 target     prot opt source               destination  
 DROP       all  --  192.168.0.10         anywhere
 RETURN     all  --  anywhere             anywhere

Смотрим статус fail2ban

fail2ban-client status asterisk-iptables
Status for the jail: asterisk-iptables
|- filter
|  |- File list: /var/log/asterisk/secure 
|  |- Currently failed: 0
|  `- Total failed: 3
`- action
   |- Currently banned: 1
   |  `- IP list: 192.168.0.10
   `- Total banned: 1

Удалить правило из iptables:

iptables -D fail2ban-ASTERISK 1

Дополнительно

Блокировка пакетов средствами IPtables по названию сканера:

iptables -I INPUT -p udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "sip-scan" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "sundayddr" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "iWar" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "sipsak" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "sipvicious" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "eyeBeam" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "sipcli" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "VaxSIPUserAgent" --algo bm -j DROP
iptables -I INPUT -p udp --dport 5060 -m string --string "SIVuS" --algo bm -j DROP

Пример забаненных

Chain fail2ban-ASTERISK(2 references)
num   pkts bytes target     prot opt in     out     source               destination
1       16  1360 DROP       all  --  *      *       93.171.15.223        0.0.0.0/0
2       27  2772 DROP       all  --  *      *       83.209.170.224       0.0.0.0/0
3       18  1704 DROP       all  --  *      *       157.122.99.2         0.0.0.0/0
4       20  2136 DROP       all  --  *      *       95.152.27.89         0.0.0.0/0
5   72891 4516K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0