Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

워드프레스 XML-RPC는 워드프레스 CMS에 내장된 다소 오래된 기능입니다. 워드프레스 사이트와 다른 웹 또는 모바일 기술 간의 통신을 표준화하는 수단으로 사용됩니다. 워드프레스 사용자라면 이 글을 통해 XML-RPC가 무엇인지, 그리고 사이트를 보호하기 위해 비활성화하는 것이 왜 좋은지 알아보세요.

XML-RPC의 작동 원리

워드프레스 웹사이트는 웹 환경에서 작동하도록 설계되어 있습니다. HTML, CSS, PHP 같은 핵심 웹 기술을 사용하며, 이 모든 파일은 호스팅 서버 내부의 폴더에 체계적으로 정리되어 저장됩니다.

방문자가 도메인 이름이나 그 하위 페이지를 클릭하면 해당 웹페이지로 이동합니다. 원하는 정보가 담긴 특정 폴더의 파일이 브라우저로 전송되고, 브라우저는 이 정보를 해석하여 화면에 표시합니다.

그런데 브라우저를 통하지 않고 웹사이트에 접근하고 싶다면 어떻게 해야 할까요? 예를 들어 별도의 관리용 소프트웨어나 모바일 앱으로 접속하고 싶은 경우라면요?

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

바로 이 문제를 해결해 주는 것이 워드프레스 XML-RPC입니다.

XML-RPC는 핵심 정보를 간단한 XML 파일로 감싸서 모바일 앱이나 원격 소프트웨어로 전송하는 API입니다. 모바일 앱은 전달받은 정보를 미리 설정된 자체 디자인에 맞춰 화면에 구현합니다. 이 경우 앱은 용량이 큰 웹페이지 파일을 다운로드할 필요 없이, 깔끔한 앱 인터페이스로 데이터에 접근할 수 있습니다.

편리해 보이지만 한 가지 큰 문제가 있습니다. XML-RPC를 통해 인증할 때마다 사용자 이름과 비밀번호를 매번 전송해야 한다는 점입니다. 이로 인해 해커의 공격에 매우 취약해집니다.

XML-RPC가 사이트를 취약하게 만드는 이유

XML-RPC는 최소 두 가지 방식으로 사이트를 공격에 노출시킵니다. 바로 무차별 대입 공격(brute force attack)로그인 정보 탈취입니다.

1. 무차별 대입 공격(Brute Force Attack)

공격자는 무차별 대입 공격을 통해 웹사이트를 장악하려 시도합니다.

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

무차별 대입 공격은 말그대로 추측 게임입니다. 공격자는 비밀번호가 맞힐 때까지 수없이 반복해서 추측을 시도합니다.

이러한 시도는 초당 수천 번씩 발생하므로, 짧은 시간 안에 수백만 개의 조합을 시도할 수 있습니다.

일반적인 워드프레스 사이트에서는 로그인 시도 횟수를 제한함으로써 무차별 대입 공격을 비교적 쉽게 차단할 수 있습니다. 하지만 XML-RPC의 문제는 로그인 시도 횟수 제한이 적용되지 않는다는 것입니다.

공격자는 관리자처럼 위장하여 서버를 속이고 정보를 요청하면서 계속해서 추측을 반복할 수 있습니다. 올바른 인증 정보가 없기 때문에 당장은 사이트에 접근하지 못하지만, 끝없이 시도를 거듭합니다.

시도 횟수에 제한이 없다면 결국 언젠가는 침입에 성공하게 됩니다. 또한 해커는 XML-RPC DDoS 공격(수많은 "핑백(pingback)" 요청을 XML-RPC로 전송해 서버를 과부하 상태로 만들고 다운시키는 공격)을 통해 사이트를 손쉽게 마비시킬 수도 있습니다.

2. 로그인 정보 가로채기 및 탈취

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

XML-RPC의 또 다른 약점은 비효율적인 인증 시스템입니다. 웹사이트에 접근 요청을 보낼 때마다 로그인 정보도 함께 전송해야 하므로, 사용자 이름과 비밀번호가 그대로 노출됩니다.

해커는 이 정보 패킷을 가로채기 위해 어딘가에 잠복하고 있을 수 있습니다. 일단 탈취에 성공하면 더 이상 번거로운 무차별 대입 공격을 할 필요가 없습니다. 훔친 유효한 인증 정보로 사이트에 그냥 들어가면 되기 때문입니다.

워드프레스에서 XML-RPC를 비활성화해야 할까?

워드프레스 3.5 버전부터 XML-RPC 코드가 많이 개선되어, 워드프레스 팀은 기본적으로 활성화해도 안전하다고 판단했습니다. 따라서 모바일 앱이나 원격 소프트웨어로 워드프레스 사이트를 관리하고 있다면 XML-RPC를 비활성화하지 않는 것이 좋습니다.

반면 서버 보안을 매우 중요하게 생각한다면, 해커가 사이트를 공격할 수 있는 경로 하나를 차단하는 셈이므로 비활성화하는 편이 유리합니다.

워드프레스에서 XML-RPC 비활성화하는 방법

XML-RPC는 워드프레스에서 기본적으로 활성화되어 있으며, 이를 비활성화하는 방법은 여러 가지가 있습니다.

참고: 인기 있는 Jetpack 플러그인을 사용 중이라면 XML-RPC를 비활성화할 수 없습니다. Jetpack이 서버와 통신하려면 XML-RPC가 필요하기 때문입니다. 또한 XML-RPC를 비활성화하기 전에 사용 중인 플러그인이나 테마가 XML-RPC에 의존하지 않는지 먼저 확인하세요.

functions.php 수정으로 XML-RPC 비활성화하기

1. 테마 폴더(보통 "wp-content/themes/" 경로)를 찾아 "functions.php" 파일을 엽니다.

2. 파일 맨 아래에 다음 코드를 추가합니다:

// XML-RPC 비활성화
add_filter( 'xmlrpc_enabled', '__return_false' );

"functions.php" 파일을 저장하면 워드프레스에서 XML-RPC 기능이 꺼집니다. 단, 이 방법은 XML-RPC 기능만 비활성화할 뿐 xmlrpc.php 파일 자체가 서버에 남아 있기 때문에 해커의 공격 시도까지 완전히 막지는 못합니다.

xmlrpc.php 파일 접근 차단하기

해커의 공격을 근본적으로 막는 가장 확실한 방법은 xmlrpc.php 파일에 대한 접근 자체를 차단하는 것입니다.

Apache 서버

워드프레스 사이트가 Apache 서버에서 운영 중이라면(워드프레스 설치 폴더에 ".htaccess" 파일이 있다면 Apache 서버일 가능성이 높습니다) 다음 단계를 따르세요.

1. cPanel에 로그인한 후 파일 관리자(File Manager)를 검색합니다.

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

2. 파일 관리자를 열고 "public_html" 폴더로 이동한 다음 ".htaccess" 파일을 찾습니다.

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

3. 파일을 마우스 오른쪽 버튼으로 클릭해 편집 모드로 엽니다.

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

4. 파일 맨 아래에 다음 코드를 붙여넣습니다:

# 이 도메인에 대한 모든 WordPress xmlrpc.php 요청 차단
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

워드프레스 XML-RPC 비활성화 방법 – 사이트 보안을 위한 완벽 가이드

5. 저장 후 종료합니다.

Nginx 서버

Nginx 서버를 사용한다면 서버 설정 파일에 다음 코드를 추가합니다:

# nginx xmlrpc.php 요청 차단
location /xmlrpc.php {
    deny all;
}

이제 사이트가 XML-RPC를 통한 공격으로부터 안전해졌습니다.

마치며

무차별 대입 공격과 데이터 탈취는 앞으로도 사이트 운영자에게 끊임없는 위협이 될 것입니다. 사이트를 안전하게 지키는 것은 운영자의 책임이며, XML-RPC를 비활성화하는 것은 그중에서도 효과적인 방법 하나입니다. 위 가이드를 따라 지금 바로 웹사이트와 방문자를 해커로부터 보호하세요.