Re[2]: Как была решена проблема DDOs сегодня ночью.

Влад vk at shiloff.ru
Sat Nov 3 13:02:39 MSK 2007


Здравствуйте, Stas.

Вы писали 3 ноября 2007 г., 12:05:10:

Отвечу сразу-же всем.

Стояла связка apache 2.* и php как cgi. К ДДосу готовы не были.

Начиная с пятницы, на сайт велась атака. Под атакой процессор умерал и
машинка уходила в аут на 10-20 минут. Заглянув в логи апача я узнал,
что атака ведется на адрес типа http://www.domain.ru/.

Было решено поставить на apache mod_secure и должным образом его
настроить. Этим действием мы снизили Load Averege до 25-30, но машинка
все равно через 10-15 минут уходила в аут, хоть и чуть дольше держалась.

Потом, было принято решение потюнить ядро и поставить nginx + php.
После этого, я сделал небольшой скриптик который смотрел на кол-во
запросов с IP и если они превышали определенный порог (200 запросов) - добавлял их в
ipfw. Каждую минуту банилось от 1 до 7 IP адресов. Загрузка снизилась
стабильно до 18-20 и машинка уже сдерживала атаку, а не умерала.

Гениальное решение пришло на 4-ый час борьбы с ДДос. Сохранить главную
страницу в HTML и подложить HTML на сервер, чтобы боты брали ее.
Сказано - сделано. Идея трансформировалась в переименование
индексного файла в indexx.php и файла index.html который содержал.

        <script type="text/javascript">
        //<![CDATA[
                document.location.href="http://www.domain.ru/indexx.php"
        //]]>
        </script>

и Ура! Я убрал все баны, отключил скрипт и процесс Nginx загружал
процессор всего на 3-4% отдавая только эту страницу. Load averege
стабилизировался на отметке 0.2 - 0.4. Атака была побеждена.

p.s. Но чуть позже, атака началась на файл index2.php (которого на
сервере нету), и естественно боты попадали на обработчик 404 ошибки
(404.php) и машинка естественно умерла. Поэтому, я заменил error
page 404 на index.html и все вновь получилось.
        
> Можно поподробнее?
-- 
С уважением,
 Влад                          mailto:vk at shiloff.ru






More information about the nginx-ru mailing list