FRAUD на VOIP сетях.Слив голосового трафика на Premium rate номера .Правила защиты Elastix от взлома.
По данным международной ассоциации COMMUNICATIONS FRAUD CONTROL ASSOCIATION за 2011 - отраслевые потери от фрода в мире -- $ 40.1 миллиардов , или 1,88 % общих доходов.
Из этих 40 миллиардов, 3 миллиарда приходится на потери связанные со взломом IP PBX систем и сливом голосового трафика на полулегальные premium rate номерные емкости с повышенной стоимостью входящих звонков.
5 стран “лидеров”, где функционируют фродстеры: США, Индия, Великобритания, Пакистан, Филиппины
5 стран “лидеров”, терминирующих фродстерский трафик: Куба, Сомали, Сьерра-Леоне, Зимбабве, Латвия
По мнению Ростелекома проблемы с фродом в России связаны со следующими моментами:
• легкость и простота использования IP технологий - низкая цена
• недостаточная квалификация персонала - низкий уровень оборудования администрирования сетей
• недостаточный уровень поддержки сетей клиентов со стороны PBX / VoIP - PBX операторов
• нежелание тратиться на безопасность со стороны клиента
• недостаточность законодательной базы по противодействию
• исторический дисбаланс тарифов ( местная связь - МГ/МН)
• борьба за клиента ( безлимитные тарифы)
• широкое распространение IP технологий ( простота использования Терминация - VoIP решений)
• желание разжиться за счет коллег-операторов By-pass fraud
Для защиты IP PBX систем, а в частности Elastix существует два механизма - организационный и технический.
А) Организационные методы.
Так как все сливы трафика происходят на международные направления-договоритесь, если это возможно, с провайдером о закрытии мн направления.
Если это не возможно , что скорее всего так и есть, не используйте кредитных расчетов с вашим оператором связи.
Держите на счету примерную сумму, которая уходит у вас в месяц на связь.
При заключении договора с оператором уточняйте есть ли у него система антифрода.
B)Технические методы.
1)Не открываете Elastix во внешний мир , открывайте доступ только доверенным сетям, если это не возможно - открывайте только то, что нужно вашим абонентам (я на 100 процентов уверен, что доступ по ssh к вашему серверу им не нужен), для удаленного админского доступа используйте защищенные каналы, например VPN
2)Используйте сложные пароли и нестандартных пользователей , как на IP PBX, так и на абонентских устройствах(их тоже ломают).
3)Не используйте одинаковые пароли на разные модули и службы системы, для mySql - один пароль , для Web оболочки другой, для AMI -третий и т.д.
4)Если абонентскими устройствами являются софтфоны - используйте антивирусное по , так как существуют трояны, способные слить логин пароль с софтфона.
Теперь перейдем непосредственно к Эластиксу.
1)Не используйте контексты по умолчанию.
2)Используйте сложные пароли для экстеншенов и транков. Никогда не делайте номер экстеншена = пароль, это первое что брутфорсят.
3)Используйте в экстеншенах фильтрацию по IP :
Deny=0.0.0.0/0.0.0.0
Permit=192.168.200.105
доступ в этом случае возможен только с адреса прописанного в строчке Permit
4)Запретите гостевые вызовы , для этого в файле sip_general_custom.conf пропишите
allowguest=no
5)Отключите ответ астериска о неверном пароле, с помощью этого сообщения можно вычислить какие внутренние номера присутствуют в системе.Для этого зайдите в файл sip_general_additional.conf и проверьте наличие параметра alwaysauthreject = yes,если этой строчки там нет - добавьте ее в sip_general_custom.conf
6)Используйте программу Fail2ban, которая читает логи астериска и по определенной маске вычисляет попытку взлома.В Эластиксе она уже установлена, но ее нужно настроить.
Создадим файл asterisk.conf
touch /etc/fail2ban/filter.d/asterisk.conf
Поместим в него следующее содержимое
# Fail2Ban configuration file
#
#
# $Revision: 251 $
#
[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
#
# Asterisk 1.8 uses Host:Port format which is reflected here
failregex = NOTICE.* .*: Registration from '.*' failed for ':.*' - Wrong password
NOTICE.* .*: Registration from '\".*\".*' failed for '' - Wrong password
NOTICE.* .*: Registration from '\".*\".*' failed for '' - No matching peer found
NOTICE.* .*: Registration from '.*' failed for ':.*' - No matching peer found
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.* .*: Registration from '.*' failed for ':.*' - Device does not match ACL
NOTICE.* .*: Registration from '\".*\".*' failed for ':.*' - No matching peer found
NOTICE.* .*: Registration from '\".*\".*' failed for ':.*' - Wrong password
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
NOTICE.* .*: failed to authenticate as '.*'
NOTICE.* .*: tried to authenticate with nonexistent user '.*'
VERBOSE.*SIP/-.*Received incoming SIP connection from unknown peer
NOTICE.* .*: Sending fake auth rejection for device.* \(:.*\)
NOTICE.* .*: Failed to authenticate device.* \(:.*\)
# 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=ваш_емаил_куда_слать_сообщения_о_бане, sender=fail2ban@local]
logpath = /var/log/asterisk/full
maxretry = 3
bantime = 600
Стартуем
/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.200.147
`- 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.200.147 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