Web

불필요한 Method 사용 제한 조치 (Apache, Tomcat)

월루이 2023. 2. 16.

 

HTTP Method 중 GET, POST외에 Method는 금지해야합니다.

 

1. Apache

파일 : httpd.conf

(해당 파일은 default파일로, 서비스마다 파일 이름이 다를 수 있습니다.)

 

 

1-1. Directory 태그를 이용하여 제한

 

※해당 경로만 Method 제한이 걸려 Directory별로 모두 제한을 걸어줘야합니다.

<Directory />
	<LimitExcept GET POST>
		Order deny,allow
		Deny from all
	</LimitExcept>
</Directory>

 

 

1-2. URL pattern을 이용하여 제한

 

Location을 이용하면 모든 Directory에 Method 제한을 걸 수 있습니다.

<Location/>
	<LimitExcept GET POST>
		Order deny,allow
		Deny from all
	</LimitExcept>
</Location>

 

 

※ TRACE 메소드를 막고 싶은 경우 httpd.conf 파일 맨 밑에 다음과 같이 작성합니다.

TraceEnable Off

 

 


 

2. Apache Tomcat

1-1. 불필요한 Method 조치

 

파일 : web.xml

 <security-constraint>
 	<display-name>Restricted methods</display-name>
    <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>TRACE</http-method>
            <http-method>HEAD</http-method>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

 

1-2. TRACE Method 조치

 

파일 : server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" allowTrace="true" />

 

allowTrace="true"로 할 경우, TRACE 추적을 허용한 다음 web.xml에서 trace method를 막아줍니다.

 

 만약 web.xml에서 TRACE Method를 막아주지 못한다면, false로 지정해주어야 합니다.

=> 이 경우에도 계속 true로 지정하면 그저 TRACE 추적만 허용하게 됩니다 !

 

 


 

 

허용되어있는 Method 확인 방법

curl -v -X OPTIONS http://localhost

 

 


출처

 

https://darksharavim.tistory.com/678

 

아파치 메소드(method) 제한 및 확인

메소드 확인방법 $ curl -v -X OPTIONS http://localhost httpd.conf 설정 사이에 설정 해당경로만 메소드 제한걸리는 단점 하위폴더는 안됨! 아래처럼 으로 url pattern으로 차단해야함 Order deny,allow Deny from all

darksharavim.tistory.com

 

https://junjunrecord.tistory.com/97

 

Tomcat SSL 적용 + HTTP METHODS제한

이번에 사이트에 톰캣 ssl 적용, http methods 제한을 통한 보안 적용을 하다가 문제가 발생했다. 첫번째로, SSL 적용. 필요한 것. 도메인이름.crt 도메인이름.ca-bundle (or chain1.crt chain2.crt root.crt ...) privat

junjunrecord.tistory.com

댓글