#1 10.01.11 13:34
Как защититься от DDOS-атаки?
Сейчас сайт заблокировал хостер. Посмотрел по логам - сайт лег после того как с разных ip было множество обращений к одной и той же странице. Сайт находиться на виртуальном хостиге.
Собственно вопросы:
1. Можно ли защититься средствами php на виртуальном хостиге от такой атаки?
2. Если купить выделенный сервер, то как фаерволом закрыть сайт от такой атаки?
Offline
#3 10.01.11 14:26
Re: Как защититься от DDOS-атаки?
GrAnD, когда будешь гуглить на эту тему и увидишь статью содержащую слова "...для отражение ддос-атаки напишем скрипт на php" можешь смело закрывать страницу и автору писать что он мудак.
основное решение проблемы ддоса - это полностью закрыть доступ для айпи (или сетей) ботов. решений существует два.
1. за деньгу. нужно найти компанию (так например), которая занимается фильтрацией трафика и поменять А запись на айпи этой компании.весь траф пойдёт через их сервера и уже отфильтрованный будет приходит к твоему хостеру. стоит от 20$ сутки, зависит от мощности ддоса.
2. самостоятельно. тут уже нужно купить как минимум vds. поставить nginx и заглушку с текстом "Нас ддосят. Скоро будем" и анализировать логи и банить айпи фаерволом. под каждый случай своё решение, но нужно осилить nginx, любой скриптовый язык, cron
в некоторых случаях можно вообще одним nginx обойтись: есть возможность ограничевать кол-во соединений с одного айпи в промежуток времени (это так же можно сделать с помощью iptables, но для того что бы работала такая возможность нужно пересобирать ядро что на vps невозможно), есть возможность моментально обрывать соединение по признаку (старый броузер, наличие печенюк и тд) и так же есть возможность открыть сайт только для определённой страны (модуль geo ip). правда тут нужно максимально закешировать сайт, оптимизировать запросы к бд (в идеале что бы вообще не было join)
сейчас в интернете среди школие-хакиров распространенны два вида ддоса - http flood и syn flood. http flood более распространён так как достаточно 100 ботов что бы положить сайт на щаред хостинге. если же сайт продолжает работать то постепено увеличивают кол-во ботов тем самым увеличивая мощность ддоса, правдо сейчас это уже не так страшно так как каналы у большинства хостеров широкие и сервера боле мене. а вот syn flood уже более жёсткая штука, тут уже не только канал забивают но и процессорное время сервера, с ним самостоятельно бороться можно только в том случае если син флуд не большой.
Offline
#4 10.01.11 14:59
Re: Как защититься от DDOS-атаки?
Если ботнет достаточно большой, то ляжет любой сайт. Да и хостеру проще прикрыть твой сайт чем отражать атаку.
У тебя же есть какие-то лимиты по процессорному времени и памяти в условиях предоставления хостинга? Скорее всего эти лимиты были превышены и хостер с чистой совестью отрубил сайт. Возможно это даже не ddos, а просто кто-то дал ссылку на популярном ресурсе.
Offline
#6 10.01.11 22:05
Re: Как защититься от DDOS-атаки?
IDrum дело говорит: настраиваем в nginx/apache/iptables лимиты обращений с ip, тюним сайт (глагне, авторизацию, плюс то, что судя по логам долбят) и начинаем увлекательный интеллектуальный марафон по отсечению ботов через высталение/проверку кук, geo ip и ещё каких-нибудь извращений, на которые фантазии/интернетов хватит...
Исправлено efferson (10.01.11 22:05)
Offline
#10 11.01.11 12:26
Re: Как защититься от DDOS-атаки?
недавно и меня нагнули лол :3
а ничего и не сделаешь. от греха подальше опускаешь машинку, или роняешь апач и анализируешь откуда что идет, и какие признаки флуда. если машина мощная, то можно увеличить число сессий/коннектов на апаче посмотреть server-status как наши борют ихних.
надо попробовать еще IDS посмотреть далеко ли шагнула наука.
Offline
#11 11.01.11 14:46
#12 12.01.11 16:10
Re: Как защититься от DDOS-атаки?
iDrum верно освещает.) за хардварный IDS денег нужно заплатить много, про софтовые вообще ничего вменяемого не слышал, может профит и есть. syn flood можно попячить, потюнив ведро операционки, сейчас точно не помню, но можно через sysctl на время понизить количество "полуоткрытых" соединений; также в iptables можно дропать пакеты и банить адреса, если задетекчен syn-flood.
Offline
#13 15.01.11 11:52
Re: Как защититься от DDOS-атаки?
JONIK написал(а):
iDrum верно освещает.) за хардварный IDS денег нужно заплатить много, про софтовые вообще ничего вменяемого не слышал, может профит и есть. syn flood можно попячить, потюнив ведро операционки, сейчас точно не помню, но можно через sysctl на время понизить количество "полуоткрытых" соединений; также в iptables можно дропать пакеты и банить адреса, если задетекчен syn-flood.
Да ну нахер не слышал, софтом можно многое отрезать, нгинкс + иптаблес + ещё чего нить прикрутить и правильно настроить и срежешь стопудово свою атаку, на мелкие сайты никто себе не позволяет покупать ботнет на миллион ботов.
Offline
#14 15.01.11 14:11
Re: Как защититься от DDOS-атаки?
otaku написал(а):
Да ну нахер не слышал, софтом можно многое отрезать, нгинкс + иптаблес + ещё чего нить прикрутить и правильно настроить и срежешь стопудово свою атаку, на мелкие сайты никто себе не позволяет покупать ботнет на миллион ботов.
Ммм, я имел ввиду именно специализированные системы обнаружения вторжений (IDS - Intrusion Detection System), которые работают по эвристическим алгоритмам или заранее сформированным сигнатурам, и по результатам анализа трафика, сетевой и системной активности делают вывод, что производится сетевая атака, и как минимум информируют админа, а вообще и предлагают методы борьбы - тот же iptables)
Как пример такой подсистемы fail2ban - демон, который следит за активностью сервисов SSH, Apache, FTP и в случае скана пароля или превышения числа допустимых соединений в единицу времени банит адрес через iptables.
Offline
#15 15.01.11 19:25
Re: Как защититься от DDOS-атаки?
JONIK написал(а):
Ммм, я имел ввиду именно специализированные системы обнаружения вторжений (IDS - Intrusion Detection System), которые работают по эвристическим алгоритмам или заранее сформированным сигнатурам, и по результатам анализа трафика, сетевой и системной активности делают вывод, что производится сетевая атака, и как минимум информируют админа, а вообще и предлагают методы борьбы - тот же iptables)
Как пример такой подсистемы fail2ban - демон, который следит за активностью сервисов SSH, Apache, FTP и в случае скана пароля или превышения числа допустимых соединений в единицу времени банит адрес через iptables.
Платные софтовые решения есть у касперского.
Offline
#16 15.01.11 19:26
#17 12.02.11 01:39
Re: Как защититься от DDOS-атаки?
Offline
#18 12.02.11 12:25
Re: Как защититься от DDOS-атаки?
по-моим наблюдениям, сейчас бесполезно защищаца от ддоса и уж тем более на шаред хостинге. боты стали российскими, посиму не поможет отрубание заграницы. кол-во ботов в атаке стало меняться и так же хакиры научились (ну может и раньше умели, но я такого не наблюдал) менять типа атаки - сначала шёл http flood что пох, потом с этих же айпи пошёл udp flood, а потом и syn flood. и тут уже не помагают ни патчи ядра ни парсер логов.
если у вас социально значимый ресурс то можно получить бесплатную хорошую помощь
http://highloadlab.ru/services/service_8.html
http://kaspersky.ru/ddos-prevention
ну и за бабло. цены варьируются от 25 баксов до 200.
http://secureservertech.ru/
http://stop-ddos.net/ru/index_ru.html
http://ddosoff.ru/
Offline
#19 12.02.11 14:00
Re: Как защититься от DDOS-атаки?
iDrum, UDP/SYN-флуд на VDS рубится легко и непринуждённо.
Код::
sysctl net.ipv4.icmp_echo_ignore_all=1 iptables -I INPUT -p udp --dport 53 -j DROP -m iplimit --iplimit-above 1 sysctl -w net.ipv4.tcp_max_syn_backlog=1024 sysctl -w net.ipv4.tcp_synack_retries=1 sysctl -w net.ipv4.tcp_syncookies=1 iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP
Offline
#20 13.02.11 22:40
#21 22.02.11 17:23
#22 02.04.12 23:42
#23 06.04.12 15:52
Re: Как защититься от DDOS-атаки?
http://bkmz.org/425/zashtita-ot-ddos-iptables
проверено на собственном опыте - сервак не замечает активного ддоса на протяжении уже почти полугода
Offline
#24 06.04.12 20:36
#25 08.04.12 14:43
#26 10.04.12 16:34
Re: Как защититься от DDOS-атаки?
Igo написал(а):
похожую штуку городил когда postfix мой драконили. Написал скриптец, который тэйлил логи постфикса, и если там были отказы (отправка несуществующему юзеру, на не наш домен, попытка релэя, отправка от несуществующего юзер и т.п.), то заносил src ip в SET. SET "флэшился" раз в час (ну мало ли что за ошибка была, а нормальный почтовик если что перешлет письмо позже). За час набиралось 20-25 тысяч айпишников в списке. Не знаю, "адекватный" ли это ddos, но если дать волю этим 20 тысячам подключаться непосредственно к постфиксу - тот уходил в астрал.
может кому пригодится, код выложу. Ногами не пинать, чисто прикладнушка, которая реально помогла когда-то. Основной код - "борьба" с логротейтом.
Код::
cat /usr/local/bin/blockspam.php
#!/usr/bin/php -q
<?php
exec("/sbin/ipset -N SPAMHOST iphash >/dev/null 2>/dev/null");
//set initial variables
$file = "/var/log/maillog";
//set functions
function closeFile(&$handle)
{
fclose($handle);
}
function openFile(&$file, &$handle)
{
$handle = fopen($file, r);
}
function resetFile(&$file, &$handle)
{
closeFile($handle);
openFile($file, $handle);
}
function blockset($string)
{
$skip=strpos($string,"NOQUEUE");
$b=strpos($string,"[",$skip);
$e=strpos($string,"]",$skip);
$ip=substr($string,$b+1,$e-$b-1);
// echo $string."\n".$ip."\n";
exec("/sbin/ipset -A SPAMHOST {$ip} >/dev/null 2>/dev/null");
}
//main
openFile($file, $handle);
fseek($handle,SEEK_END);
$curPosition = filesize($file);
$curctime = filectime($file);
$curSize = filesize($file);
while (file_exists($file))
{
clearstatcache();
if(filectime($file) == $curctime)
{
sleep(1);
continue;
}
if(filesize($file) < $curSize)
{
resetFile($file, $handle);
$curPosition=0;
}
fseek($handle, $curPosition);
while (feof($handle) != true)
{
$string=fgets($handle);
if (strstr($string,"NOQUEUE: reject: RCPT from")) blockset($string);
$curPosition = ftell($handle);
$curctime = filectime($file);
$curSize=filesize($file);
}
}
closeFile($handle);
?>Offline
#27 10.08.12 09:05
Re: Как защититься от DDOS-атаки?
Вот интересное обсуждение http://habrahabr.ru/post/149302/
Offline

