Только вчера я писал о том, как защитить сайт WordPress от взлома, а сегодня хочу рассказать, как осуществляется защита от ddos атак, так как падение сервера даже на небольшое время может привести к проблемам. Длительные простои могут негативно сказаться на позициях в поисковых системах, со мной уже такое случилось однажды, до сих пор пожинаю последствия...
Сегодня ночью, как только я лег спать, сервер у меня лег тоже. Разбудил я его только утром, когда проснулся сам. Скорее всего опять была атака и мой друг не выдержал напора.
Подозреваю, что проблемой ещё может быть плагин WordPress Backup to Dropbox , который делает резервные копии вашего сайта на DropBox . Плагин в целом полезный, но мне уже не нужный, так как я делаю постоянно бэкап всего сервера. Если же у вас простой хостинг, то рекомендую установить.
Так вот, плагин этот включается у меня как раз ночью и начинает закачку резервной копии. А так как сервер и так атакуется, то дополнительная нагрузка на диск приводит к зависанию. К тому же сервер у меня не очень мощный, если бы приобрести терминальный сервер, то маленькие атаки были бы не так опасны, наверное. Это пока теория, проверим. Но скорее всего на меня все же осуществляется ddos атака.
Что такое ddos атака?
Если говорить просто, то на ваш сервер отправляется много запросов на подключение, и не просто много, а ОЧЕНЬ много, с тысяч компьютеров одновременно, и ваше сервер просто не выдерживает от такого наплыва "посетителей". Зачем все это делается?
К примеру, простой интернет магазина может обойтись ОЧЕНЬ дорого, и конкуренты таким нечестным образом пытаются расчистить себе место под солнцем. Или же просто хакеры таким образом выводят сервер из строя, чтобы в этот момент залить на него вирус . А может и просто какой-нибудь школьник баловаться, тестируя программы для ddos 🙂
В этой статье я хочу рассказать о том, как защитить сервер от ддос атаки (не очень массивной, конечно, но все же). Как это все осуществить?
Как защитить сервер от 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 атака своими руками
Создаем файл типа ddos.pl в домашней папке и вписываем туда такой код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/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 ) ;
}
Теперь делаем файл исполняемым:
В код этого файла я вписал один знакомый блог - saitowed.ru, чтобы на нем проверить работу скрипта. Запускаем его командой:
Что мы видим?
Видим, что его сервер спокойно пропускает наши множественные запросы, а это плохо. Теперь впишу свой сайт в код скрипта:
Ага, а у меня сервер сразу блокирует все запросы с моего IP на некоторые время или пока идёт атака.
Все так просто, но это настолько полезно, что даже не передать словами, когда уже месяц мучаешься с сервером, так как опыта по его настройке и защите очень мало. А как вы защищаете свой сервер?
При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway. отлично справляются с ддос атаками
Эти методы подойдут только для минимальных DDoS атак, мы пользуетмся услугами хостинга с защитой от DDoS и проблем не знаем. Тарифы адекватные, стабильность пока радует. Советую!
Спасибо за рекомендации. Один раз думал об опасности ддос атак и всё, потом совсем забыл об этом. А сейчас наткнулся на вашу статью и задумался...
Сейчас многие хостинги предоставляют такую защиту, нужно порой только вручную включить.