К основному контенту

Защита Asterisk. Fail2Ban

Установка

Для установки нам потребуются привилегии пользователя 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
Входим в директорию распакованного архива:
# 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
Настраиваем /etc/fail2ban/jail.conf

[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

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

Комментарии

Популярные сообщения из этого блога

Автообзвон на Asterisk (FreePBX)

Syntax of call files Specify where and how to call Channel : <channel>: Channel to use for the call. CallerID : «name» <number> Caller ID, Please note: It may not work if you do not respect the format: CallerID: «Some Name» <1234> MaxRetries : <number> Number of retries before failing (not including the initial attempt, e.g. 0 = total of 1 attempt to make the call). Default is 0. RetryTime : <number> Seconds between retries, Don't hammer an unavailable phone. Default is 300 (5 min). WaitTime : <number> Seconds to wait for an answer. Default is 45. Account : Set the account code to use. If the call answers, connect it here: Context : <context-name> Context in extensions.conf Extension : <ext> Extension definition in extensions.conf Priority : <priority> Priority of extension to start with Set : Set a variable for use in the extension logic (example: file1=/tmp/to ); in Asterisk 1.0.x use

Настройка записи разговоров freepbx

1. Заходим на Web-интерфейс  2. Выбираем   « Панель пользователя» и вводим логин и пароль для входа(логин и пароль — это внутренний номер абонента). 3. Если правильный логин и пароль, то попадаем в интерфейс пользователя: Дата  — дата звонка; Время  — время звонка; Номер  — отображается телефонный номер   ( а под ним — внутренний номер   ), с которого был произведен звонок; Источник  — указывается внутренний номер; Назначение  — указывается внутренний номер, куда был послан звонок; Длительность  — указывается время в секундах, телефонного разговора; Монитор  — имеет две иконки:  — открывает флеш плеер для проигрывания записи разговора;  — предлагает сохранить запись разговора на жесткий диск. 3. Прослушивание записи разговоров может происходить в двух вариантах: Вариант 1 Выбираете интересующий Вас звонок и нажимаете на иконку  , после чего под строчкой звонка откроется полоска флеш-плеера, где можно будет управлять ходом прослушивания звукового файла: Ва

Запись и обслуживание разговоров в Asterisk FreePBX

Как и многие другие компании мы используем  FreePBX —  графический интерфейс для Астериск. Служба безопасности требует записывать все входящие и исходящие звонки , не проблема все делается просто: Заходим в админку http://sip.domain.local/admin/config.php , далее General Settings и делаем как у казанно у меня на скрине: Вот вроде и все , но если не следить за записями  они забьют все место на масиве. На помощь нам приходит bash =) , пишем скрипт который будет удалять записи старше 14 дней ( для службы безопасности такой срок устраивает) #!/bin/bash # Указываем директорию где расположены файлы RECORDINGS=/var/spool/asterisk/monitor # Указываем период за какой срок удалять файлы записи  RECORDINGEXPIRY=14 # Указываем за какой срок хранить логи LOGEXPIRY=365 # Дата DATE=`date` # Удаляем записи старше $RECORDINGEXPIRY дней find $RECORDINGS -mtime +$RECORDINGEXPIRY -exec rm -rfv > removal-$DATE.log # Удаляем логи старше $LOGEXPRY find . -mtime +$LO