Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём неправильно. Необходимо обновить браузер или попробовать использовать другой.
РАЗБОРСтатья
Стресс-тест сети: DoS веб-сайта в Kali Linux с GoldenEye
На страницах codeby.net уже говорилось об инструментах DoS, которые могут сильно нагрузить серверы HTTP, чтобы парализовать их работу из-за исчерпания пула ресурсов. GoldenEye — это ещё один, со своими особенностями, который может положить сервер за 30 секунд, в зависимости от того, насколько велик пул его памяти. Конечно, он не работает на защищённых серверах и серверах за правильно настроенными WAF, IDS. Но это отличный инструмент для тестирования вашего веб-сервера на повышенную нагрузку. А на основании полученных результатов можно изменить правила iptables/файерволов для увеличения устойчивости и сопротивляемости к негативным факторам.
Давайте пройдёмся по самой базовой информации об атаках DoS или. DDoS. Обычно выделяют три вида DoS и DDoS атак:
DoS и DDoS атаки уровня приложений
DoS и DDoS атаки уровня протокола
DoS и DDoS атаки насыщения полосы пропускания
DoS и DDoS атаки уровня приложений
DoS и DDoS атаки уровня приложений — это атаки, которые нацелены на Windows, Apache, OpenBSD или другое программное обеспечение для выполнения атаки и краха сервера.
DoS и DDoS атаки уровня протокола
DoS и DDoS атаки уровня протокола — это атаки на уровне протокола. Эта категория включает Synflood, Ping of Death и другие.
DoS и DDoS атаки насыщения полосы пропускания
Этот тип атак включает ICMP-флуд, UDP-флуд и другие типы флуда, осуществляемые через поддельные пакеты.
Слова DoS и DDoS близки по значению. Когда атака ведётся с одной машины, обычно говорят о DoS атаке. При большом количестве атакующих из ботнета (или группы) говорят о DDoS атаке. Об этих атаках доступно много информации, но не важна, какого типа эта атака, т. к. они все одинаково вредны для сервера/сети.
Загрузка GoldenEye
Сторонние программы, установленные не из репозитория, я собираю в каталоге ~/opt. Если у вас нет каталога для сторонних программ, то создайте его и перейдите туда:
Код:
mkdir opt
cd opt
Следующая большая команда создаст каталог, загрузит туда последнюю версию GoldenEye, распакует архив и сразу запустит GoldenEye (покажет справку по программе):
mkdir GoldenEye && cd GoldenEye && wget https://codeload.github.com/jseidl/GoldenEye/zip/master && unzip master.zip && cd GoldenEye-master/ && ./goldeneye.py
Если вам хочется всё сделать самому — постепенно, то продолжаем. Для начала создаём каталог GoldenEye, переходим туда и скачиваем архив с программой:
Код:
root@WebWare-Kali:~/opt# mkdir GoldenEye
root@WebWare-Kali:~/opt# cd GoldenEye
root@WebWare-Kali:~/opt/GoldenEye# wget https://codeload.github.com/jseidl/GoldenEye/zip/master[/ICODE]
[ATTACH type="full" alt="28532"]28532[/ATTACH]
После скачивания распаковываем файл архива master.zip.
[CODE]unzip master.zip
Теперь у нас появился каталог GoldenEye-master, переходим туда и проверяем его содержимое:
Код:
ls
cd GoldenEye-master/
ls
Запуск GoldenEye – досим веб-сайт
Запуск очень прост, делается это так:
Код:
./goldeneye.py
Программа показывает нам свою справку:
Необходимо осведомлять пользователей о расписании тестирования и возможных перебоях в работе. Поскольку часто результатом симуляции атаки является остановка работы.
Ну и все другие предупреждения: вы не должны тестировать (симулировать атаку) других без их разрешения. Поскольку в случае причинения вреда, вы можете быть привлечены к ответственности в соответствии с законодательством.
Данная информация размещена в образовательных целях. Для тестирования своих серверов, для анализа качества их настройки и разработки мер противодействия атакам.
Запуск слегка различается от используемой вами ОС:
В зависимости от того, где вы сохранили файлы, подредактируйте ваш путь и команду.
Далее тесты GoldenEye:
Следить за состоянием сервера я буду командой top:
Т.е. сервер находится в состоянии простоя, процесс полностью свободен, свободной оперативной памяти доступно 350 мегабайт.
Атака
Код:
./goldeneye.py http://192.168.1.37/info.php
Результат
Можно посмотреть по скриншоту, процессор по-прежнему практически бездействует, но количество свободной памяти резко сократилось, увеличилось количество спящих процессов.
Тем не менее, сервер не удалось полностью положить при атаке в один поток (хотя вообще-то, такая задача и не ставилась).
Одного взгляда на логи достаточно, что каждый запрос GET содержит различные строки, различные пользовательские агенты и различных реферов, среди которых Bing, Baidu, Yandex и другие рандомные поисковые системы.
Так что происходит, когда ваш веб-сервер встречается с этой атакой? Он анализирует входящий трафик, проверяет запрашиваемые URL, адреса источников и поле Referrer и пропускает их с кодом 200 OK. Почему? Потому что каждый браузер был различным.
Инструмент был создан остроумно так, чтобы любой сервер мог подумать, что это различные пользователи, пытающие зайти с одного 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 -w 10 -s 10 -m random
Вышеприведённая команда использует:
-w = 10 одновременные рабочие
-s = 10 одновременных соединений
-m = рандом, смесь GET и POST
Совершенный DoS!
Интересное наблюдение по 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 и благодаря этому избежите будущих атак.
Будет интересно послушать ваши решения для подобного типа атак — пишите их в комментариях. Ретвит и расшаривание статьи в соц. сетях приветствуются.
условия что и откуда тестил:
VM Kali на сервере (4 ядра + 8 RAM), подключенная к L3-коммутатору, на котором включена вебка, для доступа к его управляйке. Никаких настроек по защите порта не делал, только разрешен проход http-трафика.
Подскажите, в чем разница между мерами по защите:
1. Понижение соединений на один IP (обычно их 300 на IP для Apache)
2. Редактирование порога соединений на IP
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь. Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.
Комментарии
2