Nginx에서 실행되는 워드프레스의 보안 강화하기

워드프레스 보안

Nginx에서 실행되는 워드프레스를 사용하는 경우 몇 가지 코드를 추가하여 보안을 강화할 수 있습니다.

참고로 htaccess to nginx converter에서 .htaccess를 nginx에서 사용할 수 있도록 변환해주는 서비스를 제공하네요.

uploads 디렉터리에 PHP 스크립트 차단하기

uploads 디렉터리에는 그림, 동영상, 임시 파일 등 다양한 파일이 저장될 수 있습니다. 다음 Nginx location 지시문을 통해 uploads 폴더에서 PHP 스크립트의 실행을 차단할 수 있습니다.

location ~* /(?:uploads|files)/.*.php$ {
deny all;
}

민감한 파일 숨김

다음 location directive는 민감한 파일을 숨기는 역할을 합니다. 일부 사이트에서 아래 코드를 제시하지만 일부 시스템에서는 제대로 작동하지 않는 것 같습니다.

다음 코드를 넣었다가 사이트가 작동하지 않으면 삭제하시기 바랍니다.

location ~* .(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(.php)?|xtmpl)$|^(..*|Entries.*|Repository|Root|Tag|Template)$|.php_
{
return 444;
}

다른 CGI 스크립트 차단

Nginx 웹 서버를 실행하는 경우 워드프레스 사이트 렌더링을 위해 이미 FastCGI를 사용하고 있을 수 있습니다. 악의적인 공격자는 다른 언어의 CGI 스크립트로 바이러스를 실행하려고 시도할 수 있습니다.

location ~* .(pl|cgi|py|sh|lua)$ {
return 444;
}

WordPress 사이트의 일부 코어 파일/정보 노출 방지하기

워드프레스 폴더 내에 있는 일부 파일에는 해커가 버전과 같은 워드프레스 설치본에 대한 더 많은 정보를 얻는 데 악용될 수 있습니다.

다음 코드로 이러한 문제를 어느 정도 방지할 수 있을 것 같습니다.

location ~ /(\.|wp-config.php|readme.html|license.txt|wp-comments-post.php)
{ deny all;
}

XML-RPC 접근 차단

XML-RPC는 사용하지 않으면 비활성화하는 것이 좋습니다. 그냥 ftp를 통해 xmlrpc.php 파일을 삭제해도 되지만 워드프레스가 업데이트될 때마다 삭제하는 것도 번거롭습니다.

location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}

함수 파일에 다음 코드를 추가해도 된다고 하네요(참고).

add_filter('xmlrpc_enabled', '__return_false');

이미지 핫링킹(Image Hotlinking) 방지

"이미지 핫링크(이미지 링크 무단 참조) 방지"라는 글을 통해 이미지 핫링크에 대해 다룬 적이 있습니다.

Nginx에서 이미지 링크를 무단으로 참조하는 것을 방지하려면 다음 location 지시문을 추가하면 됩니다.

location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked mywebsite.com *.mywebsite.com;
if ($invalid_referer) {
return 403;
} }

참고 문서:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.