ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проблема с блокировкой IP а дресов, а также с limit_conn



limit_conn и deny работают не на уровне сети, а на кровне nginx'a - он просто будет выдавать ошибки тем ip.
А для блокировки ip/отслеживания кол-ва соединений обычно пользуются фаирволлом.

25 января 2009 г. 13:38 пользователь Доронин Сергей <nophear@xxxxxxxxx> написал:
Здравствуйте!
У меня на сервере на 8080 порту установлен apache, а на 80 nginx. Иногда мой сайт подвергается http-флуд атакам, что влечёт за собой множество

соединений с одного IP. Соответственно мне нужно средствами nginx ограничивать количество соединений с одного IP и блокировать доступ к сайту

для некоторых IP адресов. В документации по nginx я нашёл решение обоих вопросов. Вырезка из nginx.conf:

# NGINX Server configuration

worker_processes  3;

error_log  /home/myhost/logs/error.log;

pid        /home/myhost/logs/nginx.pid;

events {
   worker_connections  1024;
}


http {
   include       /usr/local/etc/nginx/mime.types;
   default_type  application/octet-stream;
   server_names_hash_bucket_size 64;

   access_log  /home/myhost/logs/access.log combined;

   sendfile        on;

   keepalive_timeout  20;


   limit_zone   one  $binary_remote_addr  10m;

   server {
       listen       1.2.3.4:80;
       server_name  myhost.nichost.ru www.myhost.nichost.ru;

       limit_conn   one  3;

       allow all;
       deny 92.113.238.129;
.....................
Где 1.2.3.4 - IP моего сервера.
С данным конфигом я запускаю nginx. После этого смотрю в netstat и вижу такую картину:

[myhost@web48 ~]$ netstat -an|grep ESTABLISH|more
netstat: kvm not available
tcp4       0      0  1.2.3.4.80      62.182.93.42.55050     ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20928   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.124.46.214.3788     ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19614   ESTABLISHED
tcp4       0      0  1.2.3.4.80      62.182.93.42.56534     ESTABLISHED
tcp4       0    330  1.2.3.4.80      62.182.93.42.64848     ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19580   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20842   ESTABLISHED
tcp4       0    330  1.2.3.4.80      95.79.9.220.3079       ESTABLISHED
tcp4       0    690  1.2.3.4.80      92.126.158.158.49561   ESTABLISHED
tcp4       0    690  1.2.3.4.80      92.126.158.158.49560   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20807   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20795   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19495   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20776   ESTABLISHED
tcp4       0    330  1.2.3.4.80      95.79.9.220.3078       ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20775   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20774   ESTABLISHED
tcp4       0    330  1.2.3.4.80      89.250.149.46.61099    ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20760   ESTABLISHED
tcp4       0    690  1.2.3.4.80      92.243.181.212.17171   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.124.46.214.3784     ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20735   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20738   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20718   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20708   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20699   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20669   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20666   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19411   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20657   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20633   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19377   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.19400   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.124.46.214.3780     ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20599   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20598   ESTABLISHED
tcp4       0    330  1.2.3.4.80      92.113.238.129.20587   ESTABLISHED
[myhost@web48 ~]$ ps aux|grep nginx
myhost 89909  0.0  0.0 12224  1220  ??  Ss   12:47PM   0:00.00 nginx: master process /usr/local/sbin/nginx -c /home/myhost/nginx/nginx.conf

(nginx)
myhost 89910  0.0  0.1 12684  1692  ??  S    12:47PM   0:06.15 nginx: worker process (nginx)
myhost 89911  0.0  0.0 12500  1508  ??  S    12:47PM   0:08.07 nginx: worker process (nginx)
myhost 89912  0.0  0.0 12500  1508  ??  S    12:47PM   0:08.19 nginx: worker process (nginx)
myhost 94547  0.0  0.0  1592   836  p5  S+    1:13PM   0:00.00 grep nginx
[myhost@web48 ~]$

92.113.238.129 - данный IP не только успешно соединяется с nginx (не смотря на "deny"), но и делает это параллельно бесконечное множество раз

(не смотря на limit_zone/limit_conn). Скажите пожалуйста, что я делаю не так? Почему nginx игнорирует соответствующие директивы в конфигах?

Заранее, спасибо!




--
С уважением, Борис Долгов.
icq 77556665
e-mail boris@xxxxxxxxxxx


 




Copyright © Lexa Software, 1996-2009.