ограничение количества соединений к вебсерверу

dspu
На сайте с 10.05.2006
Offline
268
5998

Попытались спарсить сайт и уронили vps :mad:

Какие методы борьбы порекомендуете?

Вот нашел для nginx:

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
location /download/ {
limit_conn addr 100;
}

Есть еще модули для апача, вроде limitipconn, но они, имхо, будут больше нагружать сервер, чем решение с nginx :confused:

---------- Добавлено 20.09.2012 в 17:12 ----------

вот такие еще варианты:

Ограничь количество соединений с помощью брандмауэра

Для не слишком нагруженного Web-сайта хорошей идеей будет ограничить количество попыток соединений с одного IP-адреса в минуту. Это сможет уберечь тебя от некоторых типов DoS-атак и брутфорса. В Linux это можно сделать с помощью стандартного iptables/netfilter-модуля state:

# iptables -A INPUT -p tcp --dport 80 -i eth0 \
-m state --state NEW -m recent --set
# iptables -A INPUT -p tcp --dport 80 -i eth0 \
-m state --state NEW -m recent --update \
--seconds 60 --hitcount 15 -j DROP

Правила урезают лимит на количество подключений с одного IP в минуту до 15. То же можно сделать и с помощью pf:

# vi /etc/pf.conf

webserver_ip="1.1.1.1"
table <abuse> persist
block in quick from <abuse>
pass in on $ext_if proto tcp to $webserver_ip \
port www flags S/SA keep state \
(max-src-conn 100, max-src-conn-rate 15/60, \
overload <abusive_ips> flush)

Кроме лимита на количество последовательных подключений (15 в минуту), данное правило устанавливает дополнительный лимит на количество одновременных подключений равный 100.

И какие значения для ограничений порекомендуете? 15 в минуту - этого достаточно? Можно ли вычислить данное значение по логам сервера для данного конкретного сайта?

Den73
На сайте с 26.06.2010
Offline
523
#1
dspu:
Попытались спарсить сайт и уронили vps 😡
Какие методы борьбы порекомендуете?

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

zexis
На сайте с 09.08.2005
Offline
388
#2

Я ставлю в конфигурации nginx

В блок

http {

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_conn addr 10;

limit_req_zone $binary_remote_addr zone=lphp:10m rate=1r/s;

а в блок

location / {

который проксирует на апач

limit_req zone=lphp burst=10 nodelay;

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

Потом смотрите в access.log и error.log в nginx.

Если видите, что пользователям отдается ошибка 503, то лимиты увеличиваете.

Den73
На сайте с 26.06.2010
Offline
523
#3

zexis

от парсинга сайта это не поможет, поможет от f5 и быстрых ботов.

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