DDOS/DOS через телефонную сеть. Оборона на коленке

Вместо предисловия

Уже пол года являюсь постоянным читателем здесь, иногда встречаются посты или коментарии — душа просто ноет, ответить хочется, а вот доступа нет. А тут такой случай, новый клиент появился, с интересной большой проблемой: вышел новый каталог и кто-то начал бомбить опубликованые номера звонками.

Акт 1. Сцена 1.

В офисе «жертвы»: старенкая Elmeg c88m от фирмы Funkwerk, обслуживающия с десяток линий наружу и чуть большее количество внутрених телефонов, потихоньку начинает дымится, операторы впадают в панику, директор много курит и ругается, клиенты и филиалы в других городах прозвониться не могут…

Бизнес встал…
Жертва «атаки» обзванивает знакомых в поисках «спеца», получает мой номер с рекомендацией… Звонит мне, пытается в двух словах объяснить, что произошло происходит… говторит не внятно, явно нервничает, просит приехать сейчасже. Что произошло или в чем проблема я понять из телефонного разговора не смог, пообещал приехать в течении двух часов.

Акт 1. Сцена 2.

Приехав в офис жертвы через пол часа после официального окончания рабочих часов обнаруживаю замученного директора и пару операторов на телефонах, пытающихся обзвонить партнеров и филиалы, чтобы оповестить о проблемах со связью. К этому моменту вредоностные звонки прекратились, линии освободились, входящие звонки стали возможны… но было поздно, официальное опубликованное рабочее время прошло и клиенты были потеряны.

Общение со службой поддержки оператора тел. сети не дали ничего, кроме проверки линии на работоспособность. Набор номеров, высветившихся на дисплеях телефонов показали — номера отсутсвуют или недоступны.

Попытка активировать какие-либо фильтры для блокировки на офисной мини АТС (Funkwerk Elmeg c88m) показала возможность вмести 100 блокируемых номеров… и все. Чего-либо больше система не может вообще. После некоторых раздумий, было принято решение воспользоваться возможностями Soft-PBX Asterisk. Опыт установки есть, должно сработать.

Акт 2. Сцена 1.

Итак… имея десяток внешних ISDN линий требуется более или менее профессиональная ISDN техника работающая под Asterisk. Выбор пал на Asteribank от Xorcom на 8 BRI (16 b-каналов) и 4 BRI (8 b-каналов). Таковой под рукой не оказалось, пришлось заказывать. Поставка обещана через 3-5 дней =(

Что делать до поставки? Бизнес умирает, директор на грани срыва, операторы в панике, год и так начался тяжело из-за экономической ситуации, а тут еще и такое открытие сезона. Каждый упущений звонок уходит к конкурентам.

В голове пробегают все позможности Asterisk и вот оно! SIP — решение всех проблем: регистрируется номер у одного немецкого провайдера SIP-телефонии (www.sipgate.de), делается звонок оператору телефонной сети с спросьбой перенаправить все входящие звонки на новый номер, ставится «ящик» (Athlon II X2 240, 2GB RAM) с Asterisk под Ubuntu и Asterisk настраивается на Sipgate. Остается только снабдить операторов SIP-клиентами и гарнитурой.

В качестве SIP-клиента пал выбор на Zoiper и QuteCom. Zoiper был выбран изначально, но вылетал с ошибкой на половине компьютеров — QuteCome как альтернатива.

Остается поставить скрипт для отсеивания «плохих» звонков: пользуем функцию WaitForSilence и радуемся жизни.

Акт 2. Сцена 2.

Начало нового рабочего дня: плохие звонки прорываются через оборону, ситуация не улучшается. Я наконец могу послушать, что происходит на линии при «плохом звонке», результат поражает: дыхание в «трубку», долгое и прерывистое… WaitForSilence не срабатывает.

Смотрю поток звонков: атака идет или с загран. номерами или без номера вообще. Ок, ставлю блокировку на два ноля в начале номера и на анонимные звонки. Все…

Тишина и покой в офисе, звонки редкие, но все в «тему»: клиенты, партнеры, филиалы. Директор закуривает и начинает улыбаться, цвет лица менятся на более здоровый. Дамы на телефонах радостно отвечают на звонки, в перерывах шутливо называют друг-друга DJ’ями из-за гарнитуры на голове.

Я спокойно покидаю офис…

Акт 3. Сцена 1.

На следующий день меня вызванивают опять, с жалобой на малое количество звонков. Подозрение падает на звонки «без номера», количество которых оказывается далеко не малым.

Немного поразмыслив прихожу к умозаключению, что номера которые сейчас блокируются надо проверять на присутствие интелекта — делаем тест Тьюринга.

Для этого были записаны несколько реплик (здравтвуйте, вы позвонили в фирму XY, и самая главная «нажмиту 1 чтобы прододжить») голосом одной из сотрудниц. С помощью реплик было создано короткое голосовое меню, Asterisk позволяет на этом поле любые изхищрения. Готово! Количество звонков увеличилось, бизнес живет, все ок. Я покидаю офис клиента (теперь уже клиент, больше не жертва…).

Акт 4. Сцена 1.

Звонок клиента оповещает меня о том, что качество звука стало хуже, звук дергается, прирывается и пропадает. Приезжаю в офис, смотрю в логи и консоль Asterk’a, обнаруживаю увеличенное количество паралельных звонков — тест Тьюринга тебует «поднятия трубки и воспроизведения реплик». Тест просто напросто съедает канал в интернет. Случилось то, чего я опосался — канала не хватает на нужное количество звонков и надо переходить с кодека ulaw/alaw (64kbit) на gsm(16kbit). Из собственного опыта знаю, что это связано со слышимым ухудшением качества связи… особенно при переходе с ISDN на SIP с GSM-кодеком это ощущается очень сильно.

Но делать нечего. Включаю gsm на наружние каналы, делаю тестовый звонок — все ок. Даю директору на контроль и надеюсь на чудо… И вот оно чудо! Все познается в сравнении: после всех проблем со связью, все остаются довольны тем, что есть. Шипение и потеря качетсва на кодеке gsm — ничто по сравнению в ulaw/alaw на «узком» канале.

Послесловие

Фирма живет, gsm спасает. В понедельник придут Asteribank’и, верну систему на ISDN, SIP оставлю на всякий пожарный. Скрипт блокировочный будет оптимирован. А пока: ведутся логи о заблокированых звонках для органов, заявление в полицию подано, посмотрим, что они смогут сделать =)

Если у сообщества есть интерес в продолжении о Asteribank’ах, ISDN, полиции и отпимированом отсеве — напишу…

PS: прошу не пинать за язык/ошибки… эмиграция дает о себе знать.

Источник: http://habrahabr.ru/blogs/personal/86667/

Роман В. Ромачев