본문 바로가기
Tip & Tech/Linux

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

by 변기환 2012. 6. 19.


보안 점검차 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>



댓글3

  • Linux 2012.06.21 23:52

    이런 방법이 있었군여. 이렇게 간단한걸 제가 관리하는 서버에 어떤 놈이 파일 업로드로 기능으로 .htaccess 파일을 업로드해서 txt 확장자를 php로 인식하게한 후 오만 짓을 다했더군요.ㅠㅠ 그놈이 싸질러놓고간거 수습한다고 엄청고생했습니다. 당장 적용해야겠습니다.
    감사합니다.
    답글

  • 아무개 2013.04.19 00:14

    너무 좋은 정보 감사합니다!
    답글