PUT과 POST의 제한

2015.12.23 17:41

소울 조회 수:5906

■ 디렉토리 리스팅
웹 브라우저에서 사용자가 URL을 입력했을 경우, Apache 웹서버는 3가지 방법 응답한다. 정상적으로 웹 내용을 보여주든지, 디렉토리 리스트를 보여주든지, 에러 메시지를 보여준다.
원격의 공격자가 시스템에 대한 많은 정보를 획득할수록 보안 허점을 발견하기가 용이해 진다. 디렉토리 리스트를 보여주는 것 또한 불필요한 정보를 공격자에게 제공하여 공격에 이용될 수 있다. 백업 데이터, CGI 소스코드들, 필요에 의해 만들어놓은 심블릭 링크 등 서버 관리자가 실수로 지우지 않은 파일들이 공격자의 손에 들어갈 수 있다. DocumentRoot 디렉토리 내의 모든 파일들이 리스팅되는 것을 방지하기 위해서 Options 지시자에서 Indexes 옵션을 제거하여야 한다.

■ 심블릭 링크
몇몇 서버는 심블릭 링크를 이용해서 기존의 웹 문서 이외의 파일시스템에 접근 가능하도록 하고 있다. 이러한 방법은 편리할 수는 있지만 심각한 보안 문제를 야기시킬 수 있다. 가령 시스템 자체의 root 디렉토리(/ )를 링크 걸게 되면 웹서버 구동사용자 권한(nobody)으로 모든 파일시스템의 파일에 접근할 수 있게 된다. 즉,/etc/passwd와 같은 대단히 민감한 파일까지 누구나 열람가능하게 된다.
Options 지시자에서 심블릭 링크를 가능하게 하는 옵션인 FollowSymLinks를 제거함으로써 이를 막을 수 있다.


PUT과 POST의 제한
원격 사용자는 DocumentRoot 디렉토리 구조에 파일을 업로드 하거나 수정하는 행위가 제한되어야 한다. 물론 DocumentRoot의 파일/ 디렉토리 퍼미션을 사용해서도 웹을 통한 파일 업로드 및 수정을 막을 수는 있다. 하지만, 적절한 제한이 이루어지지 않을 경우 홈페이지가 변조되거나 웹 사이트가 침해당할 수 있으므로 <Limit>태그를 이용하여 각 디렉토리별로 HTTP Method의 사용여부를 통제할 수 있다. 파일 업로드 및 파일의 수정을 위해서 사용되는 HTTP Method는 PUT과 POST이다.
사용시 주석문 해재하고 적절히 수정한다.
#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>