Gb xmlrpc wso drwxr

Xmlrpc.php в WordPress используется для удаленного доступа к вашему сайту, через сторонние приложения. Данный инструмент появился, когда WordPress только зарождался и скорость интернета не позволяла быстро создавать и публиковать записи на сайт. Существовал офлайн-клиент, в котором администратор создавал и редактировал записи, а затем через xmlrpc.php записи публиковались на сайт.

В 2008 году было выпущено приложение WordPress для iPhone и поддержка XML-RPC была включена по умолчанию, без возможности отключить.

Зачем отключать xmlrpc.php?

Одна из важных причин, из-за которой стоит отключить XML-RPC — это угроза безопасности вашего сайта. Злоумышленники часто используют эту лазейку для взлома пароля от админки вашего сайта, а также для DDoS-атаки.

Часто причиной нагрузки на CPU в хостинг панели является нежелательные подключение через XML-RPC, из-за чего работа вашего хостинга может быть приостановлена.

Проверить можно с помощью XML-RPC Validator. Для этого:

В поле Address введите ваш домен и нажмите Check:

Если вы получили сообщение «Congratulation! Your site passed the first check», то xmlrpc.php на вашем сайте включен.

Если ответ «Failed to check your site at http://domain.ru because of the following error», то xmlrpc.php отключен.

Чтобы отключить XML-RPC выберите нужную инструкцию:

Чтобы отключить XML-RPC, достаточно установить плагин Disable XML-RPC и активировать его. Он автоматически укажет необходимые настройки и закроет доступ через xmlrpc.php.

Установить плагин можно через админку WordPress, в разделе Плагины.

Если вы хотите сделать все вручную без установки плагина:

Откройте или создайте (если он отсутствует) файл .htaccess и вставьте в конце файла строки:

xmlrpc is a general purpose XML-RPC client program. It performs one XML-RPC call, which you describe in its command line arguments.

Examples

Description

xmlrpc makes an XML-RPC remote procedure call (RPC) and displays the response. xmlrpc runs an XML-RPC client.

You specify the RPC parameters with command line arguments (See parameter under Arguments).

Each argument to xmlrpc describes on XML-RPC parameter. So in a typical command shell, the following would make an XML-RPC call with two parameters: "hello" and "see you later":

Note that this is an example of a Bourne shell command, so some of the characters (most notably the quotation marks) are part of the shell language, not the xmlrpc syntax.

xmlrpc is implemented using the Xmlrpc-c client library, but its function is not in any way tied to Xmlrpc-c. It makes a standard XML-RPC call and does not know or care whether the server is implemented with Xmlrpc-c or not.

Читайте также:  Как подключить сотовый телефон к компьютеру

For extra diagnostic information, use the XMLRPC_TRACE_XML environment variable so you can see the XML that goes back and forth to perform the call. (This is not specifically xmlrpc function — it’s tracing function that’s automatically there because xmlrpc uses libxmlrpc_client).

Warning About System Compatibility

xmlrpc from Xmlrpc-c before Release 1.16 doesn’t work on some platforms — it crashes because of invalid assumptions it makes about the way C variadic functions are implemented.

Overview

xmlrpc url methodName parameter . [-transport=transportname] [-username=username -password=password] [-curlinterface=<interface|host>] [-curlnoverifypeer] [-curlnoverifyhost]

Minimum unique abbreviation of option is acceptable. You may use double hyphens instead of single hyphen to denote options. You may use white space in place of the equals sign to separate an option name from its value.

Arguments

The port number defaults to 80 (the standard http service).

Examples:

  • http://localhost:8080/RPC2
  • example.com:8080
  • example.com

methodName The name of the XML-RPC method you want to invoke. parameter . The list of parameters for the RPC. xmlrpc turns each of these arguments into an XML-RPC parameter, in the order given. You may specify no parameters if you like.

You specify the data type of the parameter with a prefix ending in a slash. Example: i/5. Here, the "i" signifies an integer data type. "5" is the value.

xmlrpc is capable of only a subset of the possible XML-RPC types, as follows by prefix: i/ integer ( ) (32 bit) s/ string ( )

The parenthesis, brace, comma, colon, and backslash characters are special. If you want to include one in a string value, escape it with a backslash. h/ byte string ( ). Specify the value in hexadecimal. b/ boolean ( ). Specify the value as "true" or "t" for true; "false" or "f" for false. d/ double ( ) (i.e. real number) n/ nil ( ) I/ 64 bit integer ( ) array/ Array (). Specify the value as a list of items, separated by commas, between parentheses, like this:

You can nest complex types, for example: struct/ struct/ Struct ( ). Specify the value as a list of members, separated by commas, between braces, like this:

You can nest complex types, for example: array/(i/3,array/(d/3.5, d/2.0),i/5,s/hello)

As a shortcut, if you don’t specify a prefix (i.e. your argument does not contain a slash), xmlrpc assumes string data type.

xmlrpc cannot generate a parameter of datetime type.

Options

The name transportname is one that the Xmlrpc-c programming library recognizes. This is typically libwww, curl, and wininet.

By default, xmlrpc lets the Xmlrpc-c library choose. -username=username -password=password These options, which must be used together, cause the client to authenticate itself to the server, if the server requires it, using HTTP Basic Authentication and the specified username and password. -curlinterface=<interface|host> This option gives the "interface" option for a Curl XML transport.

Читайте также:  Сплит система energolux отзывы

The exact meaning of this option is up to the Curl library, and the best documentation for it is the manual for the ‘curl’ program that comes with the Curl library.

But essentially, it chooses the local network interface through which to send the RPC. It causes the Curl library to perform a "bind" operation on the socket it uses for the communication. It can be the name of a network interface (e.g. on Linux, "eth1") or an IP address of the interface or a host name that resolves to the IP address of the interface. Unfortunately, you can’t explicitly state which form you’re specifying, so there’s some ambiguity.

Examples:

  • -interface=eth1
  • -interface=64.171.19.66
  • -interface=giraffe.giraffe-data.com

This option causes xmlrpc to default to using the Curl XML transport. You may not specify any other transport. -curlnoverifypeer This option gives the "no_ssl_verifypeer" option for the Curl XML transport, which is essentially the CURLOPT_SSL_VERIFYPEER option of the Curl library.

See the curl_easy_setopt() man page for details on this, but essentially it means that the client does not authenticate the server’s certificate of identity — it just believes whatever the server says.

You may want to use -curlnoverifyhost as well. Since you’re not authenticating the server’s identity, there’s not much sense in checking it.

This option causes xmlrpc to default to using the Curl XML transport. You may not specify any other transport. -curlnoverifyhost This option gives the "no_ssl_verifyhost" option for the Curl XML transport, which is essentially the CURLOPT_SSL_VERIFYHOST option of the Curl library.

See the curl_easy_setopt() man page for details on this, but essentially it means that the client does not verify the server’s identity. It just assumes that if the server answers the IP address of the server as indicated by the URL (probably via host name), then it’s the intended server.

You may want to use -curlnoverifypeer as well. As long as you don’t care who the server says it is, there’s no point in authenticating its identity.

This option causes xmlrpc to default to using the Curl XML transport. You may not specify any other transport. -xmlsizelimit=n[K|M|G] This gives the maximum size in characters of an RPC response that the program will accept.

Читайте также:  Роутер не дает ip адрес

The Xmlrpc-c libraries place a limit on the size of a response they will accept from the server to protect the rest of the program that uses the libraries from running out of memory. This option overrides the library default limit, which is 512K.

This option was new in Xmlrpc-c 1.55 (June 2019).

Limitations

If you run xmlrpc in an environment in which programs get their arguments encoded some way other than UTF-8, xmlrpc will generate garbage for the XML-RPC call and display garbage for the XML-RPC response. Typically, you control this aspect of the environment with a LANG environment variable. One safe value for LANG is "C".

С полудня субботы на моем сервере, где хостится около 25 сайтов на WordPress, начались дикие тормоза. Так как мне удалось пережить предыдущие атаки (атака 1 — ровно год назад, атака 2 — в марте) не замеченными, то я не сразу понял, в чем дело.

Когда разобрался, то выяснилось, что идет перебор паролей + множество запросов к XMLRPC.

В результате удалось это все отсечь, хотя и не сразу. По катом три простых приема, как этого избежать.

Эти приемы скорее всего всем известны, но я наступил на пару граблей, которых не нашел в описаниях — вдруг это кому-то сэкономит время.

1. Останавливаем перебор, плагин Limit Login Attempts — ставим именно его, так как другие защиты сильно подвешивают сервер, например, при использовании плагина Login Security Solution сервер умер через полчаса, плагин сильно грузит базу.

В настройке обязательно включите галочку «За прокси» — иначе он будет для всех определять ip вашего сервера и автоматически блокировать всех.
UPDATE, спасибо DarkByte, подробности ниже в комментах — галочку «За прокси» включаем только если не работает определение при включенном «Прямое подключение»

2. Отключаем XML-RPC — плагин Disable XML-RPC (его просто активировать и всё).

3. Закрываем wp-login.php — если обращаться к сайту через ip, то плагин не срабатывает и подборщики продолжают долбить сайт. Чтобы этого избежать, в .htaccess добавляем:

Файл wp-login копируем, переименовываем в любое странное имя, например poletnormalny.php и внутри файла автозаменой меняем все надписи wp-login.php на poletnormalny.php.
Все, теперь к админке можно обратиться только по вашему файлу.

После этих 3 несложных шагов сайты опять начали летать и пришло спокойствие.