LINUX.ORG.RU

Атака пустыми запросами

 


0

2

В логах nginx вижу

173.245.54.234 - - [12/Oct/2015:10:38:40 +0300] "GET / HTTP/1.1" 403 142 "-" "-"
162.158.95.173 - - [12/Oct/2015:10:38:40 +0300] "GET / HTTP/1.1" 403 142 "-" "-"
173.245.54.234 - - [12/Oct/2015:10:38:40 +0300] "GET / HTTP/1.1" 403 142 "-" "-"
173.245.53.138 - - [12/Oct/2015:10:38:40 +0300] "GET / HTTP/1.1" 403 142 "-" "-"
В конфиг nginx нужно ставить первую или вторую строчку?
		if ($http_user_agent = "") { return 403; }
		if ($http_user_agent = "-") { return 403; }


Ответ на: комментарий от Towelie

Никакую, nginx уже отдаёт 403.

Это бек отдает 403.

anonymous
()
Ответ на: комментарий от Amet13

Спасибо, затея хорошая, только проблема в том что трафик через CF идёт, соответственно все ip от этого сервиса в логе

User01
() автор топика
Ответ на: комментарий от User01

если отдает ошибку 403, но сайт всеравно при атаке перестает работать, наверное в какие-то лимиты упирается?

User01
() автор топика
Ответ на: комментарий от User01

сайт всеравно при атаке перестает работать

А в чем это выражается? Может быть в error_log что-нибудь написано? Или в syslog? А в браузере?

anonymous
()
Ответ на: комментарий от User01
nginx: worker process
Limit                     Soft Limit           Hard Limit           Units
Max open files            80000                80000                files
Currently open files: 16

nginx: worker process
Limit                     Soft Limit           Hard Limit           Units
Max open files            80000                80000                files
Currently open files: 12

nginx: master process /usr/sbin/nginx
Limit                     Soft Limit           Hard Limit           Units
Max open files            4096                 4096                 files
Currently open files: 13

поставил так, посмотрим что будет. Только не пойму где менять значение 4096

User01
() автор топика
Ответ на: комментарий от User01

не помогло, пишет

2015/10/12 18:01:38 [error] 17696#0: *1316 upstream prematurely closed connection while reading response header from upstream, client: 162.158.68.65, server: xxxx.ru, request: "GET / HTTP/1.1", upstream: "http://xxxxxxxxx:8080/", host: "xxxx.ru"

User01
() автор топика
Ответ на: комментарий от User01

вот такой хлам посыпался

173.245.54.72 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;"
162.158.76.227 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"
188.114.104.47 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"
173.245.54.72 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1"
173.245.50.234 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 200 8739 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:13.0) Gecko/20100101 Firefox/13.0.1"
108.162.241.185 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"
173.245.50.234 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 200 8774 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91)"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91)"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
188.114.104.47 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91)"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Windows NT 5.1; rv:5.0.1) Gecko/20100101"
173.245.54.72 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4)"
162.158.68.65 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"
188.114.104.47 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
108.162.241.185 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91)"
188.114.104.47 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"
173.245.50.85 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko)"
173.245.50.234 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
173.245.50.85 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3"
162.158.76.227 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 608 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;"
188.114.104.47 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4)"
173.245.50.85 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1"
173.245.50.85 - - [12/Oct/2015:18:09:12 +0300] "GET / HTTP/1.1" 503 206 "-" "Mozilla/5.0 (Linux; U; Android 2.2; fr-fr; Desire_A8181 Build/FRF91)"

User01
() автор топика
Ответ на: комментарий от User01

ВОт таким теперь заспамило лог

limiting requests, excess: 5.342 by zone "two", client: 162.158.68.65,

User01
() автор топика
Ответ на: комментарий от i-rinat

Да это было бы проще всего, но все ip с CF идут же. Пока что помогает только режим «under attack» в CF, но это не лучший вариант для решения вопроса

User01
() автор топика
Ответ на: комментарий от User01

Кстати касательно

grep 'GET / HTTP/1.1" 403' /var/log/nginx/access.log | awk '{print $1}' | xargs -i iptables -A INPUT -s {} -j DROP
23 тыс айпишек, тут от самого iptables сдохнет сервер)))

User01
() автор топика
Ответ на: комментарий от User01

Можешь попробовать отдавать редирект при запросах к главной на копию страницы и посмотреть пойдут ли по ним боты.

d2
()
Ответ на: комментарий от User01

Да это было бы проще всего, но все ip с CF идут же. Пока что помогает только режим «under attack» в CF, но это не лучший вариант для решения вопроса


эээ... вы не настраивали real_ip o_O? как вы статистику продаж и прочее считаете тогда?

set_real_ip_from 199.27.128.0/21;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20; 
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
real_ip_header CF-Connecting-IP;


только глянь какие IP у CF свежие, мож что поменялось, я с него полгода слез как.

BaBL ★★★★★
()
Ответ на: комментарий от BaBL

сделал, но тут спуф видимо

5.172.194.63 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
81.177.24.116 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
184.168.46.112 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
119.18.57.157 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 200 8671 "-" "PHP/5.3.29"
187.45.180.6 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
185.69.53.170 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
37.230.106.33 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
37.61.233.10 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 503 206 "-" "PHP/5.3.29"
129.121.178.35 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 200 8671 "-" "PHP/5.4.45"
62.148.177.107 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
209.236.71.103 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
202.46.129.104 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
141.138.168.128 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
188.165.224.43 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
197.242.147.251 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
185.25.21.31 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
193.2.14.8 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
187.45.240.73 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
186.202.153.53 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
77.75.250.224 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
80.172.230.30 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
37.122.211.128 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
144.76.56.195 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
50.62.161.180 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
37.61.233.10 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 503 206 "-" "PHP/5.3.29"
123.30.51.253 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 200 8671 "-" "PHP/5.2.8"
189.1.162.19 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
187.45.240.71 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
184.168.46.112 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
97.74.144.116 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
37.122.211.128 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
97.74.144.116 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
103.9.168.10 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"
112.140.180.50 - - [12/Oct/2015:23:08:11 +0300] "GET / HTTP/1.1" 403 135 "-" "-"

User01
() автор топика
Ответ на: комментарий от User01

То что я тебе дал - вытягивает из клаудфлейра реальные айпишники клиентов (ну или проксей), они теперь у тебя светятся в логе вместо CF. Эти айпишники ты теперь смело можешь засовывать в fail2ban или еще куда, единственное, очисть логи, а то по истории до изменения конфига они побанят тебе клаудфлейр.

BaBL ★★★★★
()
Ответ на: комментарий от User01

но тут спуф видимо

Какой блин спуф, сеть ботов. Спуфинг в таком виде глобально давно уже не работает.

Поменяй уже 403 на 444, так будет тратиться меньше ресурсов на обработку подобных запросов: nginx просто дропнет соединение.

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

И вобще есть смысл начать что-то делать на стороне cloudflare: возможностей борьбы с ддосом у них явно больше и гибче.

xtraeft ★★☆☆
()
Ответ на: комментарий от BaBL

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

User01
() автор топика
Ответ на: комментарий от xtraeft

на стороне CF начал заносить сети в фаервол. Так как у себя их баню а трафик через них не идёт. ЗАметил с некоторых ip по 500 запросов, может в nginx выставить лимит конектов как-то

User01
() автор топика

В location / if ($http_user_agent = "") { return 444; }

Все, что прийдет с пустым user-agent будет дропнуто и клиент получит HTTP 444

jerrydp
()
Ответ на: комментарий от jerrydp

стоит такое в server {

		if ($http_user_agent = "") { return 444; }
		if ($http_user_agent ~ '^$') { return 444; }
		if ($http_user_agent ~ 'WordPress') { return 444; }

User01
() автор топика
Ответ на: комментарий от Deleted

так то да, но создает десятки дубликатов правил. Так же трафик через них не идёт, iptables же принимает ip от CF

User01
() автор топика
Ответ на: комментарий от Deleted
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4
    0     0 LOG        all  --  *      *       107.170.221.164      0.0.0.0/0            LOG flags 0 level 4

User01
() автор топика
Ответ на: комментарий от Deleted
# awk '/GET / HTTP/1.1" 444/ {print($1)}' /var/log/nginx/access.log | xargs -i iptables -t raw -I PREROUTING -s {} -j LOG
awk: line 1: runaway string constant " 444/ {pri ...

User01
() автор топика
Ответ на: комментарий от Deleted

Ловить ip и банить на сервере я так понимаю нету смысла, так как iptables ведь не читает их, трафик через CF адреса заходит

User01
() автор топика
Ответ на: комментарий от xtraeft

Ну а что тут обьяснять то, добавил в файл blocklist.conf такие сети

deny 97.74.0.0/16;
deny 37.214.0.0/16;
deny 196.26.0.0/16;
deny 158.69.0.0/16;
deny 23.95.0.0/16;
deny 172.245.0.0/16;
deny 162.221.0.0/16;
deny 185.69.0.0/16;
deny 223.130.0.0/16;
deny 94.152.0.0/16;
deny 94.152.0.0/16;
В CF их тоже добавил. Но вижу что упирается теперь в 65к подключений контрек.

User01
() автор топика
Ответ на: комментарий от jerrydp

да все уже, поблочил трафик. Спасибо за помощь. Кстати спустя 4 дня флуда, мне написали в скайп

подскажите пожалуйста, подвергался ли Ваш ресурс/хостинг так званым DDoS атакам?
Скайп jylia.kalajda они представляли сайт https://generalprotect.com/ и предлагали свои услуги. Я так понимаю это такой ход, по бомбить сайт несколько дней, а потом предложить аккуратно свои услуги)

User01
() автор топика
Ответ на: комментарий от zolden

))) да после того как ответил что меня не интересуют их услуги, трафик грязный перестал поступать. В iptables все чисто. Вот так люди набирают себе клиентуру))

User01
() автор топика
Ответ на: комментарий от User01

Я тебе как контрразведчик контрразведчику объясню ситуацию.
Люди заморочались,собрали о тебе информацию (какую? как?), применили некий вариант(единственный? один из многих?) воздействия (могли ли сильнее? если да,то насколько сильнее/дольше/сложнее), а у тебя в результате из данных только левый скайп.
Случись заварушка поинтереснее в следующий раз, ты опять будешь не готов

zolden ★★★★★
()
Ответ на: комментарий от zolden

ну будем решать вопросы по их поступлению)

User01
() автор топика
Ответ на: комментарий от cherry-pick

Почему, если включить режим защиты, защищает нормально, только тогда у клиентов проверка браузера идёт, и яндекс пишет что сайт не доступен.

User01
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.