본문 바로가기

WebServer/apache

HTTP Method 제한하기

기존에 HTTP Method를 제한 걸어놨었지만, PUT, DELETE 2개만 걸면 될거라 생각하고 작업했더니 TRACE, OPTIONS도 제한하라고 한다. 간만에 다시 작업하면서 정리중...

<Directory />

<Limit PUT DELETE TRACE OPTIONS >

Order allow,deny

deny from all

</Limit>

</Directory>


Limit 태그 선언 안에 PUT DELETE TRACE OPTIONS 라고 적혀있는데, 여기에 Method명을 적으면 된다. 태그 안에 정의된 내용은 권한 설정이다.

TRACE는 Limit에서 정의할 수 없게 되었다. 전에는 오류 메시지가 없었는데... 다시 해보니 오류 메시지가 나온다.


추가로 다른 방법도 있다. 

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_METHOD} ^TRACE

RewriteRule .* – [F]

</IfModule>


이 방법은 사용해본적이 없어서 모르겠지만, 검색에서 눈에 자주 띄는 것으로 보아 가능해보인다. 아래처럼 적용해보자

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %{REQUEST_METHOD} !^(GET|POST)

    RewriteRule .* - [R=405,L] 

</IfModule>


모듈을 이용한 방법이라 모듈이 켜지는지도 확인이 필요하다. GET, POST를 제외한 Method는 405 에러로 취급한다.

참고: http://tyboss.tistory.com/189


* 추가 *

<IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond %{REQUEST_METHOD} ^TRACE

    RewriteRule .* = [F]

</IfModule>


이렇게 해서 TRACE 가 제한됐다고 연락받았다. 버전에 따라 다르다고 하니 잘 사용해보자. 모듈을 사용하는 방법은 해당 모듈이 설치되어 있는지 먼저 꼭 확인해보자. 경로는 경우에 따라 다르지만 모듈명은 다음과 같다. 예를 들면

LoadModule rewrite_module livexec/mod_rewrite.so


이렇게 된다. 모듈 먼저 확인하자.


*추가*

또 다른 메서드 이슈로 인해 설정을 바꿔야하는 일이 생겼다. 그런데 일부 서버에서는 처리가 안됬다는 연락을 받아서 고민하다가 지난번에 예외로 두었던 설정을 해보았다.

   RewriteCond %{REQUEST_METHOD} !=GET

    RewriteCond %{REQUEST_METHOD} !=POST

    RewriteRule (.*) - [F]


왜 예외로 두었냐면, 오류가 났는데 왜 오류가 났는지 이해를 못했기 때문이다. 구글링으로 검색한 내용이기도 했기에 신용했는데... 알고보니 긁어서 붙여넣기한 부분에 씌어쓰기 오류가 있었다. !=GET 이부분인데, 앞에 %{REQUEST_METHOD}와 !=는 띄워야하고 !=와 GET은 붙여야한다. 구글링에서 나왔던 것은 != GET 이렇게 띄어쓰기가 되어있었다. 이번에도 마찬가지로 띄어쓰기가 되어있어 오류가 나길래 고민하다 붙였더니 되더라...

뭔가 그 많은 블로그 중에 띄어쓰기 안된 블로그만 골라 들어갈 확률도 높지 않을텐데... 


아무튼 일딴 간단하게 curl로 테스트는 정상이다. 이제 다시 보안 검증만 받으면 되겠다...  이번에는 문제가 없어야 할텐데...

'WebServer > apache' 카테고리의 다른 글

cURL을 이용하여 apache 해더 정보보기  (0) 2015.10.12
CentOS 6.5에 apache 2.4.16 설치  (0) 2015.09.22
apache make install할 때, /srclib/apr-util 오류  (0) 2011.10.20
Linux 아파치 설정  (0) 2011.08.03
Linux 아파치 설치  (0) 2011.08.03