В интернете выложено множество статей о том, как настроить fail2ban с iptables, но очень мало написано про fail2ban и ufw. В сегодняшней статье мы расскажем, как установить и настроить fail2ban с FreePBX(Asterisk 13) и ufw. FreePBX установлена у нас на Ubuntu Server 12.04.
Установка:
apt-get install iptables fail2ban
Настройка:
Настраиваем действия с использованием ufw. Создаем файл /etc/fail2ban/action.d/ufw-asterisk.conf
[Definition] actionstart = actionstop = actioncheck = actionban = ufw insert 1 deny from actionunban = ufw delete deny from
Далее шаблонами описываем фильтр /etc/fail2ban/filter.d/asterisk.conf
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT
#
failregex = NOTICE.* .*: Registration from '.*' failed for ':.*' - Wrong password
NOTICE.* .*: Registration from '.*' failed for ':.*' - No matching peer found
NOTICE.* .*: Registration from '.*' failed for ':.*' - Username/auth name mismatch
NOTICE.* .*: Registration from '.*' failed for ':.*' - Device does not match ACL
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
VERBOSE.*SIP/-.*Received incoming SIP connection from unknown peer
WARNING.* Ext. s: "Rejecting unknown SIP connection from "
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Основной конфигурационный файл Fail2Ban находится /etc/fail2ban/jail.conf. В самый низ данного файла помещаем наш новый блок:
[asterisk-ufw] enabled = true filter = asterisk action = ufw-asterisk logpath = /var/log/asterisk/messages maxretry = 3 bantime = 3600
Описание параметров:
enabled = вкл/выкл true/false
filter = название нашего фильтра, который находится в /etc/fail2ban/filter.d/
action = название нашего действия, которое находится в /etc/fail2ban/action.d/
logpath = /var/log/asterisk/messages - лог, который анализируется (место можно менять в зависимости от того, куда у вас пишутся логи)
maxretry = 3 - число неправильных попыток авторизации
bantime = 3600 - время бана в секундах
Теперь нужно, чтобы Asterisk писал необходимые логи событий в определенный файл. Открываем /etc/asterisk/logger_logfiles_custom.conf и добавляем следующее:
messages => notice,warning,error,verbose
Если у вас голый Asterisk, то делаем следующее в /etc/asterisk/logger.conf:
[general] dateformat=%F %T [logfiles] console => notice,warning,error messages => notice,warning,error messages => security
Сохраняем, заходим в консоль Asterisk, делаем следующие действия:
logger rotate logger reload
Нам остается только перезагрузить наш сервис, включить ufw и все должно работать:
service fail2ban restrat ufw enable
На этом наша настройка завершена.
Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.