Как защитить сервер от DDOS?

Вчера я только писал о том, как защитить сайт WordPress от взлома, а сегодня я хочу продолжить тему защиты, так как пока для меня это важнее всего. Ведь если сервер лежит, то и толку от сайтов просто нет. Да и длительные простои могут негативно сказаться на позициях в поисковых системах, плавали, знаем.

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

Подозреваю, что проблемой ещё может быть плагин WordPress Backup to Dropbox, который делает резервные копии вашего сайта на DropBox. Плагин в целом полезный, но мне уже не нужный, так как я делаю постоянно бэкап всего сервера. Если же у вас простой хостинг, то рекомендую установить.

Так вот, плагин этот включается у меня как раз ночью и начинает закачку резервной копии. А так как сервер и так атакуется, то дополнительная нагрузка на диск приводит к зависанию. К тому же сервер у меня не очень мощный, если бы приобрести терминальный сервер, то маленькие атаки были бы не так опасны, наверное. Это пока теория, проверим.

В этой статье я хочу рассказать о том, как защитить сервер от ддос атаки (не очень массивной, конечно, но все же). Как это все осуществить?

Как защитить сервер от DDOS атаки?

Все делается на уровне веб сервера Apache установкой дополнительного модуля. Подключаемся к серверу через SSH и устанавливаем модуль:

sudo apt-get install libapache2-mod-evasive

Модуль установлен, теперь нужно создать файл mod-evasive.conf в папке /etc/apache2/mods-available/ и вписываем в него такой код:

<IfModule mod_evasive20.c>
DOSHashTableSize 4096
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>

Тут можно выставлять параметры по своему усмотрению, и вот что они значат:

DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
DOSPageCount: число запросов к одной странице от одного и того же IP в течение указанного интервала времени.
DOSSiteCount: число запросов ко всем страницам домена, если поступило более 50-ти запросов с одного IP на разные страницы домена — тогда такой IP будет заблокирован.
DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован.
DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется.
DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)

После этого перезапускаем сервер apache:

sudo service apache2 restart

Теперь можно проверить работу модуля, попытавшись организовать со своего компьютера мини ddos атаку. У вас ведь на компьютере стоит Linux? Ну тогда просто запустите его с флешки :) Как установить линукс на флешку читайте ЗДЕСЬ.

Создаем файл типа ddos.pl в домашней папке и вписываем туда такой код:

#!/usr/bin/perl

# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "saitowed.ru:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0nn";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}

Теперь делаем файл исполняемым:

chmod 777 ddos.pl

В код этого файла я вписал один знакомый блог  - saitowed.ru, чтобы на нем проверить работу скрипта. Запускаем его командой:

./ddos.pl

Что мы видим?

как защитить сервер от ddos атаки

Видим, что его сервер спокойно пропускает наши множественные запросы, а это плохо. Теперь впишу свой сайт в код скрипта:

как защитить сервер от ddos

Ага, а у меня сервер сразу блокирует все запросы с моего IP на некоторые время или пока идёт атака.

Все так просто, но это настолько полезно, что даже не передать словами, когда уже месяц мучаешься с сервером, так как опыта по его настройке и защите очень мало. А как вы защищаете свой сервер?

Оставить комментарий или прочитать написанные