-SkyLord-

-SkyLord-
Рейтинг
18
Регистрация
08.08.2014
porutchik:
И что в этом похабного?

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

takewyn:
-SkyLord-, рекламируя хостинг в подписи хоститесь в другом месте? Что то в этой теме не так.

Там висела рефф ссылка просто, убрал, не заметил сразу, хотя и к делу это действительно не имеет отношения.

zexis:
-SkyLord-, не очень хорошее решение.
Так как администратору придется постоянно смотреть логи, смотреть есть ли атака и вносить изменения в скрипт.

Другое решение заключается лишь в том, чтоб выкидывать при запросе алерт на который нужно нажать, чтобы попасть на сайт, либо проверка по кукам. Но при этих 2-х вариантах будут футболиться поисковые боты поисковиков.

Если же у Вас есть решение получше, позволяющее миновать просмотр логов, то предложите его здесь.

Поставьте модуль IPSET

В конфиг IPTABLES перед началом правил:

ipset -N banip iphash

iptables -A INPUT -m set --set banip src -j DROP

Далее необходимо написать скрипт, я покажу свой на примере NGINX :

$cat ddos.sh

#!/bin/sh

cat /dev/null > /root/botnet.blacklist

cat /var/log/nginx/cache.log | grep "HTTP/1.1" | grep "404 366" | awk '{print $1}'| awk -F"," '{print $1}'| sort | uniq -c | sort -nr > /root/botnet.blacklist

cat /dev/null > /root/iptables_ban.sh

awk '{print "/usr/sbin/ipset -A banip " $2 "" }' botnet.blacklist | head -n 500 >> /root/iptables_ban.sh

sh /root/iptables_ban.sh

cat /dev/null > /var/log/nginx/cache.log

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

Соответственно создаем так же файлы botnet.blacklist и iptables_ban.sh

Скрипт вешаем раз в минуту на крон.

В строке:

cat /var/log/nginx/cache.log | grep "HTTP/1.1" | grep "404 366" | awk '{print $1}'| awk -F"," '{print $1}'| sort | uniq -c | sort -nr > /root/botnet.blacklist

Меняем критерии выборки на свои : grep "HTTP/1.1" | grep "404 366"

Судя по вашему логу попробуйте:

grep "200 127011" | grep "AppleWebKit/537.36"

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

Поиском по базе пройдитесь

kxk:
-SkyLord-, Зачем ipset, есть iproute он меньше кушает и есть в любом ядре без плясок с бубном...

А это уже кому как удобней на любителя, я к примеру не предпочитаю держать тонну заблекхоленных IP в таблице маршрутизации, для этого IPSET и писался. Да и я бы не сказал, что IPSET больше кушает чем несколько тысяч маршрутов в таблице.

Судя по логу банальнейшая атака ботами HTTP флудом.

Для лечения Вы можете выбрать 2 варианта:

1. Воспользоваться услугами защиты от DDoS атак у любого хостера кто предоставляет эти услуги.

2. Переехать на VPS (вполне достаточно)

Сделать тюнинг сетевого стека в sysctl.conf (мануалов полно)

Перед апачем воткнуть NGINX проксей в режиме кеширования

Установить IPSET для работы с IPTABLES

Раз в 30 минут по крону парсить лог NGINX и делать выборку. В Вашем примере забить в парсер

"GET/HTTP/1.0" "200 146052"

"GET/HTTP/1.0" "404 112507"

Все IP пойманные на этом сливать на IPSET

В помощь:

http://habrahabr.ru/post/84172/

http://www.netangels.ru/support/vds-howto/ddos/

Для начала нужно определиться какой тип роутеров Вы используете, если это что то вроде домашних Cisco ASA 5505 то вполне можно реализовать.

Возможно, только на точке входа в туннель необходима очистка этого трафика, иначе что его чистить будет? Не будет очистки - весь трафик и полезный и паразитный польется через этот туннель. Нет никакого смысла в туннелировании без услуги защиты от атак. Эта услуга как раз и подразумевает процедуру защиты без переезда самого сервера в другой датацентр. И происходит это так - на точке входа в туннель стоит оборудование, которое противодействует DDoS атакам, на нем происходит очистка паразитного трафика, далее полезный трафик через тунель летит к Вам на сервер. В итоге мы получаем защиту от атаки без переезда сервера в другой датацентр.

Всего: 89