Установим Fail2ban.
CentOS 6 32-Bit
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install fail2ban python iptables
CentOS 6 64-Bit
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install fail2ban python iptables
CentOS 7
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-*.noarch.rpm
yum install fail2ban-firewalld fail2ban-systemd
Переходим к настройкам FreeSWITCH. В настройках sip-профиля /usr/local/freeswitch/conf/sip_profiles/internal.xml ищем параметр log-auth-failures и делаем его true
<param name="log-auth-failures" value="true"/>
Заходим в консоль FreeSWITCH и перезапускаем sip-профиль
sofia profile internal restart
Фильтр freeswitch.conf устанавливается по умолчанию вместе c fail2ban. Посмотреть фильтр можно в /etc/fail2ban/filter.d/freeswitch.conf
Создадим конфигурационный файл /etc/fail2ban/jail.local со следующим содержимым:
[freeswitch]
enabled = true
port = 5060,5061,5080,5081
filter = freeswitch
logpath = /usr/local/freeswitch/log/freeswitch.log
maxretry = 3
action = iptables-allports[name=freeswitch, protocol=all]
sendmail-whois[name=FreeSwitch, dest=root, sender=fail2ban@localhost]
bantime = 3600
Немного разъяснений по конфигу:
enabled — значение true указывает что данный jail активен,
false выключает действие изолятора.
port — указывает на каком порту или портах запущен целевой сервис.
filter — имя фильтра с регулярными выражениями, по которым идёт поиск.
logpath — путь к файлу логам FreeSWITCH, который программа Fail2ban будет обрабатывать с помощью заданного ранее фильтра.
action – операция, которая должна быть выполнена, если значение счётчика стало равным значению параметра maxretry.
maxretry - количество неудачных запросов за которое банится хост.
bantime - промежуток времени по умолчанию в секундах на которое банится провинившийся хост.
Если хотите поменять Default (по умолчанию), то это можно сделать в /etc/fail2ban/jail.conf
Теперь перезагрузим fail2ban и добавим в автозагрузку:
CentOS 6
/etc/init.d/fail2ban restartchkconfig fail2ban on
CentOS 7
systemctl restart fail2bansystemctl enable fail2ban.service
На этом настройка закончена, теперь fail2ban будет обнаруживать и предотвращать атаки на FreeSWITCH.
Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.