WordPress의 xmlrpc.php에 대한 전체 가이드(정의, 보안 위험, 비활성화 방법)
게시 됨: 2020-07-06XML-RPC WordPress 사양은 다른 시스템 간의 통신을 표준화하기 위해 개발되었습니다. 즉, WordPress 외부의 응용 프로그램(예: 다른 블로깅 플랫폼 및 데스크톱 클라이언트)이 WordPress와 상호 작용할 수 있습니다.
이 사양은 처음부터 WordPress의 일부였으며 매우 유용한 작업을 수행했습니다. 그것이 없었다면 WordPress는 인터넷의 나머지 부분과 분리된 자체 사일로에 있었을 것입니다.
그러나 xmlrpc.php에는 단점이 있습니다. 이것은 WordPress 사이트에 취약점을 유발할 수 있으며 이제 WordPress REST API로 대체되었습니다.
이 게시물에서는 xmlrpc.php가 무엇인지, 왜 비활성화해야 하는지 설명하고 WordPress 사이트에서 실행 중인지 확인하는 데 도움이 됩니다.
준비가 된? 뛰어들자!
xmlrpc.php은(는) 무엇이죠?
XML-RPC는 WordPress와 다른 시스템 간의 통신을 가능하게 하는 사양입니다. HTTP를 전송 메커니즘으로 사용하고 XML을 인코딩 메커니즘으로 사용하여 이러한 통신을 표준화함으로써 이를 수행했습니다.
XML-RPC는 WordPress보다 먼저 등장했습니다. 2003년에 WordPress를 생성하기 위해 분기된 b2 블로깅 소프트웨어에 있었습니다. 시스템 이면의 코드는 사이트의 루트 디렉토리에 있는 xmlrpc.php 파일에 저장됩니다. XML-RPC가 대부분 구식임에도 불구하고 여전히 존재합니다.
WordPress의 초기 버전에서 XML-RPC는 기본적으로 꺼져 있습니다. 그러나 버전 3.5부터 기본적으로 활성화되어 있습니다. 주된 이유는 WordPress 모바일 앱이 WordPress 설치와 통신할 수 있도록 허용하기 위해서였습니다.
버전 3.5 이전의 WordPress 모바일 앱을 사용한 경우 앱이 콘텐츠를 게시할 수 있으려면 사이트에서 XML-RPC를 활성화해야 했던 것을 기억할 수 있습니다. 앱이 WordPress 자체를 실행하지 않았기 때문입니다. 대신 xmlrpc.php를 사용하여 WordPress 사이트와 통신하는 별도의 앱이었습니다.
그러나 XML-RPC가 사용된 것은 모바일 앱만이 아니었습니다. 또한 WordPress와 다른 블로깅 플랫폼 간의 통신을 허용하고 트랙백과 핑백을 활성화했으며 자체 호스팅 WordPress를 연결하는 Jetpack 플러그인을 구동했습니다. WordPress.com 사이트.
그러나 REST API가 WordPress 코어에 통합되었으므로 xmlrpc.php 파일은 더 이상 이 통신에 사용되지 않습니다. 대신 REST API는 WordPress 모바일 앱, 데스크톱 클라이언트, 다른 블로그 플랫폼, WordPress.com(Jetpack 플러그인용) 및 기타 시스템 및 서비스와 통신하는 데 사용됩니다. REST API가 상호 작용할 수 있는 시스템의 범위는 xmlrpc.php에서 허용하는 것보다 훨씬 큽니다. 또한 훨씬 더 많은 유연성이 있습니다.
REST API가 XML-RPC를 대체했으므로 이제 사이트에서 xmlrpc.php를 비활성화해야 합니다. 왜 그런지 봅시다.
xmlrpc.php를 비활성화해야 하는 이유
WordPress 사이트에서 xmlrpc.php를 비활성화해야 하는 주된 이유는 보안 취약성을 도입하고 공격의 대상이 될 수 있기 때문입니다.
이제 XML-RPC가 WordPress 외부에서 통신하는 데 더 이상 필요하지 않으므로 활성 상태로 유지할 이유가 없습니다. 그렇기 때문에 사이트를 비활성화하여 사이트를 더 안전하게 만드는 것이 현명합니다.
xmlrpc.php가 보안 책임이고 더 이상 작동하지 않는 경우 WordPress에서 완전히 제거되지 않은 이유는 무엇입니까?
그 이유는 WordPress의 주요 기능 중 하나가 항상 이전 버전과의 호환성이기 때문입니다. 사이트를 잘 관리하고 있다면 플러그인이나 테마뿐만 아니라 WordPress를 최신 상태로 유지하는 것이 중요하다는 것을 알게 될 것입니다.
그러나 WordPress 버전을 업데이트할 의사가 없거나 업데이트할 수 없는 웹사이트 소유자는 항상 있을 것입니다. REST API 이전 버전을 실행 중인 경우에도 xmlrpc.php에 액세스해야 합니다.
구체적인 취약점을 좀 더 자세히 살펴보자.
XML-RPC 핑백을 통한 DDoS 공격
xmlrpc.php가 활성화한 기능 중 하나는 핑백과 트랙백이었습니다. 다른 블로그나 사이트가 귀하의 콘텐츠에 링크될 때 귀하의 사이트 댓글에 표시되는 알림입니다.
XML-RPC 사양이 이 통신을 가능하게 했지만 REST API로 대체되었습니다(이미 보았듯이).
사이트에서 XML-RPC가 활성화된 경우 해커는 xmlrpc.php를 악용하여 짧은 시간에 사이트에 방대한 수의 핑백을 전송하여 사이트에 DDoS 공격을 가할 수 있습니다. 이렇게 하면 서버에 과부하가 걸리고 사이트가 작동하지 않을 수 있습니다.
XML-RPC를 통한 무차별 대입 공격
xmlrpc.php가 요청할 때마다 인증을 위해 사용자 이름과 암호를 보냅니다. 이것은 상당한 보안 책임을 제시하며 REST API가 하지 않는 것입니다. 실제로 REST API는 사용자 이름이나 비밀번호 대신 인증용 토큰을 보내는 OAuth를 사용합니다.
xmlrpc.php는 모든 요청과 함께 인증 정보를 전송하기 때문에 해커가 이를 사용하여 사이트에 액세스할 수 있습니다. 이와 같은 무차별 대입 공격을 통해 콘텐츠를 삽입하거나 코드를 삭제하거나 데이터베이스를 손상시킬 수 있습니다.
공격자가 서로 다른 사용자 이름과 암호 쌍을 사용하여 사이트에 충분한 요청을 보내는 경우 결국 올바른 요청에 도달하여 사이트에 대한 액세스 권한을 부여할 수 있습니다.
그렇기 때문에 REST API를 사용하여 외부 시스템과 통신하는 최신 버전의 WordPress를 실행하는 경우 xmlrpc.php 를 비활성화해야 합니다 . 필요하지 않으며 사이트를 취약하게 만들 수 있습니다.
xmlrpc.php가 WordPress 사이트에서 실행되고 있습니까?
가장 먼저 해야 할 일은 xmlrpc.php가 WordPress 사이트에서 실행되고 있는지 확인하는 것입니다.
이것은 파일이 있는지 여부를 확인하는 간단한 경우가 아닙니다. 이 파일은 모든 WordPress 설치의 일부이며 XML-RPC가 비활성화된 경우에도 표시됩니다.
사이트에서 xmlrpc.php가 활성화되어 있는지 확인하려면 WordPress XML-RPC 유효성 검사 서비스를 사용하십시오. 이것은 귀하의 사이트를 확인하고 xmlrpc.php가 활성화되어 있는지 알려줍니다.

다음은 서비스에서 이 사이트를 확인했을 때 얻은 결과입니다.

이것은 kinsta.com에서 xmlrpc.php가 비활성화되었음을 보여줍니다. 따라서 검사를 실행하고 xmlrpc.php가 사이트에서 여전히 활성화되어 있음을 발견하면 어떻게 끄나요?
xmlrpc.php를 비활성화하는 방법
xmlrpc.php를 비활성화하는 세 가지 방법이 있습니다.
하나하나 개별적으로 살펴보겠습니다.
플러그인으로 xmlrpc.php를 비활성화하는 방법
xmlrpc.php를 비활성화하는 플러그인을 설치하는 것이 가장 쉬운 방법입니다. XML-RPC 비활성화 플러그인은 이를 완전히 비활성화합니다. 사용 방법은 다음과 같습니다.
내 출발점은 xmlrpc.php가 활성화된 내 웹사이트입니다. 내가 한 수표를 통해 이것을 볼 수 있습니다.

WordPress 관리자의 플러그인 화면을 통해 플러그인을 설치하고 활성화하십시오.
다른 작업은 필요하지 않습니다. 플러그인을 활성화하면 XML-RPC가 비활성화됩니다. 이제 내 사이트에서 검사를 실행하면 다른 결과가 나타납니다.

간단합니다!
플러그인으로 XML-RPC 핑백 비활성화
하지만 xmlrpc.php의 일부를 비활성화하고 나머지는 비활성화하려면 어떻게 해야 할까요? XML-RPC 핑백 비활성화 플러그인을 사용하면 핑백 기능만 비활성화할 수 있습니다. 즉, 필요한 경우 XML-RPC의 다른 기능에 계속 액세스할 수 있습니다.
플러그인은 Disable XML-RPC 플러그인과 동일한 방식으로 작동합니다. 설치하고 활성화하기만 하면 작동합니다.
플러그인으로 XML-RPC 및 REST API 활성화 구성
사이트에서 xmlrpc.php와 REST API가 구성되는 방식을 보다 세밀하게 제어하려면 REST XML-RPC 데이터 검사기 플러그인을 설치할 수 있습니다.
이 플러그인을 설치하고 활성화했으면 설정 > REST XML-RPC 데이터 검사기 로 이동하고 XML-RPC 탭을 클릭합니다.

이를 통해 xmlrpc.php의 어떤 측면이 사이트에서 활성화되는지 정확하게 구성할 수 있습니다.
놀랍도록 빠르고 안전하며 개발자 친화적인 호스팅이 필요하십니까? Kinsta는 WordPress 개발자를 염두에 두고 구축되었으며 다양한 도구와 강력한 대시보드를 제공합니다. 우리의 계획을 확인하십시오
또는 단순히 완전히 끌 수 있습니다. 또한 REST API를 제어하려는 경우 플러그인에서 이에 대한 또 다른 탭을 제공합니다.
플러그인 없이 xmlrpc.php를 비활성화하는 방법
사이트에 다른 플러그인을 설치하지 않으려면 필터 또는 .htaccess 파일에 일부 코드를 추가하여 xmlrpc.php를 비활성화할 수 있습니다. 두 가지 방법을 모두 살펴보겠습니다.
필터를 통해 xmlrpc.php 비활성화
여기에서 옵션은 xmlrpc_enabled 필터를 사용하여 xmlrpc.php를 비활성화하는 것입니다. 이 기능을 플러그인에 추가하고 사이트에서 활성화하십시오:
add_filter( 'xmlrpc_enabled', '__return_false' );
이것을 테마 기능 파일에 추가할 수 있지만 플러그인을 작성하는 것이 더 좋습니다.
다른 옵션은 FTP 또는 cPanel을 통해 사이트 서버에 연결하여 Apache를 사용하는 호스팅 제공업체에서 사용할 수 있는 .htaccess 파일을 편집하는 것과 관련이 있습니다.
.htacess 파일을 통해 xmlrpc.php 비활성화
.htaccess 파일에 다음 코드를 추가하세요.
<Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
문제가 발생할 경우에 대비하여 이전 파일의 복사본을 만드십시오.
호스팅 공급자가 xmlrpc.php를 비활성화하도록 하십시오.
또는 일부 호스팅 제공업체는 공격이 감지되면 xmlrpc.php를 비활성화합니다.
Kinsta에서 XML-RPC를 통한 공격이 감지되면 코드 조각이 Nginx.config 파일에 자동으로 추가됩니다.
location ~* ^/xmlrpc.php$ { return 403; }
이렇게 하면 403 오류가 발생하고 트랙에서 공격이 중지됩니다.
이 작업을 직접 수행하는 경우 위의 방법 중 하나를 사용하는 것이 가장 좋습니다. 그러나 그렇게하기 전에 항상 먼저 호스팅 제공 업체에 확인하십시오.
언제 xmlrpc.php를 활성화해야 합니까?
WordPress 사이트에서 xmlrpc.php를 활성화해야 하거나 완전히 비활성화해서는 안 되는 경우가 있을 수 있습니다.
이것들은:
- REST API를 실행하고 있지는 않지만(권장되지는 않지만 일부 상황에서는 필요함) WordPress 사이트와 다른 시스템 간에 통신해야 합니다.
- WordPress를 버전 4.4 이상으로 업데이트할 수 없으므로 REST API에 액세스할 수 없습니다. 이것은 호스팅 설정의 제한(이 경우 호스팅 제공업체를 변경함) 또는 테마 또는 플러그인의 비호환성(이 경우 교체하거나 업데이트함) 때문일 수 있습니다.
- WP REST API에 액세스할 수 없지만 XML-RPC에 액세스할 수 있는 외부 애플리케이션으로 작업하고 있습니다(장기적으로는 해당 애플리케이션을 업데이트하거나 REST 호환 애플리케이션으로 전환하는 것이 좋습니다).
그게 다야! 이들 중 어느 것도 XML-RPC 사양을 켜진 상태로 유지해야 하는 특별한 이유가 없습니다.
그것이 여전히 WordPress에 있는 유일한 이유는 이전 버전과의 호환성을 위한 것이며 구식 시스템으로 작업하는 경우에만 사용할 것입니다. 사이트를 최신 상태로 유지하고 최신 기술로 작업하려는 사람은 xmlrpc.php를 비활성화하는 것이 좋습니다.
요약
XML-RPC 사양은 WordPress가 외부 시스템 및 응용 프로그램과 통신하기 위한 수단으로 WordPress가 만들어지기 전에 개발되었습니다. 고유한 보안 결함이 있으며 사이트를 공격에 취약하게 만들 수 있습니다.
이제 REST API를 통해 사이트가 다른 애플리케이션과 통신할 수 있으므로 xmlrpc.php를 안전하게 비활성화할 수 있습니다. 위의 단계를 따르면 비활성화하여 사이트 보안을 향상시킬 수 있습니다.