limit_conn и deny работают не на уровне сети, а на кровне nginx&#39;a - он просто будет выдавать ошибки тем ip. <br>А для блокировки ip/отслеживания кол-ва соединений обычно пользуются фаирволлом.<br><br><div class="gmail_quote">
25 января 2009 г. 13:38 пользователь Доронин Сергей <span dir="ltr">&lt;<a href="mailto:nophear@yandex.ru">nophear@yandex.ru</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Здравствуйте!<br>
У меня на сервере на 8080 порту установлен apache, а на 80 nginx. Иногда мой сайт подвергается http-флуд атакам, что влечёт за собой множество<br>
<br>
соединений с одного IP. Соответственно мне нужно средствами nginx ограничивать количество соединений с одного IP и блокировать доступ к сайту<br>
<br>
для некоторых IP адресов. В документации по nginx я нашёл решение обоих вопросов. Вырезка из nginx.conf:<br>
<br>
# NGINX Server configuration<br>
<br>
worker_processes &nbsp;3;<br>
<br>
error_log &nbsp;/home/myhost/logs/error.log;<br>
<br>
pid &nbsp; &nbsp; &nbsp; &nbsp;/home/myhost/logs/nginx.pid;<br>
<br>
events {<br>
 &nbsp; &nbsp;worker_connections &nbsp;1024;<br>
}<br>
<br>
<br>
http {<br>
 &nbsp; &nbsp;include &nbsp; &nbsp; &nbsp; /usr/local/etc/nginx/mime.types;<br>
 &nbsp; &nbsp;default_type &nbsp;application/octet-stream;<br>
 &nbsp; &nbsp;server_names_hash_bucket_size 64;<br>
<br>
 &nbsp; &nbsp;access_log &nbsp;/home/myhost/logs/access.log combined;<br>
<br>
 &nbsp; &nbsp;sendfile &nbsp; &nbsp; &nbsp; &nbsp;on;<br>
<br>
 &nbsp; &nbsp;keepalive_timeout &nbsp;20;<br>
<br>
<br>
 &nbsp; &nbsp;limit_zone &nbsp; one &nbsp;$binary_remote_addr &nbsp;10m;<br>
<br>
 &nbsp; &nbsp;server {<br>
 &nbsp; &nbsp; &nbsp; &nbsp;listen &nbsp; &nbsp; &nbsp; <a href="http://1.2.3.4:80" target="_blank">1.2.3.4:80</a>;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;server_name &nbsp;<a href="http://myhost.nichost.ru" target="_blank">myhost.nichost.ru</a> <a href="http://www.myhost.nichost.ru" target="_blank">www.myhost.nichost.ru</a>;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;limit_conn &nbsp; one &nbsp;3;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;allow all;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;deny 92.113.238.129;<br>
.....................<br>
Где 1.2.3.4 - IP моего сервера.<br>
С данным конфигом я запускаю nginx. После этого смотрю в netstat и вижу такую картину:<br>
<br>
[myhost@web48 ~]$ netstat -an|grep ESTABLISH|more<br>
netstat: kvm not available<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp;0 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;62.182.93.42.55050 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20928 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.124.46.214.3788 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19614 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp;0 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;62.182.93.42.56534 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;62.182.93.42.64848 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19580 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20842 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;95.79.9.220.3079 &nbsp; &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;690 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.126.158.158.49561 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;690 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.126.158.158.49560 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20807 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20795 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19495 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20776 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;95.79.9.220.3078 &nbsp; &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20775 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20774 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;89.250.149.46.61099 &nbsp; &nbsp;ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20760 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;690 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.243.181.212.17171 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.124.46.214.3784 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20735 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20738 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20718 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20708 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20699 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20669 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20666 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19411 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20657 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20633 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19377 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.19400 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.124.46.214.3780 &nbsp; &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20599 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20598 &nbsp; ESTABLISHED<br>
tcp4 &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp;330 &nbsp;1.2.3.4.80 &nbsp; &nbsp; &nbsp;92.113.238.129.20587 &nbsp; ESTABLISHED<br>
[myhost@web48 ~]$ ps aux|grep nginx<br>
myhost 89909 &nbsp;0.0 &nbsp;0.0 12224 &nbsp;1220 &nbsp;?? &nbsp;Ss &nbsp; 12:47PM &nbsp; 0:00.00 nginx: master process /usr/local/sbin/nginx -c /home/myhost/nginx/nginx.conf<br>
<br>
(nginx)<br>
myhost 89910 &nbsp;0.0 &nbsp;0.1 12684 &nbsp;1692 &nbsp;?? &nbsp;S &nbsp; &nbsp;12:47PM &nbsp; 0:06.15 nginx: worker process (nginx)<br>
myhost 89911 &nbsp;0.0 &nbsp;0.0 12500 &nbsp;1508 &nbsp;?? &nbsp;S &nbsp; &nbsp;12:47PM &nbsp; 0:08.07 nginx: worker process (nginx)<br>
myhost 89912 &nbsp;0.0 &nbsp;0.0 12500 &nbsp;1508 &nbsp;?? &nbsp;S &nbsp; &nbsp;12:47PM &nbsp; 0:08.19 nginx: worker process (nginx)<br>
myhost 94547 &nbsp;0.0 &nbsp;0.0 &nbsp;1592 &nbsp; 836 &nbsp;p5 &nbsp;S+ &nbsp; &nbsp;1:13PM &nbsp; 0:00.00 grep nginx<br>
[myhost@web48 ~]$<br>
<br>
92.113.238.129 - данный IP не только успешно соединяется с nginx (не смотря на &quot;deny&quot;), но и делает это параллельно бесконечное множество раз<br>
<br>
(не смотря на limit_zone/limit_conn). Скажите пожалуйста, что я делаю не так? Почему nginx игнорирует соответствующие директивы в конфигах?<br>
<br>
Заранее, спасибо!<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>С уважением, Борис Долгов.<br>icq 77556665<br>e-mail <a href="mailto:boris@dolgov.name">boris@dolgov.name</a><br>