Заметка. Защита Asterisk с помощью Fial2ban в связке с pf.

Вы хотите поделится своими решениями для конкретных задач? У Вас есть советы и хитрости? Расскажите о них здесь.

Заметка. Защита Asterisk с помощью Fial2ban в связке с pf.

Непрочитанное сообщение AzureZ » 28 окт 2010, 07:08

Защита Asterisk с помощью Fial2ban в связке с pf.

Приключилась с одним знакомым не редкая история, а именно подобрали пароль к логину в asterisk ну и поговорили хорошо за его счет. Проблема ясна - простые короткие пароли.

Fail2ban – это простенький сервис, который поможет отслеживать и блокировать атаки, анализируя лог файлы той или иной службы. При обнаружении атаки fail2ban может занести ip источника в таблицу фаервола, уведомить по электронной почте и т.д. Сервис очень гибок в настройке, написан на python.

Установка и настройка fail2ban

Устанавливаем из портов. За собой он потянет Python, если у Вас он не установлен.
Код: Выделить всё
cd /usr/ports/security/py-fail2ban; make install clean


После установки переходим в каталог /usr/local/etc/fail2ban и приступаем к настройке.
Код: Выделить всё
cd /usr/local/etc/fail2ban


В папке находятся 2 поддиректории.
action.d – Хранятся файлы, в которых описываются действия при срабатывании правил.
filter.d – Хранятся шаблоны, использующие в основном регулярные выражения, которые служат для обнаружения атак, попытки подбора паролей, и т.д.

А так же 2 файла:
fail2ban.conf - Файл содержит общие настройки для демона, такие как уровень логирования и т.д.
jail.conf - Файл в котором содержится описание фильтров.

Редактируем файл jail.conf, в конец файла добавляем следующее.

Код: Выделить всё
[asterisk-pf]
enabled = true
filter = asterisk
action = pf[table=asterisk-ban]
       sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 86400
ignoreip = 192.168.15.0/24ляем


Немного подробнее о переменных.

filter = asterisk - Название фильтра, которые будут использоваться для обнаружения совпадений.
В случае срабатывания фильтра, будут выполнены следующие действия.
action = pf[table=asterisk-ban]
sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com]

pf[table=asterisk-ban] - Будет выполнен скрипт pf.conf (в директории action.d), которому будет передана переменная table со значением asterisk-ban (Где asterisk-ban - это название таблицы в pf)
sendmail[name=ASTERISK, dest=root, sender=fail2ban@example.com] - Будет отправлено уведомление о срабатывании фильтра. (name - тема письма, dest - кому будет послано, sender - отправитель)
logpath = /var/log/asterisk/messages - Путь до лог файла asterisk
maxretry = 5 - Количество совпадений, который вызывает блокировку IP адреса
bantime = 86400 - Продолжительность (в секундах), в течение которых IP адрес будет блокирован.
ignoreip = 192.168.15.0/24 - Не проверять данные сети, IP адреса.

Создадим файл - шаблон /usr/local/etc/fail2ban/filter.d/asterisk.conf следующего содержания.

Код: Выделить всё
cat /usr/local/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 "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
          NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
          NOTICE.* <HOST> failed to authenticate as '.*'$
          NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
          NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
          NOTICE.* .*: Failed to authenticate user .*@<HOST>.*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =


Далее создаем файл /usr/local/etc/fail2ban/action.d/pf.conf в котором опишем связь с pf.

Код: Выделить всё
cat /usr/local/etc/fail2ban/action.d/pf.conf
[Definition]

actionstart =
actionstop =
actioncheck =
actionban = pfctl -t <table> -Ta  <ip>
actionunban = pfctl -t <table> -Td <ip>

[Init]

port = any
localhost = 127.0.0.1


Где переменную <table> мы описали в jail.conf (action = pf[table=asterisk-ban])

Asterisk


Теперь нужно немного настроить Asterisk.
Код: Выделить всё
vim /usr/local/etc/asterisk/logger.conf

И раскомментируем
Код: Выделить всё
[general]
dateformat=%F %T


Заходим в консоль asterisk и рестартуем сервис логирования
Код: Выделить всё
asterisk -rx "logger reload"


PF

Добавим блокирующее правило в pf.conf. Для примера:
Код: Выделить всё
block in log quick on $EXT_IF proto {tcp udp} from <asterisk-ban> to $EXT_IF port 5060


Запуск

Добавляем fail2ban в /etc/rc.conf.
Код: Выделить всё
echo ‘fail2ban_enable="YES"’ >> /etc/rc.conf

И запускаем
Код: Выделить всё
/usr/local/etc/rc.d/fail2ban start


Теперь можно проверить, попробовать авторизироваться на asterisk с неправильным паролем и посмотреть, что из этого получится, должно будет прийти письмо, если вы добавили эту возможность, или смотрите лог файл.

Логи fail2ban пишет в /var/log/fail2ban.log или настройте сами, куда вам удобно в /usr/local/etc/fail2ban/fail2ban.conf
Постскриптум
В папке filter.d вы можете найти много различных фильтров ко многим известным сервисам, да вы и сами можете написать их, это не так сложно.

И еще по поводу Asterisk. Помните, fail2ban не поможет Вам, если вы используете легкие пароли (123 и т.д.), используйте сложные, длинные пароли, по возможности привязывайте аккаунты к ip адресам. Только совокупность этих мер поможет вам и вашей компании не получить гигантский счет за связь.
AzureZ
Ученик
Ученик
 
Сообщения: 108
Зарегистрирован: 27 сен 2010, 09:49
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение Raven2000 » 29 окт 2010, 09:06

А в статью? =)
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.

Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение AzureZ » 29 окт 2010, 10:41

Думаешь как статью?) Вроде коротенькая заметка)
AzureZ
Ученик
Ученик
 
Сообщения: 108
Зарегистрирован: 27 сен 2010, 09:49
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение Raven2000 » 29 окт 2010, 10:50

Да и как в FAQ уже не влезает =)
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.

Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение AzureZ » 29 окт 2010, 11:07

Попозже оформлю тогда)
AzureZ
Ученик
Ученик
 
Сообщения: 108
Зарегистрирован: 27 сен 2010, 09:49
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.

Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение Raven2000 » 29 окт 2010, 12:59

Если что я помогу )
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.


Re: Заметка. Защита Asterisk с помощью Fial2ban в связке с p

Непрочитанное сообщение Raven2000 » 09 апр 2011, 00:42

Cancer ты чё анонимом то? Давай регся! =)
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]
Аватара пользователя
Raven2000
-=_UNIX_=-
-=_UNIX_=-
 
Сообщения: 680
Зарегистрирован: 14 сен 2010, 13:08
Откуда: Там, где нас нет.
Благодарил (а): 1 раз.
Поблагодарили: 37 раз.


Вернуться в Howtos и FAQs

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron