WordPress xmlrpc.php 취약점 차단 / XML-RPC 공격 차단

Last Updated on 12월 28, 2020 by 태랑(정현호)



XML-RPC



XML-RPC 란 XML을 사용하여 호출과 HTTP를 전송 메커니즘으로 WordPress 에서는 xmlrpc.php 을 통해 수행 됩니다.



xmlrpc.php의 XML-RPC는 RPC프로토콜로 워드프레스에선 HTTP 프로토콜을 이용해 XML 로 인코딩한 데이터를 교류하는 하는 역활을 하게 됩니다.


일반적으로는 WordPress 에 접속하지 않고 별도의 클라이언트 프로그램을 사용해 글을 새로작성 한다던가 Trackbacks 이나 핑백 작성에 사용 됩니다.


[https://piyolog.hatenadiary.jp/entry/20140313/1394673178]



xmlrpc.php 를 통한 BRUTE-FORCE 공격을 한다던지 아님 DDOS 형태로 다수의 요청하는 등으로 취약점이 있습니다




접속시 차단 정책이 있지 않으면 아래와 같이 브라우징 됩니다.








XML-RPC  보안조치



[먼저] 아래 소개 조치 사항의 순서는 우선적인 조치의 순위는 아닙니다.





1. xmlrpc.php 파일 접근 차단

xmlrpc.php 파일의 접근을 차단하는 방법은 몇가지가 존재 합니다.
먼저 apache의 경우 .htaccess 와 conf 파일을 통해 설정이 할 수 있습니다.


#  .htaccess
[root]# vi .htaccess

<files xmlrpc.php>
Order allow,deny
Deny from all
# ErrorDocument 403 /403.html
</files>

또는 

<Files xmlrpc.php>
Require all denied
# ErrorDocument 403 /403.html
</Files>

ErrorDocument 는 작성된 html 이 있다면 주석을 풀고 사용 하면 됩니다.




apache - conf
conf 파일을 사용하는 방법은 여러가지가 있을수 있으며 아래는 그중 한가지 입니다.

[root]# grep -i include httpd.conf | grep -v "#"
IncludeOptional conf.d/*.conf

위와 같이 conf.d 아래 conf  파일이 존재하면 자동적으로 Include 되게 됩니다.
conf.d에 conf 파일을 만들어서 전역적으로 여러 웹소스나 virtualhost 에 공통적으로 적용할 수도 있습니다.

[root]# conf.d
[root]# vi httpd-wordpress-security.conf

<Files xmlrpc.php>
Require all denied
#ErrorDocument 403 /403.html
</Files>


위와 같이 파일을 생성 후 reload 를 하게 되면 여러 virtualhost 등에서 같이 차단 정책을 적용받을 수 있습니다.
[root]# systemctl reload httpd





Nginx conf
nginx 에서는 /etc/nginx/conf.d  로 이동하여 각 server block 에 설정해줍니다.
location = /xmlrpc.php {
deny all;
error_page 403 = /403.html;
}

설정 후 nginx 를 reload  합니다.
$ sudo systemctl reload nginx



[참고] server block 에 대한 정보는 아래 포스팅을 참조하시면 됩니다.









2. xml-rpc 플러그인 사용

플러그인 검색에 Disable XML-RPC 로 검색하면 상당히 많은 플러그인이 검색 됩니다. 


대부분 유사한 기능과 정상동작을 하니 많은 사용수와 최근 업데이트 여부를 확인 해서 사용 하시면 됩니다.











3. 종합 보안 플러그인 사용

WordPress 에는 보안 관련된 여러가지 기능을 제공하는 플러그인이 아주 많이 있습니다.


Wordfence 이 가장 유명하고 여러가지 기능을 제공을 있습니다.


또한 지금 소개 드리는 Hide My WP Ghost – Security Plugin 도 종합 보안 플러그인으로 다양한 기능을 제공 하고 있습니다.





저는 2개 플러그인 을 모두 사용 하고 있습니다.



Hide My WP Ghost – Security Plugin 에는 명시적으로 Disable XML-RPC 기능을 제공하고 있어서 쉽게 차단 정책을 설정 할 수 있습니다.






설치 후 플러그인의 메뉴 중에 Tweaks 로 이동 합니다.









Disable XML-RPC 항목을 활성화 후 저장하면 바로 차단이 실행 됩니다.






WordPress 는 전세계적으로 가장 많이 사용 되는 CMS 인 만큼 보안적으로 여러 다양한 경로로 공격이 들어오게 됩니다.



그래서 최초 WordPress 설치 하여 구성할때 OS 나 Nginx/Apache 에서 부터 보안 관련된 설정을 챙겨야 하고, WordPress 도 보안 관련 플러그인을 어떤 플러그인 보다 먼저 설치 해두시는것이 중요 합니다.




관련된 다른 글

답글 남기기