해킹방지 - 특정 폴더에서 PHP 실행방지
보안 점검차 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>