http_user_agent равен -

Vasiliy Tolstov v.tolstov at selfip.ru
Tue May 26 14:35:05 MSD 2009


On Tue, 2009-05-26 at 13:54 +0400, Maxim Dounin wrote:
> Hello!
> 
> On Tue, May 26, 2009 at 01:09:12PM +0400, Vasiliy Tolstov wrote:
> 
> > Добрый день.
> > Есть небольшая, порядка 80 мегабит, DDoS атака. Для сбора айпишников
> > сделал следующую конструкцию:
> > 
> >    location / {
> >     if ($http_user_agent = '') {
> >       rewrite ^.*$ /empty last;
> >       break;
> >     }
> >     if ($http_user_agent = '-') {
> >       rewrite ^.*$ /tire last;
> >       break;
> >     }
> >     if ($server_protocol = 'HTTP/1.0') {
> >       rewrite ^.*$ /proto last;
> >       break;
> >     }
> >   }
> >     location /tire {
> >        error_log /var/log/nginx/ddos_tire;
> >        access_log /var/log/nginx/ddos_tire;
> >        return 503;
> >     }
> >     location /proto {
> >        error_log /var/log/nginx/ddos_proto;
> >        access_log /var/log/nginx/ddos_proto;
> >        return 503;
> >     }
> >     location /empty {
> >       error_log /var/log/nginx/ddos_empty;
> >       access_log /var/log/nginx/ddos_empty;
> >       return 503;
> >     }
> > 
> > В логах access_log все равно наблюдаю попытки получения доступа с -
> > вместо юзер агента.
> > 83.131.214.207 - - [26/May/2009:13:08:29 +0400] 408 "-" 0 "-" "-" 
> > Как это можно заблокировать? Где я ошибся?
> 
> Обработка запроса в соответствии с конфигурацией начинается 
> только после того как заголовки запроса получены.  Если они не 
> получены - обрабатывать нечего.
> 
> В данном случае клиент судя по всему просто открыл соединение и 
> ничего не передавал.  Соединение было закрыто nginx'ом по 
> таймауту.
> 
> Блокировать такое в nginx'е - смысла нет, т.к. реального запроса 
> всё равно нет, а соединение так и так открыто.  Можно разве что 
> таймаут уменьшить (но опять же для всех, ибо плохие ничем не 
> отличаются от хороших).  Наиболее общее решение - читать логи 
> скриптом и строить по ним правила для firewall'а.
> 
> Maxim Dounin
> 


Да, просто хотел расформировать все, отделить котлеты от мух, чтобы как
можно меньше затронуть нормальных пользователей. В данном случае просто
у меня нет уверенности, что это бот, а не человек, так как ввиду каких
либо тормозов может произойти ситуация, когда клиент отвалился и не
передал ничего..
Или такого быть не может?

-- 
Vasiliy Tolstov <v.tolstov at selfip.ru>
Selfip.Ru


More information about the nginx-ru mailing list