ПРОЕКТЫ 


  АРХИВ 


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]

Проблема б локирован? ?я и распоз нования ме тода CONNECT, оши? ?ка ?client sent invalid request "CONNECT {address}:25"?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Проблема б локирован? ?я и распоз нования ме тода CONNECT, оши? ?ка ?client sent invalid request "CONNECT {address}:25"?
  • From: "Mrau Hu" <nginx-forum@xxxxxxxx>
  • Date: Mon, 19 Oct 2009 18:52:28 -0400

Здравствуйте.


Не так давно на сервер (Linux Debian) был установлен Nginx (версии 0.8.20), на 
время конфигурации он был настроен слушать порт 8080.

Через некоторое время в логах был замечен HTTP-метод CONNECT, на удаленный 
адрес и 25 порт.

После чего в конфиг была добавлена проверка на правильные методы запросов:

        ## Only allow GET, HEAD and POST request methods
        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
            return 444;
        }



Но проверка не сработала, и в логи были произведены записи:

access.log

94.100.178.70 - - "CONNECT 194.67.23.20:25 HTTP/1.0" 500 186 "-" "-" "-"


error.log

 29637#0: *5 client sent invalid request while reading client request line, 
client: 94.100.178.70, request: "CONNECT 194.67.23.20:25 HTTP/1.0"

 29637#0: *5 "^(GET|HEAD|POST)$" matches "GET", client: 94.100.178.70, request: 
"CONNECT 194.67.23.20:25 HTTP/1.0"
(строка повторяется еще 9 раз)

 29637#0: *5 rewrite or internal redirection cycle while internal redirect to 
"/error/40x.html", client: 94.100.178.70, request: "CONNECT 194.67.23.20:25 
HTTP/1.0"



Выдержка из конфига:


server {
        listen: 8080;

        ## Logs
        access_log  /var/log/nginx/access.log  main;
        error_log   /var/log/nginx/error.log  debug;

        ## Errors
        # client errors
        error_page  400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 
415 416 417   /error/40x.html;
        # server errors
        error_page  500 501 502 503 504 505 506 507    /error/50x.html;

        location  /error {
            internal;
        }

        ## Only allow GET, HEAD and POST request methods
        if ($request_method !~ ^(GET|HEAD|POST)$ ) {
            return 444;
        }

        ## Index names
        index     index.php  index.html  index.htm;

        ## Main site
        location  / {
            try_files     $uri  $uri/  =404;
        }
}



Вопросы:

1) Есть ли возможность отсеять HTTP-метод CONNECT на уровне Nginx?

2) Почему при проверке переменной $request_method CONNECT совпал с GET?

3) Возможно ли такое, что значение переменной $request_method было GET, а не 
CONNECT?

4) Каким образом вы бы отсеяли нездоровый метод?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,15092,15092#msg-15092




 




Copyright © Lexa Software, 1996-2009.