아파치(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 메서드를 사용하는 요청에 대해 액세스가 제한됩니다. 해당 메서드를 사용하는 클라이언트는 유효한 사용자로 인증되어야 합니다.
LimitExcept 및 Limit 디렉티브는 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 오류 코드로 응답하게 됩니다.
'리눅스' 카테고리의 다른 글
리눅스에 콘솔 접근 또는 원격 접근 시 경고 메시지를 설정하는 방법 (0) | 2023.07.20 |
---|---|
Ansible fingerprint 접속 오류 (0) | 2023.07.16 |
dpkg 명령어 (0) | 2023.07.11 |
우분투에서 저장소를 Kakao Mirror 공식 사이트로 변경하는 방법 (0) | 2023.07.11 |
리눅스에서 기본 게이트웨이를 사용하는 로컬 IP 주소를 추출하는 명령어 (0) | 2023.07.10 |