Источник subnets.ru/blog/?p=1552
Кто то уже знает, кто-то нет и спит спокойно, точнее пока что спит спокойно.
Как давно вы читали логи своего Asterisk сервера ?
Некоторые из вас или уже видели или ещё увидят в логах строчки:
- Registration from ‘»100″<sip:100@sip.mydomain.ru>’ failed for ‘188.165.215.79′ – No matching peer found
- Registration from ‘»111″ <sip:111@sip.mydomain.ru>’ failed for ‘188.165.215.79′ – Wrong password
Догадываетесь к чему они ведут ? К тому что вас сканят и пытаются подобрать пароль к вашим SIP аккаунтам. Большинство пользователей безалаберно относятся к своим паролям, это
факт, а раз так то проверте что на ваших SIP номерах не стоят пароли
аля 123 или 1234.
Если пароль таки подберут, то вы (или ваш клиент) попадете на
деньги, т.к. через вас пустят звонки забугор, например на Кубу или
Северную Корею.
Давайте разберемся как они это делают и попробуем усложнить им жизнь помимо смены паролей к своим SIP аккаунтам.
В сети есть набор утилит sipvicious:
The 4 tools that you should be looking at are:
– svmap
– svwar
– svcrack
– svreport
– svcrash
The tools:
svmap – this is a sip scanner. When launched against
ranges of ip address space, it will identify any SIP servers
which it finds on the way. Also has the option to scan hosts
on ranges of ports.
svwar – identifies working extension lines on a PBX. A working
extension is one that can be registered.
Also tells you if the extension line requires authentication or not.
svcrack – a password cracker making use of digest authentication.
It is able to crack passwords on both registrar servers and proxy
servers. Current cracking modes are either numeric ranges or
words from dictionary files.
svreport – able to manage sessions created by the rest of the tools
and export to pdf, xml, csv and plain text.
svlearnfp – allows you to generate new fingerprints by simply running
the tool against a host. It will attempt to guess most values and allow
you to save the information to the local fingerprint db. Then you can
choose to upload it to the author so that it can be added to the database.
svcrash – responds to svwar and svcrack SIP messages with a message that
causes old versions to crash.
Так вот с их помощью нас и сканят. Эти же утилиты помогут нам просканить самих себя и усложнить жизнь уродам жаждущих халявы.
Начнем с того что скачаем этот набор утилит (сохраненная у нас копия).
Распакуйте архив в какую нить папку и можно приступать к скану.
Будет считать что IP-адрес нашего Asterisk сервера это 192.168.1.1 и запустим сканер:
cd /home/virus/sipvicious
./svmap.py -p5060 192.168.1.1 -m INVITE
Получаем результат:
| SIP Device | User Agent | Fingerprint | -------------------------------------------------- | 192.168.1.1:5060 | Asterisk PBX | disabled |
Идем далее, посканим теперь на аккаунты:
./svwar.py –force -e100-999 192.168.1.1
Ответ может быть таким:
| Extension | Authentication | ------------------------------ | 210 | reqauth | | 300 | reqauth | | 666 | reqauth | | 241 | reqauth | | 242 | reqauth | | 222 | reqauth |
Можно ли как то обломать их ? Можно. Для этого отредактируем /usr/local/etc/asterisk/sip.conf и добавим или раскоментируем строчку в секции [general]:
alwaysauthreject = yes
Описание:
When an
incoming INVITE or REGISTER is to be rejected, for any reason, always
reject with ‘401 Unauthorized’ instead of letting the requester know
whether there was a matching user or peer for their request.
Т.е. наш сервер будет всегда при любых ошибках авторизации будет отвечать «401 Unauthorized» и не сообщать подробностей.
После изменения sip.conf зайдите в консоль Asterisk`а:
asterisk -r
и примените изменения:
asterisk*CLI> sip reload
Теперь посканим снова:
./svwar.py –force -e100-999 192.168.1.1
Ответ от сканера изменился и выглядит примерно так:
WARNING:TakeASip:Bad user = SIP/2.0 401 - svwar will probably not work! WARNING:TakeASip:We got an unknown response ERROR:TakeASip:Response: 'SIP/2.0 401 Unauthorized\r\n Via: SIP/2.0/UDP 192.168.1.1:5061;branch=z9hG4bK-3613016185;received=192.168.1.1;rport=5061\r\n From: "100"; tag=31303001333430333334313736\r\n To: "100";tag=as47e73e29\r\nCall-ID: 2008271273\r\n CSeq: 1 REGISTER\r\n User-Agent: Asterisk PBX\r\n Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO\r\n Supported: replaces\r\n WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="3b652f8d"\r\n Content-Length: 0\r\n\r\n'
Как видите списка с номерами более не выдается, то что нам и надо.
Что ещё мы можем сделать ?
Например закрыть в диал-плане забугорные направления (коды стран),
по которым не вы ни ваши пользователи не звонят или вообще перекрыть
выход на международку.
Добавим в /usr/local/etc/asterisk/extensions.conf в секцию где у вас происходит выход в город:
exten => _810X.,1,playback(pbx-invalid)
exten => _810X.,n,Hangup()
Так же мы можем скриптом анализировать логи Asterisk сервера и всех уродов, подбирающих пароль, банить фаирволом (ipfw) сервера.
Нашу версию подобного скрипта можно увидеть пройдя по ссылке: http://subnets.ru/files/protect_aster.txt
Инсталляция скрипта:
1. Сохраните код скрипта на своем сервере
2. Переименуйте файл в protect_aster.sh
3. Сделайте скрипт исполняемым:
chmod a+x protect_aster.sh
4. Добавте в ваш firewall ipfw правило:
ipfw add XXX reject ip from «table(56)» to me
где ХХХ это номер правила.
Будьте внимательны размещая данное правило, не забаньте сами себя ! Обеспечьте allow правила для своих IP-адресов выше этого правила, чтобы избежать неожиданностей.
5. Добавте скрипт на исполнение по crontab, отредактируйте /etc/crontab:
*/5 * * * * root /full/path/to/script/protect_aster.sh
Забаненый IP-адрес попадает в таблицу ровно на сутки, через сутки он автоматически будет удален из таблицы.
Надеемся, что эти не хитрые приемы помогут вам остаться при деньгах и сэкономить ваши нервы. Авторы: Панфилов Алексей (lehis (at) subnets.ru) и Николаев Дмитрий (virus (at) subnets.ru)Источник
|