Tip & Tech/Linux

해킹방지 - 특정 폴더에서 PHP 실행방지

변기환 2012. 6. 19. 10:43


보안 점검차 Apache 로그 파일을 살펴보니 특정 IP가 계정 디렉토리의 PHP파일을 호출 하느라 도배를 하고 있다.


게시판의 첨부파일 기능을 이용하여 PHP 파일을 서버에 업로드 한 것 같다. 웹브라우저를 통해 PHP, HTML 등 파일을 업로드 하는걸 막아놨는데, 어딘가 아직 구멍이 있는 모양이다.


modsecurity가 설치되어 있어 해당 PHP 파일을 호출해 봤자, 406 승인금지 에러를 내기 때문에 실행할 수 없지만 찝찝하다.


그놈 참 파일이름도 거시기하게 붙였다.


중국 IP인가 해서 조회를 하니, 어라 우리나라 놈이네... 거참 같은 밥 먹는 동포끼리...


아래 소스는 Apache에서 특정 디렉토리에서 PHP 실행을 막는다고 하는데 실제로 적용하니 안된다.

<DirectoryMatch "^/.*/UPfile">
    AddType application/x-httpd-php3-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
    AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
    <Files ~ ".*\.ph$">
      Order allow,deny
      Deny from all
    </Files>
  </DirectoryMatch>


특정 디렉토리로 접근을 하지 못하게 하면 되지만,

<Directory /home/*/www/board/Db/*/UPfile>

Order allow,deny
Deny from all

</Directory>



특정 디렉토리에 접근을 막으면 해당 디렉토리의 모든 파일에 접근이 불가능하다. 이미지 파일까지도...


그래서 특정 확장자만 접근 금지를 시키면 어떻까 하고 적용해 봤지만, 임의로 파일 확장자를 생성하는 경우 또 문제가 될 수 있기 때문에...

<Directory /home/*/www/board/Db/*/UPfile>

<FilesMatch "\.(cgi|pl|php|htm|html)$">

Order allow,deny
Deny from all

</FilesMatch>

</Directory>


PHP 소스가 들어간 파일을 호출시 실행하지 않고 다운로드 되도록 했다.

<Directory /home/*/www/board/Db/*/UPfile>
    php_admin_flag engine off
</Directory>