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

Share

Last Updated on 2월 28, 2023 by Jade(정현호)

안녕하세요  
이번 글은 워드프레스에서 보안과 관련된 XML-RPC 에 대한 내용을 살펴보도록 하겠습니다.    

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 보안 조치

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

xmlrpc.php 파일 접근 차단

xmlrpc.php 파일의 접근을 차단하는 방법은 몇가지가 존재 합니다.

Apache의 경우 .htaccess 와 conf 파일을 통해 설정이 할 수 있습니다.

            

.htaccess 파일 설정 사용

Apache의 경우 .htaccess 와 conf 파일을 통해 설정이 할 수 있으며 환경(별도 서버 인지 또는 웹 호스팅인지 등) 이나 설정의 선택에 따라서 진행하시면 됩니다.


[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 에서의 설정

nginx 에서는 /etc/nginx/conf.d  로 이동하여 default.conf 나 각 서버나 사이트별 conf 파일내의 server block 에 설정해줍니다.

location = /xmlrpc.php {
deny all;
error_page 403 = /403.html;
}

추가로 아래의 내용도 보안상 추가 합니다.
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";


설정 완료 후에는 nginx 를 reload  합니다

$ sudo systemctl reload nginx


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

             

xml-rpm 관련 플러그인 사용

이전 단계에서는 xmlrpc.php 파일에 대한 접근 차단을 서버 단에서 설정 하였다면 이번 단계에서는 관련된 플러그인에 대해서 확인 해보려고 합니다.

워드프레스 어드민 페이지의 플러그인 검색에서 Disable XML-RPC 로 검색하면 상당히 많은 플러그인이 검색 됩니다. 


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


             

종합 보안 플러그인 사용

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 도 보안 관련 플러그인을 어떤 플러그인 보다 먼저 설치 해두시는것이 중요 합니다.


관련된 다른 글

 

 

 

 

           

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x