Защищаемся от GoldenEye
https://t.me/Torchik_RuДоброго времени суток, господа. Сегодня рассматриваем вопрос защиты от DoS атаки через GoldenEye.
Инструмент был создан остроумно так, чтобы любой сервер мог подумать, что это различные пользователи, пытающие зайти с одного IP (может быть IP прокси или большой организации?) с различными браузерами (Firefox, Chrome, MSIE, Safari и т. д.), различными операционными системами (Mac, Linux, Windows и т.д.) и даже с различными реферами. Да, возможно запрашиваемый URL был неправильным, но нормальные веб-сервера всё равно пропустят его, перенаправят на страницу ошибки в то время как соединение будет оставаться открытым (например, Apache worker/socket).
Стандартный веб-сервер обычно позволяет X число одновременных пользователей содного IP и с большим количеством соединений/используемых сокетов, этот тип атаке приводит к тяжёлому давлению на сервер и последующие пользователи получают ошибку (HTTP 503 или наподобии). Следовательно, атакующий с несколькими рандомными proxy/VPN может быстро истощить ресурсы сервера. Он даже может замедлить атаки на один IP для избежания начального выявления:
root@kali:~/GoldenEye/GoldenEye-master# ./goldeneye.py http://www.goldeneyetestsite.com/ -w 10 -s 10 -m random
Интересное наблюдение по Google Analytics и GoldenEye
Я попробовал это в живую, чтобы просто посмотреть, как поведёт себя реальный веб-сервер. Интересно, оказывается что Google Analytics воспринимает этот трафик как реальный и добавляет данные от флуда в статистику (хотя он и идёт с одного IP, но различные рефереры и браузеры убеждают Google в том, что это отдельные пользователи). Можно придумать ещё пару способов эксплуатировать это:
- Можно повышать свой рейтинг в Google, т. к. она будет воспринимать это как легитимный трафик.
- Если Google будет наказывать за это, то тогда можно зафлудить веб-сайты конкурентов для понижения их ранжирования в Google.
Эта палка о двух концах.
Блокирование/защита от атаки GoldenEye
Следующие предложения хорошо сработают, когда вы используете Apache:
- Понижение соединений на один IP (обычно их 300 на IP для Apache)
- Редактирование порога соединений на IP
- Отключить настройки KeepAlive и нижний Connection Timeout (по умолчанию это 300)
- Если вы хоститесь на общем сервере, обратитесь к сисадминам. Если они не могут защитить от этой простой атаки, то просто переезжайте к хостинг компании получше.
- Используйте Web application Firewall (WAF).
- Использование белых листов для входящих запросов — и эта атака не окажет эффекта на ваш сервер.
- NGINX и Node.js вроде бы лучше справляются с атаками подобного рода.
Заключение
GoldenEye выглядит как расширенная (или схожая на) HTTP Flooder программа. Обе работают похожим образом, но NoCache и KeepAlive от GoldenEye делают большую разницу. Также она использует интересный способ перемешивания браузеров, операционных систем и рефереров, что может обмануть файервол.
В общем, это хороший инструмент для тестирования на нагрузку своего собственного веб-сайта (с разрешения вашей хостинг компании), вашего корпоративного веб-сайта и любых веб-приложений, которые позволяют входящие GET или POST запросы. Используйте её для обновления ваших правил файервола. WAF и благодаря этому избежите будущих атак.