SIP Dictionary and Bruteforcing Attacks

От: Andriy Harisios <CGatePro_at_mx_ru>
Дата: Fri 19 Nov 2010 - 00:43:09 MSK


Здравствуйте.

Подскажите пожалуйста кто как защищается от SIP Dictionary and Bruteforcing Attacks, средствами самого CommunigatePro, и средствами OS.
В SMTP, HTTP и других есть запретить после Х на ХХ, а для SIP не нашли. А вот недавний случай.
Лог :Установки-Real-Time-SIP-(Передача-Приём)-Уровень Журнала:СБОИ IP Адрес сервера 192.100.ХХХ.ХХХ
Размер лог файла более 200мб, все записи такого типа.

04:05:29.714 1 ROUTER SYSTEM: '100@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account

Пользователя или псевдонима 100 на сервере нет, и очень странно что там еще и собственный адрес сервера.

Несколько дней спустя, уровень лога увеличен:


05:09:03.995 2 SIPDATA-050484 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5078 404-REGISTER(315 bytes)
05:09:03.998 1 SIPDATA-050485 inp: err udp[95.142.165.203]:5078 packet(374 bytes). illegal opCode in cSeq
05:09:03.998 3 SIPDATA-050485 err: ACK sip:100@192.100.ХХХ.ХХХ SIP/2.0
05:09:03.998 3 SIPDATA-050485 err: Via: SIP/2.0/UDP 95.142.165.203:5078;branch=z9hG4bK-3460301728;rport
05:09:03.998 3 SIPDATA-050485 err: Content-Length: 0
05:09:03.998 3 SIPDATA-050485 err: From: "100"<sip:100@192.100.ХХХ.ХХХ>; tag=3130300131373839383937353131
05:09:03.998 3 SIPDATA-050485 err: Accept: application/sdp
05:09:03.998 3 SIPDATA-050485 err: User-Agent: friendly-scanner
05:09:03.998 3 SIPDATA-050485 err: To: "100"<sip:100@192.100.ХХХ.ХХХ>
05:09:03.998 3 SIPDATA-050485 err: Contact: sip:100@192.100.ХХХ.ХХХ
05:09:03.998 3 SIPDATA-050485 err: CSeq: 1 REGISTER ACK
05:09:03.998 3 SIPDATA-050485 err: Call-ID: 3074664473
05:09:03.998 3 SIPDATA-050485 err: Max-Forwards: 70
05:09:03.998 3 SIPDATA-050485 err: 
05:09:03.999 2 SIPDATA-050486 inp: req [0.0.0.0]:5060 <- udp[95.142.165.203]:5083 REGISTER(359 bytes) sip:4@192.100.ХХХ.ХХХ
05:09:03.999 2 SIPDATA-050486 created SIPS-046480
05:09:03.999 1 ROUTER SYSTEM: '4@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
05:09:03.999 1 SIGNAL-048016 failed to route the 'From' address '4@192.100.ХХХ.ХХХ'. Error Code=unknown user account
05:09:04.000 2 SIPDATA-050487 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(304 bytes)
05:09:04.011 2 SIPDATA-050488 inp: req [0.0.0.0]:5060 <- udp[95.142.165.203]:5083 REGISTER(359 bytes) sip:5@192.100.ХХХ.ХХХ
05:09:04.011 2 SIPDATA-050488 created SIPS-046482
05:09:04.011 1 ROUTER SYSTEM: '5@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
05:09:04.011 1 SIGNAL-048018 failed to route the 'From' address '5@192.100.ХХХ.ХХХ'. Error Code=unknown user account
05:09:04.011 2 SIPDATA-050489 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(304 bytes)
05:09:04.912 1 SIPDATA-050490 inp: err udp[95.142.165.203]:5078 packet(374 bytes). illegal opCode in cSeq
05:09:04.912 3 SIPDATA-050490 err: ACK sip:101@192.100.ХХХ.ХХХ SIP/2.0
05:09:04.912 3 SIPDATA-050490 err: Via: SIP/2.0/UDP 95.142.165.203:5078;branch=z9hG4bK-2075177942;rport
05:09:04.912 3 SIPDATA-050490 err: Content-Length: 0
05:09:04.912 3 SIPDATA-050490 err: From: "101"<sip:101@192.100.ХХХ.ХХХ>; tag=3130310132323737323833343234
05:09:04.912 3 SIPDATA-050490 err: Accept: application/sdp
05:09:04.912 3 SIPDATA-050490 err: User-Agent: friendly-scanner
05:09:04.912 3 SIPDATA-050490 err: To: "101"<sip:101@192.100.ХХХ.ХХХ>
05:09:04.912 3 SIPDATA-050490 err: Contact: sip:101@192.100.ХХХ.ХХХ
05:09:04.912 3 SIPDATA-050490 err: CSeq: 1 REGISTER ACK
05:09:04.912 3 SIPDATA-050490 err: Call-ID: 3890601971
05:09:04.912 3 SIPDATA-050490 err: Max-Forwards: 70
05:09:04.912 3 SIPDATA-050490 err: 
05:09:04.913 2 SIPDATA-050491 inp: req [0.0.0.0]:5060 <- udp[95.142.165.203]:5083 REGISTER(356 bytes) sip:6@192.100.ХХХ.ХХХ
05:09:04.913 1 ROUTER SYSTEM: '6@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
05:09:04.913 1 SIGNAL-048020 failed to route the 'From' address '6@192.100.ХХХ.ХХХ'. Error Code=unknown user account
05:09:04.913 2 SIPDATA-050491 created SIPS-046484
05:09:04.913 2 SIPDATA-050492 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(301 bytes)
05:09:04.924 1 SIPDATA-050493 inp: err udp[95.142.165.203]:5083 packet(358 bytes). illegal opCode in cSeq
05:09:04.924 3 SIPDATA-050493 err: ACK sip:1@192.100.ХХХ.ХХХ SIP/2.0
05:09:04.924 3 SIPDATA-050493 err: Via: SIP/2.0/UDP 95.142.165.203:5083;branch=z9hG4bK-4052544163;rport
05:09:04.924 3 SIPDATA-050493 err: Content-Length: 0
05:09:04.924 3 SIPDATA-050493 err: From: "1"<sip:1@192.100.ХХХ.ХХХ>; tag=310133333937353639343331
05:09:04.924 3 SIPDATA-050493 err: Accept: application/sdp
05:09:04.924 3 SIPDATA-050493 err: User-Agent: friendly-scanner
05:09:04.924 3 SIPDATA-050493 err: To: "1"<sip:1@192.100.ХХХ.ХХХ>
05:09:04.924 3 SIPDATA-050493 err: Contact: sip:1@192.100.ХХХ.ХХХ
05:09:04.924 3 SIPDATA-050493 err: CSeq: 1 REGISTER ACK
05:09:04.924 3 SIPDATA-050493 err: Call-ID: 1822939846
05:09:04.924 3 SIPDATA-050493 err: Max-Forwards: 70
05:09:04.924 3 SIPDATA-050493 err: 
----------------------------------------------------------------------------------
На данный момент отлов такого типа атак идет с помощью триггер-sms, и добавления в список запрещенных IP. Питались с помощью IPTABLES ограничить INVITE и REGISTER, работало, но криво. Попытались прикрутить fail2ban for Asterisk, но попытка закончилась при рассмотрении логов, и стало ясно что если и удастся прикрутить то останется только возможность блокировать самого себя. Подскажите кто либо прикручивал такую вещь,и как подкрутить само логирование сервера чтоб скрипт мог брать оттуда данные,сам скрипт ниже. Всем спасибо.
# 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.* .*: Registration from '.*' failed for '<HOST>' - Peer is not supposed to register
            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 =
Получено Thu Nov 18 21:43:18 2010

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:17:08 MSK