У меня есть прокси-сервер защиты от ddos для борьбы с SYN-флудами и т. Д. Но HTTP-флуды все еще проходят. По какой-то причине их прокси-сервер ddos не блокирует ни один флуд. Таким образом, количество подключений к приставке составляет около 500 дюймов в секунду, а максимальное количество подключений составляет около 20 тысяч. Это приводит к тому, что php запускает 1k процессов, перегружающих ящик. Как я могу смягчить этот http-наводнение? Я думал, что настройка файла htaccess, который требует cookie для доступа к сайту, будет работать, но rewritecond, похоже, вызывает php, что приводит к перегрузке окна.
Как я могу это смягчить?
В такой ситуации, как ваша, лучшее, что можно сделать, - это оценить и / или ограничить IP-соединения с вашим сервером (либо на вашем прокси-сервере защиты от DDoS-атак - если он чего-нибудь стоит, он сможет это сделать - либо на вашем сервере. используя любое доступное программное обеспечение межсетевого экрана (pf, iptables и т. д.).
Ваша цель - остановить атаки до того, как они поразят ваш сервер, используя отдельный брандмауэр или ваш прокси-сервер защиты от DDoS (вычислительно свободный) или как можно раньше - например, во время процесса установления связи TCP - на вашем сервере (вычислительно дешево), а не пытаться бороться с ним на уровне веб-сервера / приложения (вычислительно затратно: вам нужно было настроить все TCP-соединение и начать разговор с веб-сервером, прежде чем вы поймете, что не хотите отвечать на этот конкретный запрос).
Вы на правильном пути с подходом на основе файлов cookie, но первоначальная проверка должна выполняться с использованием процесса, намного более дешевого, чем поток Apache / PHP. Я предлагаю прокси-сервер nginx перед вашим веб-хостом, который принудительно перенаправляет и устанавливает cookie. На ваш PHP-хост разрешены только запросы, содержащие соответствующий файл cookie.
И пока вы настраиваете прокси, эта относительно новая программа для обнаружения ботов впечатляет:
http://www.ecl-labs.org/2011/03/17/roboo-http-mitigator.html
Я также настоятельно рекомендую ссылку на DDoS-презентацию на этой странице:
http://www.ecl-labs.org/papers/yg-ab-building_floodgates.pptx
Он охватывает общие концепции защиты от DDoS-атак и описывает, почему они написали Roboo.
Нам удалось смягчить эту атаку с помощью правила htaccess.
RewriteEngine On
SetEnvIf User-Agent ".*MSIE 6.0; Windows NT 5.1; SV1.*" dontlog
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1; SV1.$" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.0; Windows NT 5.1;1813.$" [OR]
RewriteCond %{HTTP_USER_AGENT} "^(?:User-Agent: )?Mozilla/4.0 \(compatible; MSIE 6.0; Windows NT 5.1;(?: SV1|1813)\)$" [OR]
RewriteCond %{HTTP_USER_AGENT} "MSIE 6.0; Windows NT 5.1; SV1"
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=302,L]
и или iptables
iptables -I INPUT 1 -p tcp --dport 80 -m string --string "MSIE 6.0; Windows NT 5.1; SV1" --algo bm -j DROP
вы можете добавить несколько портов в iptables
Я бы добавил к ответу Воретака, что вы должны попробовать цель «LIMIT» в iptables.
Взято из: http://www.cyberciti.biz/faq/iptables-connection-limits-howto/
Пример: ограничение SSH-подключений на IP / хост Разрешить только 3 ssg-подключения на клиентский хост:
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
# save the changes see iptables-save man page, the following is redhat and friends
# specific command
service iptables save