[Httpd] GET, POST Method 허용
ISMS 인증 혹은 ISO-27001 등 보안 인증 심사를 준비하다보면 몇 가지 웹 요청에 대한 요구사항들이 생긴다.
오늘은 그 중에서도 웹 요청 HTTP Method 중 사실상 허용되는 GET, POST 만을 허용할 수 있도록
웹 서버 설정을 어떻게 해야하는지에 대해 알아볼까한다.
사실 HTTP Method 는 그 역할에 따라 종류가 꽤 많은데
보안 취약점으로 사실상 GET, POST 정도만 허용 하는 추세다.
(웹 요청의 헤더만을 확인하는 HEAD 요청도 차단을 요구하는 고객사도 있다.)
(또한, PUT, DELETE 등 차단을 안 했을 경우 고려해야될 변수가 많은 Method 들은 맘 편하게 차단해 버리자 주의인 것 같다.)
요구사항
- 웹서버에서 HTTP Method 중 GET, POST Method 만을 허용하도록 한다. (Httpd-2.4.41 기준)
웹 서버로는 Apache Httpd 를 활용하고 있으므로 Httpd 에서 어떻게 처리할 수 있는지 확인해보자!
기본적으로 Httpd 에서는 원하는 Method 만을 허용할 수 있도록 Directive <LimitExcept> 를 제공한다.
(https://httpd.apache.org/docs/2.4/mod/core.html#limitexcept)
말인 즉, "<LimitExcept> 에 등록된 Method 를 제외하고 웹 요청 접근을 차단한다" 이다.
해당 지시자를 적용할 수 있는 부분은 Context: directory, .htaccess 인데 사실 더 자세히 보면
directory: <Directory>, <Location>, <Files>, <If>, <Proxy> 지시자 내부에서 활용할 수 있다는 것이다.
그렇게 아래와 같은 형태로 설정할 수 있다.
Require all granted
## 설정 후 method 별 접근 테스트
## <Limit> 지시자 확인 및 차단 method 범위 확인
## HEAD 는 WAS 레벨에서 차단하자!
> 보통 location 활용, rewriterule 활용하는 곳도 있는데, symbolic 설정 해제 되는 것 같다. (링크 관련 보안 취약점 제시)
> rewrite rule 활용시 모든 요청에 대해서 해당 rule 을 활용하므로 깔끔하지 못한 것 같다.