Суслики-партизаны засевшие на просторах интернета, усиливают диверсии на VoIP коммуникации. Один из менеджеров компании МТС, в ответе на вопрос клиента - «что делать ? У нас на 400 килорублей наговорили», ответил - «Всего-то? Это маленькая сумма...». Поэтому не теряйте бдительности товарищи! Партизаны не дремлют! Спасибо нашему фанату-эксперту по Микротикам Виталию, прислал мне интересную ссылку на сайт микротика со статьей про связку Микротик-fail2ban. Статья на английском, я как мог ее попытался понять, перевести и применить в качестве тяжелой артиллерии. Кроме того что кое-что не дописано, похоже в оригинал вкралась ошибка, потому что блокировать надо исходный адрес, а не адрес назначения. Привожу строку:
mikrotik ":ip firewall filter add action=drop chain=forward dst-address=<ip> comment=AutoFail2ban-<ip>"
Получается, что при форварде пакетов с адреса суслика на адрес вашего астера, допустим 192.168.1.10, не будет генерироваться правило на проход к Астериску. Будут баниться форварды от Астериска к суслику. Мне кажется не правильным такое правило :
chain=forward action=drop dst-address=95.138.162.150
Должно быть как-то так :
chain=forward action=drop src-address=95.138.162.150
Поэтому в файлике я подправил :
mikrotik ":ip firewall filter add action=drop chain=forward src-address=<ip> comment=AutoFail2ban-<ip>"
Результат — Суслики попадают в капкан. Штуки по 4 в час.
А теперь на корявом русском языке, мануал (как я его понял :) ) и небольшие исправления и допиливания.
1) Берем линуксовую машину где крутится Астер и Fail2Ban . На ней от имени пользователя под которым запускается Fail2Ban (обычно root) генерируем ключи для ssh.
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
b8:ea:79:ad:61:c4:e0:1a:66:46:5b:0e:70:b6:aa:38 Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
The key's randomart image is:
+--[ DSA 1024]----+
+---------+
В итоге хрум-хрума, готов ключег. Внимание!!!! При генерации не вводите ключевую фразу (Enter passphrase (empty for no passphrase):) !!!!
Публичный ключег переносим на микротик
scp -P 22 (или какой вы ему ssh задали) ~/.ssh/id_dsa.pub Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. .1.1:/
2)На нашем любимом монстре — Микротике, производим действия:
[admin@mikrotik] > user add address=LINUX-SERVER-IP-ADDRESS (типа 192.168.1.10) group=full
[admin@mikrotik]> user ssh-keys import public-key-file=id_dsa.pub user=linux
если не ругнулось — значит всосался ключег. Орудия расчехлили, дрожите суслики!
3)проводим настройку линуксовой машины. Создаем файлик, который будет запихивать правила в Микротик по ssh.
nano /usr/bin/mikrotik вписываем туда:
#!/bin/bash
ssh -l linux -p22 -i /root/.ssh/id_dsa MIKROTIK-IP-ADDRESS "$1"
Соответственно не забываем сделать его исполняемым - chmod 0755 /usr/bin/mikrotik
для fail2ban создаем - nano /etc/fail2ban/action.d/mikrotik.conf и впихиваем туда :
# Fail2Ban configuration file
#
# Author: Ludwig Markosyan
# Release 09/02/2013
#
# $Version: 1.0 BETA $
#
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart =
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop =
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck =
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address типа сюда попадет адрес Суслика-партизана
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
# Именно SRC !!!! Банить трафик от сусликов, а не к сусликам !!!
# и еще очень важно !!!! посмотрите номер правила FORWARD к вашему астериску !!!
# Что-бы правила работали, они должны быть ПЕРЕД ним!!!
actionban = mikrotik ":ip firewall filter add action=drop chain=forward src-address=<ip> place-before=<Вставьте сюда номер форварда перед которым вставлять> comment=AutoFail2ban-<ip>"
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionunban = mikrotik ":ip firewall filter remove [:ip firewall filter find comment=AutoFail2ban-<ip>]"
Повторюсь,очень важно !!!! посмотрите номер правила FORWARD к вашему астериску !!! Что-бы правила работали, они должны быть ПЕРЕД ним!!! Иначе до них просто не дойдет.
Правим nano /etc/fail2ban/jail.conf
Я тут тоже обнаглел и сделал по своему. Учитывая, что подключая сейчас VoIP без защиты, ощущения как в публичном доме без презерватива, я решил подстраховаться.
Защита двойная, на случай сброса или перепрошивки Микротика (список пропадает).
[ASTERISK]
enabled = true
filter = asterisk
### дальше все порты с iax по sip . Одна строка — генерит правила для iptables
#### на линухе, вторая запускает файлик микротик которому автоматом передает
#### адрес суслика и БАНИТ ГАДА в Микротике!!!!
action = iptables-multiport[name=aster-full, port=4000:5090, protocol=udp]
mikrotik
logpath = /var/log/asterisk/messages.newmail
maxretry = 4
bantime = 260000 ### причем банит НАДОЛГО !!!!
ignoreip = 127.0.0.1
загляните еще в asterisk.conf. У мнея он выглядел вот так :
# Fail2Ban configuration file # # Author: Xavier Devlamynck # # $Revision$ # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = common.conf [Definition] # 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>:.*' - 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.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny) NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - No matching peer found NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - Wrong password 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>.* NOTICE.* .*: <HOST> failed to authenticate as '.*' NOTICE.* .*: <HOST> tried to authenticate with nonexistent user '.*' VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer ### NOTICE.* .*: Sending fake auth rejection for device.* \(<HOST>:.*\) NOTICE.* .*: Sending fake auth rejection for device .*\<sip:.*\@.*\>;tag=.* \(<HOST>:.*\) # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = |
Вот собственно и все. Далее рестарт fail2ban и вперед.
/etc/init.d/fail2ban restart
Проверить надежность презерватива нашей защиты можно установив утилитку sipsak. Пошлем нашему серверу дурацкий запрос на авторизацию :
sipsak -U -s sip:Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
:5060
после это IP вашей машины будет забанен в правилах f2b на сервере Астериска и тут же выскочит дополнительное правило жестоко гасить ваш адрес в файрволе Mikrotika при обращении через него на сервак Астериск.
Ну теперь собственно, орудия заряжены, наведены... По Сусликам-Партизанам... ОГОНЬ!!!!
В лист "asterisk-my-enable" вносим провайдеров и прочих сип клиентов которые точно "наши".
Комментарии
я там подробности в почту бросил. а есть ли файлик iptables-multip ort.conf ? и есть ли в нем переменные ?
[line 582]: 'mikrotik\n'
в секции jail.conf следующие строки:
[postfix-sasl]
enabled = true
filter = sasl
action = iptables-multip ort[name=sasl, port="smtp,smtp s", protocol=tcp]
mikrotik
logpath = /var/log/maillog
Если вместо iptables-multip ort[] поставить mikrotik то все нормально.
может быть синтаксис напутал, перенос строки или еще что то? Подскажите плиз
Да, конечно. Просто здесь для наглядности. А так правило типа
actionban = mikrotik ":ip firewall address-list add address= list=AsteriskSupeBlackList"
а в фильтрах банить эти адреса из списка. Многие к сожалению боятся использовать огромные возможности листов. И белые, и черные списки. Любого цвета и ориентации )))))) Туда же сваливать попытки сканировать порты и т.д. . Главное что в списках есть время блокировки.
Спасибо за интерес и за коммент ! Успехов!
зачем плодить новые правила? По мне так лучше добавить этот ip в список по имени, который блочится.
ip-firewall-address list
RSS лента комментариев этой записи