Защита от ддос атаки (пост запросы)

D
На сайте с 07.11.2000
Offline
219
2900

Атака идет периодически, путем забивания входящего канала по http (отправка больших пост запросов).

Я отключил обработку пост в nginx и он отдает 405 Not Allowed. Но, судя по всему, сервер принимает тело запроса и уже потом nginx отдает ошибку. Верно понимаю?

Отсеиваю список ботов по логам и добавляю ip в iptables.

1. как ограничить POST запросы, чтобы сервер вообще не принимал их (или как вариант: принимал все, что менее 4Кб)?

2. если ip заблокирован: iptables -A INPUT -s 1.2.3.4 -j DROP - верно ли я понимаю, что не будет входящего трафика на сервер с данного ip?

3. думаю автоматизировать: кто-то пробовал скармливать большие (3-10 Гб) http логи в fail2ban - не грузит ли оно систему? Конечно, можно писать подозрительные запросы в отдельный лог. Но, стиль атаки может изменяться.

K5
На сайте с 21.07.2010
Offline
209
#1

php обрабатывает не нгикс (он лишь в качестве прокси), соответственно настраивать, то что за ним (апач или пхпфпм).

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
D
На сайте с 07.11.2000
Offline
219
#2

Перепроверил, слова php в моем посте нет. Как и самого php в этой проблеме

pupseg
На сайте с 14.05.2010
Offline
347
#3

Не верно понимаете.

Принимаете вы пакет, или не принимаете - это ваше дело. Провайдер смаршрутизировал к вам трафик. Пакет пришел в вашу сетевую карточку и попал в tcp\ip - стек вашей ОС. Далее уже файерволл его обработал.

Иными словами, файерволлы и фильтрация от забивания канала не помогут в широком смысле.

Просите вашего провайдера не пускать к вам паразитный трафик.

---------- Добавлено 05.02.2017 в 18:04 ----------

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

ip route add blackhole ip.add.rr

Но в любом случае, если у вас канал 100Мбит, а в вас вдули 200Мбит - полосой вы управлять не сможете.

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
kxk
На сайте с 30.01.2005
Offline
970
kxk
#4

pupseg, Тенденция такова что есть уникумы какие себе уже сами зубы лечить пытаются, вот уж по истине скупость на первом месте.Прописные истины им говорить бесполезно они стоят на своём: Я сэкономлю и лучше куплю пива и сигарет, чем дам этим жлобам.

Колхозят L7 "фильтры" от каких никакого толка теряют "мильёны" и снова по кругу.

Мне текущее положение дел сильно напоминает ранее SEO, когда профи сняли куш, а потом набежала толпа школьников и обрушила рынок своими грязными ручонками.

Ваш DEVOPS
S
На сайте с 17.08.2008
Offline
114
#5
client_max_body_size 100m;

В этом примере максимальный пост запрос 100 мегабайт, переделай под свои нужды.

Меньше мегабайта лимит вроде не устанавливается.

Атака идет периодически, путем забивания входящего канала по http (отправка больших пост запросов).

Ну посмотрите откуда идет атака? Из каких стран, на какие страницы... Начните с гео банов, по странам... Потом перейдите на типы браузеров и урл которые атакуют.

теряют "мильёны" и снова по кругу.

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

kxk
На сайте с 30.01.2005
Offline
970
kxk
#6

smbbws, Бесплатный пользователь не спрашивает советов как защитить сайт от всего на свете "своими силами".Зачем платить этим жлобам в конторе, если я всё сам с усами, вот такая сейчас тенденция.

D
На сайте с 07.11.2000
Offline
219
#7
pupseg:
Не верно понимаете.
Принимаете вы пакет, или не принимаете - это ваше дело. Провайдер смаршрутизировал к вам трафик. Пакет пришел в вашу сетевую карточку и попал в tcp\ip - стек вашей ОС. Далее уже файерволл его обработал.

Если трафик от атакующего - не мусор, а конкретные запросы (в данном случае POST). В этом случае атакующая машина отправляет запрос на соединение, и только после успешного соединения отправляет POST запрос (иначе ей не нужно заморачиваться с POST, а отправлять просто мусор).

Вопросы:

1) если ip атакующего заблокирован: iptables -A INPUT -s 1.2.3.4 -j DROP - трафик будет - только попытки соединения, без передачи тела запроса?

2) если ip не заблокирован, nginx-у нужно принять весь входящий запрос, чтобы сказать в ответ 405 Not Allowed - верно? Или можно как-то ограничить?

---------- Добавлено 06.02.2017 в 02:53 ----------

smbbws:
client_max_body_size 100m;
В этом примере максимальный пост запрос 100 мегабайт, переделай под свои нужды.
Меньше мегабайта лимит вроде не устанавливается.

1 Мб - это по умолчанию, можно менее.

client_max_body_size 32k;

правда, не уверен в директиве, т.к. она просто смотрит на Content-Length.

И стоит:

limit_except GET {

deny all;

}

(принимать только GET и HEAD)

S
На сайте с 17.08.2008
Offline
114
#8
iptables -I INPUT -d my_server_ip -p tcp --dport 80 -m string --string 'POST /' --algo bm -j DROP

Нашел на просторах инета, блокирует пост запросы на уровне файрвола, не знаю насколько работоспособно.

DROP - трафик будет - только попытки соединения, без передачи тела запроса?

Дропы и реджекты срабатывают сразу, по факту срабатывания условия.

A
На сайте с 19.07.2010
Offline
130
#9

пару лет назад уже ходил похожий флуд POST-ами.

давилось, так как Вы написали, nginx+iptables. даже впски на OpenVZ с 512рама чувствовали себя замечательно.

Dimka:

1) если ip атакующего заблокирован: iptables -A INPUT -s 1.2.3.4 -j DROP - трафик будет - только попытки соединения, без передачи тела запроса?
2) если ip не заблокирован, nginx-у нужно принять весь входящий запрос, чтобы сказать в ответ 405 Not Allowed - верно? Или можно как-то ограничить?

да, совершенно верно. 405 или 444 (сброс соединения), затем по крону парсинг лога nginx и добавление новых ip в "iptables DROP..."

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

если ip-шников много, то как правильно советовал pupseg, лучше использовать ip route add blackhole вместо "iptables DROP..."

---------- Добавлено 06.02.2017 в 09:25 ----------

smbbws:
iptables -I INPUT -d my_server_ip -p tcp --dport 80 -m string --string 'POST /' --algo bm -j DROP

с этим аккуратнее, это чудо может порезать и нормальные пакеты

.............

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий