워드프레스 로그인 시도 공격에 xmlrpc.php 차단하는 방법
[워드프레스] 쏟아지는 Brute Force 공격, XML-RPC 차단으로 방어하기
시간당 2천만 회? 미쳐버린 공격 횟수
무슨 일인지 최근 워드프레스 사이트를 향한 공격이 폭발적으로 늘었다. 로그를 확인해 보니 시간당 약 2천만 회 정도의 네트워크 공격이 들어오고 있다.

주로 로그인 시도와 xmlrpc.php를 이용한 접속 시도다. 전형적인 무차별 대입(Brute Force) 방식답게, 아무 비밀번호나 마구잡이로 대입해 보며 뚫리기를 기도하는 형태다. 보안 플러그인이 일정 횟수 이상 틀리면 IP를 차단하고는 있지만, 물량 공세가 너무 심하다.
주범은 xmlrpc.php
로그인 시도 로그를 분석해 보니 공격 패턴은 크게 두 가지로 나뉜다.
-
wp-login.php(일반 로그인 페이지): 50% -
xmlrpc.php(원격 접속): 50%
xmlrpc.php란? XML 문서를 통해 원격(Remote Procedure Call)으로 워드프레스에 접속하는 기능이다. 보통 워드프레스 에디터가 아닌 외부 프로그램(Open Live Writer 등)이나 모바일 앱에서 글을 작성하고 발행할 때 사용된다.
하지만 나는 원격으로 글을 발행하지 않는다. 해커들에게는 이 기능이 ‘한 번의 요청으로 수백 개의 비밀번호를 대입해 볼 수 있는’ 아주 좋은 먹잇감일 뿐이다. 따라서 굳이 열어둘 필요가 없어 차단하기로 했다.
실패한 시도: .htaccess 수정
가장 먼저 시도한 방법은 서버 설정 파일인 .htaccess를 수정하는 것이었다. 보통은 아래 코드를 입력하면 차단된다고 알려져 있다.
Apache
# BEGIN xmlrpc.php
<files xmlrpc.php>
Order allow,deny
Deny from all
</files>
# END xmlrpc.php
그런데 내 서버 환경 탓인지, 이 코드를 적용하면 사이트 접속 자체가 안 되는 현상이 발생했다. 원인을 분석하고 설정을 만지려니 갑자기 귀차니즘이 몰려왔다.
성공한 시도: Disable XML-RPC 플러그인
“역시 귀찮을 땐 플러그인이 최고다.”
플러그인 추가 페이지에서 **‘Disable XML-RPC’**를 검색했다. 가장 설치 수가 많고 평이 무난한 녀석으로 선택해서 설치했다.

결과는 대성공. 플러그인을 활성화한 이후로는 xmlrpc.php를 통한 로그인 시도가 0건으로 뚝 떨어졌다.
마치며
털어갈 것도 없는 개인 블로그에 왜 이리 관심을 갖는지 모르겠다. 일단 급한 불인 XML-RPC 공격은 껐으니, 다음 단계로 로그인 시도 3회 이상 실패 시 해당 IP를 영구 차단하도록 보안 수준을 좀 더 높여놔야겠다.