HTTP 규약에 따라 웹서버들은 GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE의 7개 메소드를 제공합니다.
요즘은 이러한 메소드들은 보안 취약점이 생길 수 있으므로 GET과 POST를 제외한 나머지 메소드들을 비활성화합니다. Tomcat에서 GET과 POST 를 제외한 메소드들을 비활성화 하는 방법을 알아보겠습니다.
web.xml에 <security-constraint> 항목을 추가 합니다. url-pattern 이 /* 이므로 모든 요청에 대해 아래에 나열에 메소드들을 비활성화 합니다.
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
실제로 이러한 메소드들이 동작을 하는지 알아보는 방법으로는 명령창에서 telnet 명령으로 직접 호출해보는 방법이 있습니다.
- 명령창에서 C:\>telnet localhost 8080 을 입력합니다.
- 화면에 아무것도 보이지 않습니다. 이 상태에서 TRACE / HTTP/1.0 을 입력하고, 엔터키를 두 번 누릅니다. 입력한 내용도 보이지 않습니다. 실제로 Windows의 telnet은 자국반향(local echo)를 키는 방법이 있지만 글자가 겹쳐보여서 안보이지만 그냥 사용하는게 더 편한것 같습니다.
Tomcat 5 인가 부터는 TRACE 메소드가 기본적으로 비활성화 되었던것 같습니다. 혹시나 활성화 할 필요가 있다면 server.xml 파일의 <Connector> 에서 allowTrace="true"로 설정합니다. 이 값이 없거나 "false" 이면 비활성화입니다.
<Connector URIEncoding="UTF-8"
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
allowTrace="true" />
Tomcat 은 위의 GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE의 7가지 메소드외에 존재하지 않는 HTTP Method 를 보내면 GET 방식으로 처리해 버리는것 같습니다.
웹서버 마다 HTTP METHOD를 제한하는 방법은 다를 수 있습니다. Apache 웹서버의 경우는 mod_rewrite 모듈을 사용해서 제한합니다.
'프로그래밍 > 네트워크, 보안' 카테고리의 다른 글
와이파이(WiFi) 거리 연장하기(ipTime Extender-N3) (2) | 2018.04.19 |
---|---|
유선 공유기에 무선 공유기 추가하기 (14) | 2018.04.18 |
리스크웨어(Riskware)가 무엇인가? (0) | 2018.04.10 |
칼리 리눅스 설치 - VirtualBox에 설치하기 및 한글 입력 (4) | 2018.04.03 |
Burp suite 사용하기 - Repeater 사용 및 매개변수 조작 실습 (4) | 2018.04.01 |