Denegar el archivo xmlrpc.php pero no registrar las solicitudes fallidas

3 minutos de lectura

avatar de usuario
bajo

Agregué esto a .htaccess de un sitio de WordPress:

<files xmlrpc.php>
order allow,deny
deny from all
</files>

Funciona, cuando alguien intenta acceder http://example.com/xmlrpc.phpse muestra este mensaje:

Prohibido

No tienes permiso para acceder a /xmlrpc.php en este servidor.

Pero aún así, el registro muestra (less /var/log/apache2/error.log):

[Thu May 02 10:02:03.316061 2019] [access_compat:error] [pid 19467] 
[client 1.2.3.4:49409] AH01797: client denied by server 
configuration: /path/to/xmlrpc.php

Cómo denegar el acceso a xmlrpc.php (posiblemente desde .htaccess) pero evitar que aparezca en los registros de Apache?

  • En lugar de negar el acceso a él, podría usar un RewriteRule para reescribirlo en la página de inicio? Eso también se puede usar para ayudar a ocultar el hecho de que es un sitio de wordpress.

    – Nick

    2 de mayo de 2019 a las 8:13

  • @Nick Sí, tal vez, pero en general me interesa saber cómo denegar el acceso a un archivo, pero evite que los registros se llenen con estas solicitudes.

    – Basj

    2 de mayo de 2019 a las 8:17

  • ¿Le importaría explicar por qué diablos uno querría que los archivos de registro mintieran?

    – arkascha

    6 de enero de 2020 a las 17:31

  • @arkascha Tenía demasiadas líneas de este tipo en error.log (¿probablemente bots?), así que quería reducir la verbosidad de estas solicitudes xmlrpc.php

    – Basj

    6 de enero de 2020 a las 18:42

  • ¿Por qué sería eso un problema? No lee esos archivos de todos modos, escanea y luego usa grep o alguna utilidad más compleja. Algunos GB más o menos de archivos de registro realmente no importan, ¿verdad?

    – arkascha

    6 de enero de 2020 a las 19:44

avatar de usuario
andré aboud

RewriteRule ^(xmlrpc\.php) - [F,L,NC]

Utilizando el [F] hace que el servidor devuelva un código de estado 403 Prohibido al cliente.

los [L] marca hace que mod_rewrite deje de procesar el conjunto de reglas.

Uso de la [NC] marca hace que RewriteRule coincida sin distinguir entre mayúsculas y minúsculas.

Para más información:

https://httpd.apache.org/docs/2.4/rewrite/flags.html

  • Gracias por su respuesta. ¿Puedes explicar en pocas palabras lo que hace? ¿Que es lo que hace? ¿Y Florida Carolina del Norte?

    – Basj

    3 de enero de 2020 a las 7:29

  • ¡Muchos gracias! ¡Funciona, estas 403 solicitudes prohibidas ya no están presentes en el error.log!

    – Basj

    3 de enero de 2020 a las 9:02

Probablemente lo sepa mejor, ya que puedo ver su reputación de más de 19k 🙂 xmlrpc es falso por defecto en wp y no se recomienda para abrir global. deberías tener algo como esto en.htaccess o en functions.php

add_filter('xmlrpc_enabled', '__return_false') rpc está deshabilitado.

que no ? luego añádelo a tu functions.php resolverá tu problema. si no se resolvió, entonces use un complemento

Negar de todos es mejor hacerlo con un complemento como manuel Administrar XML-RPC.

Si quieres permitir solo para ti mismo. Compruebe si no tiene rpc falso en su .htaccess y agregue el código a continuación para habilitar solo para su ip.

<Files xmlrpc.php>
  order deny,allow
  deny from all
  allow from 10.123.456.000 //Replace with your ip
</Files>

O permitir solo desde GET,PROPFIND,POST,OPCIONES,PUT,HEAD[403]

RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PROPFIND|OPTIONS|PUT)$ [NC]
RewriteRule .? - [F,NS,L]

si desea permitir rpc, vaya aquí y siga los pasos:
https://www.wikihow.com/Habilitar-XML-RPC-en-WordPress

¿Ha sido útil esta solución?