서기록

2023-08-06 일요일 / seogilang

 xmlrpc.php는 웹 서비스에서 원격 프로시저를 호출하여 파일 작성, 편집, 삭제 등 원격 관리 작업을 수행하는 데 사용된다.

 하지만 해당 기능을 이용한 보안 취약점 공격이 자주 발생하다 보니 원격 관리가 필요 없다면 xmlrpc.php에 대한 접근은 차단하는 것이 좋다.

 

워드프레스 xmlrpc.php 접근 차단 하기

1. Nginx.

 Nginx의 설정 파일의 server 블록에 아래의 구문을 추가하면 된다.
 ([nginx.conf] 혹은 [sites-enabled/default] 등)

– 일반 구분

location = /xmlrpc.php {

deny all;

}

 

– 특정 ip 접속 허용

location = /xmlrpc.php {

allow xxx.xxx.xxx.xxx;

deny all;

}

xmlrpc.php 접근 차단 코드

 

2. 아파치.

 .htaccess 파일에 아래의 구문을 추가하면 된다.

– 일반 구분

Order deny,allow

Deny from all

 

– 특정 ip 접속 허용

Order deny,allow

Deny from all

Allow from xxx.xxx.xxx.xxx

 

3. functions.php

 웹 서버의 설정 파일을 변경할 수 없다면 워드프레스의 functions.php 파일에 아래의 코드를 추가하자.

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

 

4. 플러그인.

 웹 서버의 설정 파일, functions.php 모두 변경이 불가능하다면 플러그인으로 차단하는 방법도 있다.

 플러그인에서 xmlrpc.php을 검색해 보면 Disable XML-RPC 등과 같은 플러그인을 쉽게 찾을 수 있을 것이다.

 

그 외 내용

차단이 되면 403 페이지가 나타난다.

 xmlrpc.php를 정상적으로 차단했다면 해당 페이지에 접속했을때 403 페이지가 나타난다.

 혹시나 XML-RPC server accepts POST requests only라는 메시지가 있는 페이지가 나타난다면 정상적으로 차단된 것이 아니니 다시한번 확인해보자.

 

웹 서버에서 차단하는 것이 가장 좋다.

 가능하다면 웹 서버에서 차단하는 것이 가장 확실하며 그렇지 못한 경우 펑션이나 플러그인을 사용하는 것을 추천한다.

 

xmlrpc.php를 사용하는 플러그인도 있다.

이런 경우에는 모든 접속을 차단하기 보다는 플러그인을 사용하는 워드프레스의 ip는 접속이 가능하도록 설정해두는 방법도 있다.