Nginx

Nginx 메소드 차단/허용 설정

uunnamed·2014년 3월 24일·조회 25,459
안녕하세요. unnamed 입니다.
 
간단히 HTTP 메소드 차단 설정에 관련해서 알아보았습니다.
 
 
먼저, Apache 2.2 에서 불필요한 메소드를 차단하기 위해서는 httpd.conf의 <Directory> 테그 안에 <LimitExcept></LimitExcept>   를 설정하는 방식을 주로 사용합니다. 
 
<Directory />

    Options FollowSymLinks

    AllowOverride None

    <LimitExcept GET POST HEAD>

    Order deny,allow

    Deny  from all

    </LimitExcept>

</Directory >
 
 
GET, POST, HEAD 이외의 메소드는 허용하지 못하도록 설정하였습니다. 
 
그런데 위의 설정으로도 유독 TRACE 메소드는 실제로 차단되지 않아 아래의 구문으로 설정을 해줘야 합니다. 
 
TraceEnable Off 
 
평소에 Apache를 사용하면서 조금 의문(?)을 가졌으나 그러려니 하며 넘어갔었던 부분입니다. 
 
 
 
 
이번에는 비슷한 방식으로 NginX 의 nginx.conf 에서 메소드 차단 설정을 해 보았습니다. 
 
server {
         location / {
                          if ($request_method !~ ^(GET|POST|HEAD)$ ) {
                           return 444;
                         }
               }
 
마찬가지로 GET, POST, HEAD 이외의 메소드는 허용하지 못하도록 설정하였고, 그 외의 메소드에 대해서는 
444 코드를 발생시키는 것으로 확인하.. 는 와중에 
 
TRACE 메소드에 대해서는 위의 설정과 무관하게 405 Method Not Allowed 가 나오는 것을 확인하였습니다. 
 
원인을 알아보니,  ngx_http_request.c 에서 아래의 내용을 찾을 수 있었습니다.
 
 if (r->method & NGX_HTTP_TRACE) {
             ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
                         "client sent TRACE method");
             ngx_http_finalize_request(r, NGX_HTTP_NOT_ALLOWED);
             return NGX_ERROR;
    }
 
NginX 에서는 nginx.conf 에서의 메소드 차단설정과는 무관하게 TRACE 메소드를 허용하지 않는 것이었습니다.
 
 
 
NginX 에서의 기본적인 메소드 차단설정을 알아보는 중에.. 반대로 TRACE 메소드의 필요시 허용은 어떻게 해야 하는지 더 궁금해졌습니다. 
 
감사합니다.

댓글 6

로그인 후 댓글을 남길 수 있습니다.

  • 맑· 2014년 3월 25일
    재미있는 내용 감사합니다. nginx 만드신분이 trace에 대한 확고한 신념이 있으신가 보네요.
  • unnamedunnamed· 2014년 3월 25일
    유독 TRACE 메소드만 NginX 소스부터 관련 설정이 있네요
  • 몽상가몽상가· 2014년 3월 25일
    혹시 아파치에서 당했던 부분이 트라우마가 되어서 돌아온건 아닐까요? 저도 언네임드님 말씀처럼 트레이스가 필요하면 어떡하지? 라는 걱정이 되네요~
  • 강철지그강철지그· 2014년 3월 26일
    제 Nginx 는 어떻게 되어 있나 확인을 하려고 (아직 위에서 말씀하신 설정은 안한 상태임) cmd 창에서 nginx 포트로 telnet 으로 다음을 입력하였더니 OPTIONS / HTTP/1.1 HOST: 192.168.0.1 다음과 같이 나옵니다. HTTP/1.1 405 Not Allowed Server: nginx/1.4.5 Date: Wed, 26 Mar 2014 02:24:00 GMT Content-Type: text/html Content-Length: 172 Connection: keep-alive 405 Not Allowed 405 Not Allowed nginx/1.4.5 어떻다는걸까요?
  • 강철지그강철지그· 2014년 3월 31일
    unnamed 님, 6 일전 제 질문 답 좀 부탁드립니다.
  • unnamedunnamed· 2014년 3월 31일
    jeeg 님 먼저 뒤늦은 댓글 죄송합니다.. ^^; 위의 댓글대로 저도 테스트를 해보았는데 405 에러가 떨어지네요. 어떠한 설정또는 의도로 Nginx 에서 메소드사 차단되어 있는지는 찾지 못하였습니다