xmlrpc.php 차단으로 워드프레스 보안 강화하기: 지금은 삭제보다 접근 차단이 중요한 이유

워드프레스를 운영하다 보면 xmlrpc.php를 노리는 공격이 끊이지 않는다는 사실을 로그에서 확인하게 됩니다. 많은 운영자가 이 파일을 삭제하면 해결될 것이라고 생각하지만, 실제로는 그렇지 않습니다. 워드프레스의 핵심(Core) 파일인 만큼 업데이트 과정에서 다시 생성되기 때문입니다.

현재 대부분의 워드프레스 사이트에서는 xmlrpc.php를 사용할 일이 거의 없습니다. 그렇다면 가장 현실적인 대응은 삭제가 아니라 웹 서버에서 접근 자체를 차단하는 것입니다.

이 글에서는 xmlrpc.php가 원래 어떤 역할을 했는지, 왜 지금은 대부분의 사이트에서 불필요해졌는지, 그리고 .htaccess를 이용해 안전하게 차단하는 방법까지 자세히 살펴보겠습니다.


xmlrpc.php란 무엇인가?

xmlrpc.php는 워드프레스에서 XML-RPC(XML Remote Procedure Call) 프로토콜을 처리하는 핵심 파일입니다. 쉽게 말하면 외부 프로그램이 인터넷을 통해 워드프레스와 통신할 수 있도록 만들어진 인터페이스입니다.

초기 워드프레스에서는 상당히 중요한 역할을 담당했습니다.

대표적인 활용 사례는 다음과 같습니다.

  • 워드프레스 모바일 앱에서 글 작성 및 관리
  • 데스크톱 블로그 편집 프로그램과의 연동
  • 외부 애플리케이션과 데이터 교환
  • 예약 발행이나 대량 작업을 수행하는 자동화 스크립트

당시에는 REST API가 존재하지 않았기 때문에 XML-RPC는 사실상 표준적인 원격 관리 방법이었습니다.


지금은 xmlrpc.php가 거의 필요하지 않은 이유

워드프레스 환경은 과거와 크게 달라졌습니다. XML-RPC가 담당하던 대부분의 역할은 더 안전하고 효율적인 기술로 대체되었습니다.

REST API가 사실상 표준이 되었다

워드프레스 4.7부터 REST API가 본격적으로 기본 기능으로 제공되면서 외부 시스템과의 연동 방식이 크게 바뀌었습니다.

REST API는 XML-RPC보다

  • 구현이 단순하고
  • 확장성이 뛰어나며
  • 현대적인 웹 서비스와 호환성이 높고
  • 보안 관리도 훨씬 수월합니다.

새로운 플러그인이나 서비스 대부분도 REST API를 중심으로 개발됩니다.

모바일 앱도 XML-RPC에 의존하지 않는다

예전에는 공식 워드프레스 모바일 앱이 XML-RPC를 사용했지만 현재는 REST API 기반으로 동작합니다.

즉, 일반적인 사이트 운영에서는 xmlrpc.php를 유지해야 할 이유가 크게 줄었습니다.

현대적인 개발 환경과도 맞지 않는다

최근에는 다음과 같은 기술이 일반적으로 사용됩니다.

  • REST API
  • GraphQL
  • 다양한 OAuth 기반 인증 방식

이러한 환경에서는 XML-RPC를 사용할 필요성이 거의 없습니다.


xmlrpc.php가 보안 위험으로 지적되는 이유

문제는 사용 빈도는 줄었지만 공격 대상은 여전히 많다는 점입니다.

특히 자동화된 봇은 워드프레스 사이트를 발견하면 가장 먼저 xmlrpc.php 접근 여부를 확인하는 경우가 많습니다.

브루트포스 로그인 공격

XML-RPC의 system.multicall 기능은 여러 요청을 한 번에 처리할 수 있습니다.

정상적인 기능이지만 공격자는 이를 이용해 수많은 로그인 시도를 하나의 요청으로 압축하여 수행할 수 있습니다.

결과적으로

  • 로그인 시도 횟수가 급격히 증가하고
  • 서버 자원이 소모되며
  • 계정 탈취 가능성이 높아질 수 있습니다.

DDoS 증폭 공격

과거에는 XML-RPC의 Pingback 기능이 대규모 DDoS 공격에 악용되는 사례가 많았습니다.

공격자는 수많은 워드프레스 사이트를 중계 서버처럼 활용하여 특정 서버에 대량의 요청을 보내는 방식으로 공격을 수행했습니다.

사이트가 직접 공격 대상이 아니더라도 공격에 악용될 가능성이 있다는 점에서 차단하는 것이 권장됩니다.

불필요한 정보 노출

원격 호출 기능이 열려 있으면 서비스 구조나 지원 기능 등 시스템 정보가 외부에 노출될 가능성도 존재합니다.

반드시 치명적인 취약점으로 이어지는 것은 아니지만, 공격자는 작은 정보들을 조합해 공격 경로를 찾는 경우가 많습니다.


xmlrpc.php를 삭제하면 해결될까?

많은 운영자가 처음 시도하는 방법이 파일 삭제입니다.

하지만 이는 근본적인 해결책이 아닙니다.

그 이유는 간단합니다.

xmlrpc.php는 워드프레스 핵심 파일이므로 업데이트를 수행하면 다시 생성됩니다.

즉,

  • 삭제
  • 업데이트
  • 파일 재생성

이라는 과정이 반복됩니다.

따라서 삭제보다는 웹 서버에서 접근 자체를 막는 방식이 훨씬 안정적입니다.


가장 효과적인 방법은 .htaccess에서 접근을 차단하는 것

Apache 웹 서버를 사용한다면 .htaccess에서 접근을 차단하는 것이 가장 간단하면서도 효과적인 방법입니다.

워드프레스 루트 디렉터리의 .htaccess 파일에 아래 내용을 추가합니다.

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
</Files>

위 예제에서는 특정 IP만 접근을 허용하고 나머지는 모두 차단합니다.


설정 방법

1. 워드프레스 루트 디렉터리에 접속

다음 중 하나를 이용하면 됩니다.

  • FTP 프로그램
  • SSH
  • 웹호스팅 파일 관리자

2. .htaccess 파일 열기

이미 존재하는 파일을 수정하면 됩니다.

보이지 않는다면 숨김 파일 표시 옵션을 활성화해야 하는 경우도 있습니다.

3. 차단 코드 추가

파일의 마지막 부분에 코드를 추가합니다.

기존 워드프레스 Rewrite 규칙은 그대로 두고 아래쪽에 추가하는 것이 관리하기 편합니다.

4. 허용할 IP 수정

예제에 있는

192.168.1.100

부분은 실제로 접근을 허용할 고정 IP로 변경해야 합니다.

관리용 서버나 내부 네트워크 등 신뢰할 수 있는 환경만 등록하는 것이 좋습니다.


완전히 접근을 막고 싶다면?

대부분의 개인 블로그나 일반 기업 홈페이지는 xmlrpc.php를 사용할 일이 없습니다.

이 경우에는 허용 IP를 지정하지 않고 모든 접근을 차단해도 됩니다.

즉, Allow from 항목을 제거하거나 주석 처리하면 모든 외부 접근이 차단됩니다.

다만 운영 중인 플러그인이나 외부 서비스가 XML-RPC를 사용하는지 먼저 확인하는 것이 좋습니다. 오래된 자동화 도구나 레거시 연동 환경에서는 여전히 XML-RPC가 필요한 경우도 있기 때문입니다.


차단 전에 확인해야 할 사항

xmlrpc.php를 막아도 대부분의 최신 워드프레스 사이트에는 영향이 없지만, 다음과 같은 환경이라면 사전 확인이 필요합니다.

확인 항목확인 이유
오래된 모바일 앱 사용일부 구버전 앱은 XML-RPC를 사용할 수 있습니다.
레거시 자동화 프로그램오래된 게시 도구나 스크립트가 XML-RPC에 의존할 수 있습니다.
외부 연동 시스템오래전에 구축된 연동 기능은 REST API로 전환되지 않았을 가능성이 있습니다.

특별한 이유가 없다면 대부분의 최신 사이트는 차단 후에도 정상적으로 운영됩니다.


워드프레스 보안은 ‘불필요한 기능을 줄이는 것’에서 시작된다

워드프레스 보안은 복잡한 방화벽 설정이나 보안 플러그인만으로 완성되지 않습니다. 실제 운영에서는 현재 사용하지 않는 기능을 외부에 노출하지 않는 것이 가장 효과적인 보안 전략 중 하나입니다.

xmlrpc.php는 과거에는 중요한 역할을 수행했지만, 오늘날 대부분의 사이트에서는 REST API가 그 역할을 대신하고 있습니다. 반면 공격자는 여전히 xmlrpc.php를 주요 공격 대상으로 활용하고 있습니다.

삭제는 일시적인 조치에 불과하지만, .htaccess를 이용한 접근 차단은 업데이트 이후에도 관리하기 쉽고 서버 차원에서 공격을 차단할 수 있다는 장점이 있습니다.

만약 XML-RPC를 사용하는 특별한 서비스가 없다면, 접근을 제한하거나 완전히 차단하는 것만으로도 브루트포스 로그인 공격과 XML-RPC 기반의 악용 시도를 줄이는 데 도움이 됩니다. 워드프레스 보안을 강화하려는 운영자라면 가장 먼저 점검해 볼 만한 설정 가운데 하나입니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다