Та никто вас ддосить так не будет - это накладно, проще найти какой-нибудь скрипт на сайте и дергать его - больше толку будет.
Когда нас ддосили все началось с поискового скрипта - 1000 запросов на поиск с 10-ти серверов предостаточно, мы ложились от 500 запросов, ибо никакой защиты от этого не предусмотрено, а поиск должен быть для всех - такова специфика портала. Потом простенький скрипт подсчета открытых сокетов с одного айпи и бан в айпителбсах решил данный вопрос и с таким ддосом от нас отстали, ибо не получается. На следующий день к нам пришли с ддосом удп-ответов от днс-серверов, наш датацентр сдался после 20 гигабит и заблекхолил нашу сетку. Сейчас сайт переписан для работы через клоудфлеер, а сам клоудфлеер ходит на сервер через совсем другую сеть. Займитесь лучше настройкой клоудфлеера - это бесплатно и если что вы будете готовы к любой ситуации, а ддосить клоудфлеер почти что бесперспективное занятие. А на лимиты забейте - это не поможет 21 июля 2016 г., 18:17 пользователь siroco <[email protected]> написал: > Всем привет! > > Пытаюсь настроить базовую защиту от DDOS, но не могу получить в тестах > подтверждение того, что выставленные параметры работают как надо. > > Имеется nginx/1.10.1. > Нагрузочные тесты запускаются с одной единственной машинки с IP > 172.20.241.135: > > (в nginx.conf прописано) > > ----------------------------------------------------------------- > geo $limited { > default 1; > 192.168.45.56/32 0; > 172.20.241.135/32 1; > } > > map $limited $limit { > 1 $binary_remote_addr; > 0 ""; > } > > limit_req_zone $limit zone=1000reqpersec:10m rate=1000r/s; > limit_conn_zone $limit zone=conn_limit_per_ip:10m; > > limit_req_status 429; > limit_conn_status 429; > limit_req_log_level notice; > ----------------------------------------------------------------- > > > (в конфиге виртуального сервера, se-centos7.domain.com.conf) > ----------------------------------------------------------------- > location /withlimits { > > limit_req zone=1000reqpersec; > limit_conn conn_limit_per_ip 10; > > root /usr/share/nginx/html; > > } > ----------------------------------------------------------------- > > > > Хочу получить подтверждение, что 1000 запросов в секунду все таки проходит. > > Пробую утилитку vegeta (https://github.com/tsenart/vegeta): > > (вот такой заголовок запроса) > # cat plan.txt > GET http://se-centos7.domain.com/withlimits/test.html > User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:40.0) > Gecko/20100101 Firefox/40.0 > Host: se-centos7.domain.com > Accept-Encoding: gzip, deflate > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > > > (пробуем 800 запросов в секунду) > # vegeta attack -duration=30s -rate=800 -timeout=1s -workers=40 > -targets=./plan.txt | vegeta report > Requests [total, rate] 24000, 800.03 > Duration [total, attack, wait] 29.999213425s, 29.998749891s, > 463.534µs > Latencies [mean, 50, 95, 99, max] 387.177µs, 354.506µs, 453.12µs, > 1.155159ms, 11.057387ms > Bytes In [total, mean] 14434520, 601.44 > Bytes Out [total, mean] 0, 0.00 > Success [ratio] 99.12% > Status Codes [code:count] 429:212 200:23788 > Error Set: > 429 > > > Видим, что 800 запросов не держит.. В error-логе вот что: > > 2016/07/21 17:56:46 [notice] 4881#4881: *399 limiting requests, excess: > 1.000 by zone "1000reqpersec", client: 172.20.241.135, server: > se-centos7.domain.com, request: "GET /withlimits/test.html HTTP/1.1", > host: > "se-centos7.domain.com" > 2016/07/21 17:56:47 [notice] 4881#4881: *393 limiting requests, excess: > 1.000 by zone "1000reqpersec", client: 172.20.241.135, server: > se-centos7.domain.com, request: "GET /withlimits/test.html HTTP/1.1", > host: > "se-centos7.domain.com" > > > > При использовании улититы wrk2 (https://github.com/giltene/wrk2) видим все > то же, уже на 500 запросах в минуту (R500): > > # ./wrk -t2 -c5 -d30s -R500 http://se-centos7.domain.com/withlimits/ > Running 30s test @ http://se-centos7.domain.com/withlimits/ > 2 threads and 5 connections > Thread calibration: mean lat.: 1.076ms, rate sampling interval: 10ms > Thread calibration: mean lat.: 0.974ms, rate sampling interval: 10ms > Thread Stats Avg Stdev Max +/- Stdev > Latency 1.03ms 374.32us 6.14ms 67.16% > Req/Sec 267.14 53.27 444.00 59.96% > 15002 requests in 30.00s, 10.75MB read > Non-2xx or 3xx responses: 4019 > Requests/sec: 500.03 > Transfer/sec: 366.90KB > > Видим, что "Non-2xx or 3xx responses: 4019", т.е. много 429ых ошибок. > > Параметр limit_conn тоже не работает, не срабатывает ограничение в 10 > коннекций с одного IP.. > > Что я делаю не так? > > Как можно получить подтверждение того, что выставленные лимиты отрабатывают > правильно. > > -- > s. > > Posted at Nginx Forum: > https://forum.nginx.org/read.php?21,268405,268405#msg-268405 > > _______________________________________________ > nginx-ru mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
