AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Сканирование логинов/паролей вашего Астериска

Newbies/FAQ Forum 19 сообщений 19.07.2011 14:00 - 03.08.2011 13:38
#1 19.07.2011 14:00

Сканирование логинов/паролей вашего Астериска


Есть такая прога sipautohack, она сканирует лигины пароли к астериску. http://enablesecurity.com/products/enabl ... hack-demo/
Хочу себя просканировать, посмотреть на дыры. Где скачать бесплатную на нашел. Где взять, кто знает?
#2 19.07.2011 14:31

А sipp освоить?
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#3 19.07.2011 15:29

Наверное всётаки не sipp, а sipvicious
#4 19.07.2011 16:02

Smile
#5 19.07.2011 16:03

так sipp насколько я знаю она же не покажет дыры в астериске, я читал про нее, по моему она процессор только тестирует и память. а sipautohack, по ней могут вычислить ip астериска и логин пароль подобрать, ну по ссылке можно посмотреть ролик как она работает. А sipvicious, это помоему ерунда. у меня астериск был вообще открыт, я попробовал ей пароли посмотреть и ничего она не показала. А вот sipautohack, по ней похоже могут и сервак взломать, если мер не предпринять надлежащих.
#6 19.07.2011 16:27

Защита от подобных программ достаточно просто выполняется:
устанавливаем iptales и fail2ban дальше настраиваем:

/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.* .*: Registration from '.*' failed for '' - Peer is not supposed to register
NOTICE.* .*: Registration from '.*' failed for '' - ACL error (permit/deny)
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*

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



в /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@example.org]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200


в файле /etc/asterisk/logger.conf
Код:

[general]
dateformat=%F %T

[logfiles]
messages => notice,warning,error


после этих действий

/etc/init.d/fail2ban restart
asterisk -r
asterisk*CLI> logger reload
asterisk*CLI> quit

И спим спокойно Smile
ЗЫ Категорически рекомендую выполнить эти действия, особенно если сервер с астериском смотрит в мир. У меня в день по 3-5 IP адресов в бан лист попадает.
#7 19.07.2011 19:32

Круто. Мерси от всего сообщества *.
Вот только если подскажите как для данного случая iptable настроить было бы вообще крутяк.
Я ставл эту прогу, ssh она банит, а вот паролей я сколько хочешь софтфоном подбирал и ничего не банило меня. Я так понял, что iptable настроить надо чтобы подбор паролей банило, но это это не так просто оказалось. Если кто подскажет что там делать с iptable было бы совсем хорошо.
#8 19.07.2011 21:10

Описанный выше способ подходит для версии 1.4
Какой версии у Вас Астериск?
Специально настраивать iptables для fail2ban не нужно, просто устанавливаете и всё.
1.6 в продакшн не использовал, а на 1.8 настройки /etc/fail2ban/filter.d/asterisk.conf такие:

Код:


[INCLUDES]

[Definition]

failregex = Registration from '.*' failed for '(:[0-9]{1,5})?' - Wrong password
Registration from '.*' failed for '(:[0-9]{1,5})?' - No matching peer found
Registration from '.*' failed for '(:[0-9]{1,5})?' - Device does not match ACL
Registration from '.*' failed for '(:[0-9]{1,5})?' - Username/auth name mismatch
Registration from '.*' failed for '(:[0-9]{1,5})?' - Peer is not supposed to register
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' (from )
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
VERBOSE.* logger.c: -- .*IP/-.* Playing 'ss-noservice' (language '.*')


ignoreregex =


и всё прекрасно банится.

Added after 10 minutes:

Ещё можно в контекст [default] extentions.conf добавить:

Код:

exten => _X.,1,System(echo '${CHANNEL}' >> /var/log/asterisk/hackers.log)


Создать скрипт vim /home/asterisk/hackers.sh

Код:

#!/bin/bash

cat /var/log/asterisk/hackers.log | awk -v FS="[/-]+" "/^SIP\/[0-9.]+-[0-9a-zA-z]+/ {print \$2; }" | sort -u | awk "/[0-9.]+/ { str=\"iptables -A INPUT -s \" \$1 \" -j DROP\"; system(str); }"
sleep 1
rm /var/log/asterisk/hackers.log
touch /var/log/asterisk/hackers.log


и пускать его по крону каждую минуту:

Код:

0-59 * * * * root /home/asterisk/hackers.sh
#9 20.07.2011 05:42

у меня астериск 1.8 . так если просто установить она же не банит ничего. я пробовал. я ставил вот по этой ссылке http://my-debian.blogspot.com/2010/04/asterisk-fail2ban.html
Там есть Шаг 6. Запуск. # /etc/init.d/iptables start . Если оставить iptable то файла /etc/init.d/iptables не будет. его надо делать самому. Ну и наверное что то туда вписать надо будем. Я честно говоря в этом деле новичок, поэтому что писать не знаю. Да наверное не только я один тут такой лох. Так что будем безмерно благодарны за помощь в настройке iptable.
#10 20.07.2011 07:31

1. Sipvicious (да, сорри, ошибся) умеет находить в сети сип-серверы и ломать пароли.
2. Освойте iptables и его реализацию в дебиане или в том дистрибутиве, что вы пользуте. Долго, муторно, но того стоит.

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#11 20.07.2011 08:22

во блин, значит теперь никто нам не поможет c iptables? Sad
#12 20.07.2011 08:25

Ну вроде вот тут неплохо написано было...
#13 20.07.2011 08:29

будем читать тогда. а может может тем временем кто нить содержание рабочего файла iptables показать?
#14 20.07.2011 10:10

У iptables нет рабочего файла. Есть утилитки типа iptables-save и iptables-restore, которые пишут файлики, но это не совсем то. Реально, учите iptables.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#15 20.07.2011 10:48

Распечатал. Начал читать. Но вы учтите, я еще буду задавать вопросы! Smile
#16 23.07.2011 08:20

Цитата:
Описанный выше способ подходит для версии 1.4


у меня на 1.6 прекрасно работает

Цитата:
Если кто подскажет что там делать с iptable было бы совсем хорошо.


да ничего дополнительно не настраивал для iptables
проверить функциональность можно так:

# iptables-save

Код:
# Generated by iptables-save v1.3.5 on Sat Jul 23 10:11:08 2011
*filter
:INPUT ACCEPT [1171038:267748973]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [797168:178561167]
:fail2ban-ASTERISK - [0:0]
:fail2ban-SSH - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A INPUT -j fail2ban-ASTERISK
-A fail2ban-ASTERISK -j RETURN
-A fail2ban-SSH -j RETURN
COMMIT
# Completed on Sat Jul 23 10:11:08 2011


тут видим созданные цепочки:

:fail2ban-ASTERISK - [0:0]
и
:fail2ban-SSH - [0:0]

если бы был забаненный ip то он бы фигурировал в правилах... просто что бы не загромождать лишними правилами iptables, fail2ban банит не перманетно, а на определенное время указанное в конфигах для каждого сервиса.

[asterisk-iptables]

enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
#17 23.07.2011 12:14

lv333 писал(а):

ЗЫ Категорически рекомендую выполнить эти действия, особенно если сервер с астериском смотрит в мир. У меня в день по 3-5 IP адресов в бан лист попадает.


По моему, если * выставлена а мир, то в большинстве случаев он смотрит только на определенных провайдеров. Вот коммуникацию с ними и надо ограничить в iptables. А попытки соединения со всех остальных адресов - режектить с ответом host-unreachable. Если, конечно tarpit не настроить. С ним еще веселее будет.
Мое мнение такое - разрешать доступ к казенному астериску надо только с очень ограниченного круга IP-адресов. Если это невозможно (есть юзеря на динамике, на серых адресах домашних сетей), то поднимать VPN между ними и астериском. Ну и правило - всё, что не разрешено явно - запрещено.
#18 25.07.2011 11:40

Цитата:
По моему, если * выставлена а мир, то в большинстве случаев он смотрит только на определенных провайдеров. Вот коммуникацию с ними и надо ограничить в iptables. А попытки соединения со всех остальных адресов - режектить с ответом host-unreachable. Если, конечно tarpit не настроить. С ним еще веселее будет.
Мое мнение такое - разрешать доступ к казенному астериску надо только с очень ограниченного круга IP-адресов. Если это невозможно (есть юзеря на динамике, на серых адресах домашних сетей), то поднимать VPN между ними и астериском. Ну и правило - всё, что не разрешено явно - запрещено.


Да, я не спорю к к дополнению iptables можно в самом астериске в пирах прописывать пермит IP делается так


[permit-from](!)
deny=0.0.0.0/0.0.0.0
permit=xxx.xxx.xxx.xxx
;или по сети
permit=ххх.ххх.ххх.0/24

дальше в пире например:

[100](permit-from)
;тут настройка самого пира

Но иногда стоит задача разрешить авторизацию с любого IP, причем без использования VPN.
#19 03.08.2011 13:38

Немного подтёр (для читаемости, удалил лишние адреса), но вот мой рабочий iptables-save:

Код:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -s 10.158.x.x -i eth1 -p udp -m udp --dport 5060 -j ACCEPT //SIP сигнализация до провайдера
-A INPUT -s 10.158.x.x -i eth1 -p udp -m udp --dport 10000:20000 -j ACCEPT //RTP-трафик до провайдера
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth0 -p udp -m udp --dport 5060 -j ACCEPT //SIP сигнализация до внутренней сетки
-A INPUT -s 10.0.0.0/255.255.255.0 -i eth0 -p udp -m udp --dport 5060 -j ACCEPT //SIP сигнализация до второй внутренней сетки
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth0 -p udp -m udp --dport 10000:20000 -j ACCEPT //RTP трафик до внутренней сетки
-A INPUT -s 10.0.0.0/255.255.255.0 -i eth0 -p udp -m udp --dport 10000:20000 -j ACCEPT //RTP трафик до второй внутренней сетки
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT //Даём веб-доступ
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT //Защищённый веб-доступ
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //Разрешаем все уже установленные соединения
-A INPUT -s 192.168.0.0/255.255.254.0 -p icmp -m icmp --icmp-type 8 -j ACCEPT //Разрешаем пинг из внутренней сетки
-A INPUT -s 10.0.0.0/255.255.255.0 -i eth0 -p udp -m udp --dport 123 -j ACCEPT //Астериск так же сервер времени для айпишных телефонов
-A INPUT -s 192.168.1.х -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT //Разрешаем ssh только для одного айпишника
-A INPUT -d 127.0.0.1 -j ACCEPT //Разрешаем "внутреннее" общение
-A OUTPUT -d 172.16.2.11 -p tcp -m tcp --dport 8025 -j ACCEPT //разрешаем работать с почтой с внутреннего корпоративного сервака
-A OUTPUT -p udp -m udp --sport 123 -j ACCEPT //разрешаем ntp-подключения
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT //веб
-A OUTPUT -p tcp -m tcp --dport 8080 -j ACCEPT //веб
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT //веб
-A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT //фтп
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT //разрешаем пинговать кого хотим
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //все установленные и зависимые соединения - ок
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT //разрешаем ssh с астериска
-A OUTPUT -s 127.0.0.1 -j ACCEPT //разрешаем "внутреннее" общение
COMMIT


Комменты перед использованием тереть.