суббота, 17 марта 2018 г.

Черный список

У нас есть телефонная станция на базе Asterisk расположена в датацентре. Всякий кому не лень пытается "взломать" пароль SIP и подключится на халяву к нашей телефонной сети. Меня это беспокоит.
Статистика неумолима. до 80млн. запросов в год на подбор пароля. Это невероятно много запросов, которые захламляют лог. Такого чтобы кто-то подключился и получил телефонных услуг на халяву, не замечено.

17.03
Итак. Разобрались с кодом Asterisk, нашли единственное место, в котором запросы на подключение проходят проверку. В это место вставляется запись злоумышленников в черный список. Проверка производится при каждом подключении, в точке где пакеты рождаются 'recvfrom(socket...)'. Черный список это такая программка, которая встраивается в SIP протокол. Если один раз регистрация клиента была неудачной, такой адрес попадает в черный список. Адрес в списке живет непродолжительное время, например час или двадцать минут. Если злоумышленник предпринимает повторную попытку входа, то регистрационные данные не проверяются, а время "карантина" увеличивается. 


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

Программка "черный список" занимает не более 100 строк. Включает в себя менеджер памяти, для выделения элементов черного списка из массива. Этот менеджер гарантирует что не произойдет сбой в результате дос атаки, слишком большого количества запросов на регистрацию.

Теперь статистика, это пожалуй самое интересное.
У нас в сутки происходит до 50 тыс. запросов на регистрацию от таких ботов. В результате использования фильтра "черный список" число запросов с ошибкой регистрации, которые не отсеиваются фильтром составляет примерно 20 шт в сутки. Эффективность получается 99,9% - для меня результат неожиданный. Получилась довольно высокая эффективность.
19.03
Активность резко сократилась, в день теперь стало меньше запросов приходить, около 6 тысяч. Но на фоне скучного поведения ботов, проявилась еще один тип ботов, он пытается вломиться используя INVITE с левым адресов, как я понял весь фокус в том, что в отклике содержится информация, которая позволяет уточнять какие есть пользователи в системе. Это описано как уязвимость астериска в базе CVE-2013-2264. На запрос тоже привесил бан. На любые ошибки регистрации - бан. Время увеличил до часу.  В сутки осталось всего 15 попыток, которые проверяются на аутентификацию, остальные 6 тыс. запросов надежно сидят в блэк-листе и до Астериска даже не доходят. Глубина списка обычно не превышает 4. Т.е. одновременно нас бруфорсят примерно четыре хоста, да и то как-то вяло.
25.03
Хочу повысить эффективность "черного списка". Ввел новый параметр, число попаданий в список. Сделал нелинейное время блокировки, чтобы при большом числе попыток взлома, время карантина увеличивалось. Это мера против тех ботов, которые работают набегами. Приделал команду диагностики "sip show blacklist".
31.03
Запустил статистику. На этих выходных получается на 60 тыс попыток проникновения только 6 дошли до проверки пароля. Эффективность отлова ботов 99.99%. Наверное так не правильно оценивать. Если бы ботов было тысячи на один несчастный сервак, результат был бы другой. В среднем пасется около пяти-шести ботов одновременно. Ещё два бота уже неделю пытаются ломать TLS. Это вообще что за реальность такая?! Почему одни боты мочат других ботов и это занимает 90.0% всех действий сервака. 9 % это обработка запросов регистрации Keep-alive(будь на связи) и 0....%  -- это полезная деятельность. Надоела эта реальность, хочу другую. Т.е. я понимаю, что такой фильтр я теперь буду встраивать в любой сервис, но за какие грехи мы попали в такую реальность. Почему я трачу свое время на ботов?!

Комментариев нет:

Отправить комментарий