Установка
Для установки нам потребуются привилегии пользователя root. Для чего выполняем команду sudo su или просто su, в зависимости от дистрибутива.
Для установки из исходных кодов нам потребуется зайти в директорию /usr/src.
# cd /usr/src
Скачиваем с сайта производителя и распаковываем архив с программой. (перед загрузкой убедитесь о наличии более новых версий программы)
# wget http://sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2/download
# tar -jxf fail2ban-0.8.4.tar.bz2
# tar -jxf fail2ban-0.8.4.tar.bz2
Входим в директорию распакованного архива:
# cd fail2ban-0.8.4
Перед установкой fail2ban требуется установить сетевой фильтр iptables и интерпретатор языка python. Далее покаано как это сделать с помощью различных дистрибутивов. Возможно эти программы уже будут установлены в Вашей системе.
CentOS/Redhat:
# yum install python iptables
Debian/Ubuntu:
# apt-get install python iptables
Gentoo:
# emerge -avq python iptables
Устанавливаем Fail2Ban:
# python setup.py install
Устанавливаем скрипт инициализации Fail2Ban для Centos/Redhat:
# cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@localhost]
logpath = /var/log/messages
maxretry = 5 <- количество попыток до бана
bantime = 259200 <- длительность бана в миллисекундах
ignoreip=127.0.0.1, (#Свою подсеть если требуется)
В данном файле не забываем включить правила для SSH httpd/Apache и FTP и поменять правила sendmail-whois
Настраиваем логи Астера
Т.к. Fail2Ban воспринимает (^) началом строки а Астериск вставляет дату в [Дата] заодно чтобы упредить вероятные ошибки логирования переделываем нотификацию в системный лог.
Открываем /etc/asterisk/logger.conf
Редактируем секцию [general] если ее нет то создаем перед секцией [logfiles]
[general]
dateformat=%F %T
В секции [logfiles] вставляем или расскоментируем строчку
syslog.local0 => notice
перезагружаем модуль логов астера
asterisk -rx "logger reload"
Настраиваем IPtables
помещаем в /etc/sysconfig/iptables
*mangle
:PREROUTING ACCEPT [48:5495]
:INPUT ACCEPT [48:5495]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [53:5502]
:POSTROUTING ACCEPT [53:5502]
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# LOCAL ROUTING RULES
-A FORWARD -s Ваш IP или сеть /24 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
#-A INPUT -i eth1 -s IP адрес SIP провайдера -j ACCEPT
-A INPUT -i eth1 --dport 22 -j REJECT --reject-with icmp-host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s Наша подсеть -o eth1 -j MASQUERADE
COMMIT
Данный файл сделан с тем что наш Asterisk смотрит одним интерфейсов в локальную сеть, вторым в сеть интернет. Добавлять разрешения Fail2ban не требуется она сама пропишет нужные строки.
Запускаем iptables
/etc/init.d/iptables start
Запускаем fail2ban
/etc/init.d/fail2ban start
Пробуем 3 раза залогиниться с неправильным паролем, проверяем есть ли IP адрес в списке забаненых командой
fail2ban-client status asterisk-iptables
Проверяем появилось ли правило в iptables
Iptables -L
fail2ban-client status asterisk-iptables
Status for the jail: asterisk-iptables
|- filter
| |- File list: /var/log/asterisk/fail2ban
| |- Currently failed: 0
| `- Total failed: 7
`- action
|- Currently banned: 1
| `- IP list: 192.168.10.14
`- Total banned: 1
Проверяем появилось ли правило в iptables
Iptables -L
Chain fail2ban-SIP (1 references)
target prot opt source destination
DROP all -- 192.168.200.147 anywhere
Оповещение о попытке взлома fail2ban отправит вам на почту:
Hi,
The IP 192.168.10.14 has just been banned by Fail2Ban after
3 attempts against SIP.
При рестарте fail2ban - все забаненые IP сбрасываются.
Для автостарта fail2ban в файл /etc/rc.d/rc.local добавим строчку
/etc/rc.d/init.d/fail2ban start
Комментарии
Отправить комментарий