워드프레스 xmlrpc.php 공격 차단하기


워드프레스는 백악관사이트나 대기업 홈페이지나 신문사 사이트, 쇼핑몰들도 사용하는 세계에서 가장 많이 사용하는 CMS 솔루션이다. 소스코드가 공개되어 있고 개방형 구조라 테마나 플러그인 무수히 많고 시장 또한 형성돼있다.   동시에  많은 공격을 당하기도 한다.

오늘 워드프레스 보안 플러그인이 너무 많은 로그인 시도를 막았다.   워드프레스앱과 JetPack를 사용하려면 xml rpc 를 사용해야 하는데,  오늘 xml rpc 를 막으면서 정리해보았다.

 

 

(이미지 출처)

 

 

어드민 로그인 해킹 시도해 차단

오늘 아래와 같은 메일을 받았다. 틀린 id 로 너무 많은 로그인 시도를 해서 막았다는 거다.

 

A lockdown event has occurred due to too many failed login attempts or invalid username:
Username: ****
IP Address: 3.26.0.19

IP Range: 3.26.0.*

Log into your site’s WordPress administration panel to see the duration of the lockout or to unlock the user.

 

All In One WP Security 워드프레스 플러그인으로 로그인 시도 등 여러가지 보안 옵션을 설정해놨는데 애가 보낸 거였다.

 

워드프레스 관리자 페이지의 로그인 페이지 URL은 정해져있다.  그리고 보통 워드프레스를 설치할때 admin 이라는 이름으로 하기 때문에 wp-admin 로 접속해 admin 아이디로 비밀번호를 바꿔가며 관리자 계정을 접속하려는 시도를 한다.

나는 관리자계정 아이디를 다른 것으로 했고,  플러그인으로 관리자 로그인 페이지도 변경해 놓았다. 그래서 로그인을 할 수 없을 텐데 왜 이렇게 됐을까 알아보았다.

 

XML RPC 핑백 공격

 

아파치 access log 를 보니 접속 차단한 ip 가 xmlrpc.php 를 계속 호출하고 있었다.

 

3.26.0.19 – – [22/Jun/2021:05:32:16 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:17 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:17 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:18 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:18 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:18 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:19 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:19 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443
3.26.0.19 – – [22/Jun/2021:05:32:20 +0000] “POST /xmlrpc.php HTTP/1.1” 200 443

 

트랙백을 하거나 원격으로 접속해서 글을 쓸때 이게 호출된다.   찾아보니 내 서버를 경유에 다른 서버를 공격하는데데 사용된다고 한다. 내 블로그에서 다른 블로그로 핑백 트래픽을 유발한다는 거다.

 

플러그인 설명 설명을 보니 xml rpc 로 DoS 공격 뿐만 아니라 네트우크 포트를 스캔한다고 한다. 이걸 막으면 트래픽도 줄일 수 있다.

 

이 설정은 워드 프레스의 XML-RPC 기능에 대한 책임이 있는 워드 프레스 xmlrpc.php 파일에 대한 액세스를 비활성화하려면 .htaccess에 지시문을 추가합니다.

해커는 다음과 같은 여러 가지 방법으로 워드 프레스 XML-RPC API의 다양한 취약점을 악용 할 수 있습니다.

1) 서비스 거부(DoS) 공격

2) 해킹 내부 라우터.

3) 다양한 호스트로부터 정보를 얻기 위해 내부 네트워크에서 포트를 스캔합니다.

보안 보호 이점 외에도 이 기능은 특히 사이트에 현재 설치시 XML-RPC API에 영향을 미치는 원치 않는 트래픽이 많은 경우 서버의 부하를 줄이는 데 도움이 될 수 있습니다.

참고: 현재 WordPress 설치에서 XML-RPC 기능을 사용하지 않는 경우에만 이 기능을 사용하도록 설정해야 합니다.

이 기능을 사용하지 않도록 두고 pingback 보호를 원하지만 여전히 XMLRPC가 필요한 경우 아래 기능을 사용합니다.

 

워드프레스의 xmlrpc.php 용도

 

트랙백과 핑백

웹 2.0 이 한창이던 2005년 즈음에는 블로그가 활성화되기 시작했고 다른 블로그의 글에 트랙백을 걸어서 글을 쓰기도 했었다.

요즘은 이런걸  쓰지 않으니 막아도 될 것 같다.

 

 

워드프레스 앱으로 내 블로그 사용

2005년 즈음에는 윈도우나 맥의 블로긴 앱으로 원격 포스팅이 유행할때가 있었다. 별도 블로깅 앱이 아니더라도 워드프레스앱으로 내 사이트를 연결해서 글을 쓸 수 있고 덧글  알림도 받을 수 있다.

워드프레스 앱으로 가끔 초안을 작성할 때도 있어서 xmlrpc 를 열어 놓았다. 자주 사용하지도 않으니 막아도 될 것 같다.

 

JetPack 플러그인 사용

워드프레스를 만든 회사가 만든 프를러그인으로 보안 기능도 있고, 이미지 cdn기능, 통계 기능등 여러 기능들이 있다.  JetPack 플러그인을 사용하려면 xml-rpc 가 활성되어 있어야한다.

사용 통계는 구글 어낼리틱스를 쓰고 덧글 어뷰징 막는 것은 워드프레스에서 만든 플러그인을 쓰고 있다.  딱 하나 서버접속이 안됐을때 이 플러그인이 이메일로 보내주는 기능을 쓴다.

핑백공격 받는 거 보다 귀찮지만 가끔 들어가서 사이트 접속되는지 수동으로 확인해야겠다.

 

 

xmlrpc.php 비활성화시키기

이걸 비활성화 시키는 옵션은 워드프레스 관리자 기능이나 wp-config.php 에 없다.

xmlrpc.php 파일을 지우면 될 것 같은데 찾아보니 워드프레스를 업데이트 하면 다시 생긴다. 이건 방법이 아니다.

찾아보니 다음의 방법이 있다.

 

Disable XML-RPC 플러그인

워드프레스 답게 이것도 플러그인이 있다. xml-rpc 를 비활성화시켜주는 플러그인이다.  가장 간단한 방법이다.

 

.htaccess 파일 변경

워드프레스 서버의 .htaccess 파일을 접근할 수 있다면 다음 내용을 추가한다.

 

# BEGIN protect xmlrpc.php
<files xmlrpc.php>
order allow,deny
deny from all
</files>
# END protect xmlrpc.php

 

웹서버 conf 설정

아파치 서버의 httpd.conf 에접근할 수 있다면 아래 내용을 추가하면된다.

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

 

nginx 을 사용하면 이 글을 참고하면 된다.

 

 

테마의 function.php 에 필터 추가

차일드 테마의 function.php 에 다음 코드를 추가한다.

add_filter('xmlrpc_enabled', false);

 

이런게 있으니  wp-config.php 에 설정할 수 있게 해주면 좋겠다.

 

All In One WP Security 워드프레스 플러그인

지금까지 방법은 xml-rpc 를 비활성화하는 방법이다. 그런데 이 플러그인의 방화벽 기능에는 다 막을 수도 있고, xml rpc 중에서 핑백만 막을 수 있다.

워드프레스 앱이나 JetPack 을 사용할 수 있게 해주는 것 같다.

아래 그림에서 XMLRPC에서 Pingback 기능 비활성화를 시키면 워드프레스 앱과 Jetpack를 사용할 수 있다고 한다.

 

 

참고: Jetpack 또는 워드프레스 iOS 또는 기타 앱을 사용하는 경우 이 기능을 사용하도록 설정하지만 “XMLRPC에 대한 완전히 차단” 확인란을 선택하지 않은 상태로 두어야 합니다.

이 기능은 여전히 사이트에서 XMLRPC 기능을 허용하지만 pingback 메서드를 비활성화합니다.

이 기능은 “X-Pingback” 헤더가 있는 경우에도 제거합니다.

 

 

가장 쉽게하는 방법은 플러그인으로 막는 것이다.  나는 플러그인을 사용하지 않고 일단 .htaccess 로 막았다.  .htaccess 를 안쓰려고해서 나중에는 웹서버 conf 나 차일드 테마의 function.php 로 막을 생각이다.

 







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



추천 글



















플랭크스타: 플랭크 타이머

목표 시간, 세트 등 다양한 방식을 지원하는 플랭크 타이머, 음성 안내, 일별/월별/연도별 운동 기록 관리












Add a Comment

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

































채널추가 버튼을 누르면 카카오톡 뷰에서 볼 수 있습니다.