
우선 HTTP 메서드의 종류는 GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE 가 있다.
이 중, 보안 취약점이 생길 수 있어서 GET, POST를 제외한 나머지 메서드들은 비활성화하는데
Tomcat에서 비활성화하는 방법 2가지를 알아본다.
web.xml
우선 web.xml에서 비활성화하는 방법이다.
web.xml에 <security-constraint> 항목을 추가한다.
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
<url-pattern>을 /*로 함으로써 모든 요청에 대해서 OPTIONS, TRACE를 비활성화한다는 항목이다.
처음에 찾아볼 때 web.xml을 {tomcat경로}/conf/web.xml 에다가 적용을 해야 된다는 글이 많아서 conf아래에 있는 web.xml에 적용을 했었는데 전혀 적용이 되지 않았다.
그래서 웹 어플리케이션에 있는 web.xml에다가 적용하였더니 정상적으로 비활성화되었다.
둘 중 비활성화가 제대로 적용되는 곳에 다가 위 항목을 입력시키면 될 것 같음!
server.xml
다음은 {tomcat경로}/conf/server.xml을 수정하여 비활성화하는 방법인데 나는 해당방법이 적용되지 않았다.
Tomcat7? 부터는 TRACE 메서드가 기본적으로 비활성화된다고 들었는데 혹시 TRACE 메서드를 활성화해야 한다면 server.xml 파일의 에서 allowTrace="true"로 설정한다. 이 값이 없거나 "false" 이면 비활성화된다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" allowTrace="false" />
원래는 allowTrace가 없었으나 TRACE가 비활성화되지 않아서 추가하였지만 상황은 변하지 않았다.
간혹 true로 해야 비활성화된다는 글이 보여서 true로도 해봤지만 여전히 되지 않아서 위 내용은 직접 확인을 못하였다...
비활성화 확인법
telnet을 활용하여 메서드 비활성화를 확인할 수 있다.
우선 telnet은 windwos 기능사용에서 활성화를 시켜줘야 한다. (해당사항은 구글에 검색하면 간결하고 정확히 알려주시는 선생님들이 많습니다.)
활성화를 시켜줬다면 cmd창을 오픈한다 (window 검색에 cmd를 입력하거나 win+R 키를 눌러 cmd를 입력하여 켜줌)
cmd를 켰다면 cmd창에 telnet localhost 80을 입력한다.
그럼 위 이미지처럼 연결 대상 localhst... 이 나오고 잠시 기다리면 아무것도 적혀있지 않은 빈 화면이 나올 것이다.
정상이니 당황하지 말고 확인할 메서드 ex) TRACE / HTTP/1.0를 입력한다 띄어쓰기 주의!
그럼 위 이미지처럼 405가 뜨게 됨. 비활성화가 되었다는 것이다.
혹시 전부 다 그런 거 아니야?라는 생각을 가지실 분이 있을 수 있으니 GET이나 POST도 날려본다.
GET / HTTP/1.0으로 날린 결과로 정상 200이 나온다.
이상으로 Tomcat에서 HTTP 메서드를 비활성화하는 방법을 알아봤다.
비활성화 방법은 서버마다 다르다. Apache는 httpd.conf 파일을 수정해야 한다고 하는데
다른 서버의 방법은 기회가 되면 찾아봐야겠다.
태클은 환영!
'설정' 카테고리의 다른 글
[svn] 이클립스 svn 설치 시 Connector 오류 (0) | 2024.01.26 |
---|