본문 바로가기

리눅스

아파치(Apache) 웹 서버에서 TRACE 및 OPTIONS와 같은 불필요한 메서드를 제한하는 방법

728x90

아파치(Apache) 웹 서버에서 TRACE 및 OPTIONS와 같은 불필요한 메서드를 제한하는 방법

LimitExcept와 Limit는 Apache 웹 서버의 디렉티브로, 특정 HTTP 메서드에 대한 액세스 제어를 설정하는 데 사용됩니다.

 

  • LimitExcept 디렉티브

이 디렉티브는 특정 HTTP 메서드를 제외한 모든 메서드에 대한 액세스 제어를 설정합니다. 즉, LimitExcept 블록 내에서 정의된 제한은 해당 메서드를 사용하는 요청에만 적용되지 않습니다.

다음은 LimitExcept 디렉티브의 사용 예입니다.

<LimitExcept GET POST>
    # GET 및 POST 메서드에 대한 액세스 허용
    Require all granted
</LimitExcept>

위의 예제에서는 GET 및 POST 메서드를 사용하는 요청에 대해 액세스가 허용됩니다. 그 외의 모든 메서드에 대해서는 액세스가 거부됩니다.

 

  • Limit 디렉티브

이 디렉티브는 특정 HTTP 메서드에 대한 액세스 제어를 설정합니다. Limit 블록 내에서 정의된 제한은 해당 메서드를 사용하는 요청에만 적용됩니다.

다음은 Limit 디렉티브의 사용 예입니다.

<Limit PUT DELETE>
    # PUT 및 DELETE 메서드에 대한 액세스 제한
    Require valid-user
</Limit>

위의 예제에서는 PUT 및 DELETE 메서드를 사용하는 요청에 대해 액세스가 제한됩니다. 해당 메서드를 사용하는 클라이언트는 유효한 사용자로 인증되어야 합니다.

 

LimitExceptLimit 디렉티브는 Apache 웹 서버의 .htaccess 파일이나 가상 호스트(VirtualHost) 설정에서 사용할 수 있습니다. 이를 통해 특정 메서드에 대한 액세스 제어를 상세하게 구성할 수 있습니다.

 

<Directory> 또는 <Location> 디렉티브를 사용하여 메서드 제한을 설정합니다.

허용할 method 정의

<Directory /var/www/html>
    # TRACE 및 OPTIONS 메서드 제한
    <LimitExcept GET POST HEAD>
        Require all denied
    </LimitExcept>
</Directory>
  • /var/www/html 디렉토리 내의 모든 리소스에 대한 액세스를 거부하고 GET, POST 및 HEAD 메서드에는 액세스가 허용됩니다.
  • 이제 Apache 웹 서버는 TRACE 및 OPTIONS 메서드에 대한 액세스를 거부할 것입니다. 설정에 따라 해당 메서드로의 요청이 거부되며, 403 Forbidden 오류가 반환됩니다. 필요한 메서드(GET, POST, HEAD 등)에 대해서는 액세스가 허용됩니다.

제한(거부)할 method 정의

<Directory /var/www/html>
    # TRACE 및 OPTIONS 메서드 제한
    <Limit TRACE OPTIONS>
        Require all denied
    </Limit>

    # 405 에러 코드 반환 설정
    ErrorDocument 405 /error405.html
</Directory>
  • /var/www/html 디렉토리 내의 모든 리소스에 대해 TRACE 및 OPTIONS 메서드에 대한 액세스를 거부합니다.
  • 해당 메서드로의 요청이 거부되며, 405 오류가 반환됩니다.

아파치(Apache) 웹 서버에서 TRACE 메서드를 비활성화하는 방법

  • trace 메서드 비활성화 적용 전 cURL 테스트
curl -k -X TRACE http://127.0.0.1
$ curl -k -X TRACE http://127.0.0.1
TRACE / HTTP/1.1
Host: 127.0.0.1
User-Agent: curl/7.88.1
Accept: */*
  • 아파치 환경 설정(httpd.conf) 파일 편집
vim /usr/local/apache2/conf/httpd.conf
TraceEnable off
/usr/local/apache2/bin/httpd -k graceful
  • trace 메서드 비활성화 적용 후 cURL 테스트
curl -k -X TRACE http://127.0.0.1
$ curl -k -X TRACE http://127.0.0.1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method TRACE is not allowed for this URL.</p>
</body></html>

이제 Apache 웹 서버는 TRACE 메서드를 비활성화하고 요청 시 해당 메서드를 거부할 것입니다. TRACE 요청은 405 Method Not Allowed 오류 코드로 응답하게 됩니다.

 

728x90