Cómo prevenir ataques en la página wp-login.php de WordPress

7 minutos de lectura

avatar de usuario
epaps

En mi sitio web, el mayor uso de GPU se encuentra en la página de inicio de sesión de WordPress, no en la página de inicio. Básicamente he llegado a la conclusión de que está siendo atacado por un ataque de fuerza bruta, o algo similar.

He instalado un complemento que evita los ataques de contraseña de los bots, pero no evita que los bots visiten la página en primer lugar.

Quiero cambiar la ubicación de la página de inicio de sesión a algo como wp-login-here.php, o quizás haya una mejor solución. los Complemento de sigilo parece que funcionaría, pero no es compatible con las versiones recientes de WordPress. ¿Algunas ideas?

EDITAR: La verdadera solución a este problema fue que hice una instalación limpia de WordPress, esta vez en una versión compatible con el complemento Stealth. Después de instalar WP y el complemento Stealth en esta versión anterior de WP, usé el archivo .htaccess que creó el complemento y lo copié (después de hacer algunas modificaciones) en el sitio de producción. La razón por la que acepté la respuesta que hice fue porque Bad Behavior terminó siendo un buen complemento y el otro consejo fue útil.

  • ¿Es una opción proteger la página de inicio de sesión con una contraseña de Apache adicional? Es un poco complicado si cambia de computadora con frecuencia (porque tendría que ingresar dos contraseñas), pero proporcionaría seguridad adicional

    – Peka

    14 de diciembre de 2010 a las 21:17

  • Estaba pensando en eso como una opción. Sin embargo, ¿cómo haría para agregar una contraseña a un solo archivo (solo lo he hecho en directorios en el pasado)?

    – epaps

    14 de diciembre de 2010 a las 21:32

  • lo que tal vez esté sucediendo es que no tienes tanto tráfico y sueles iniciar sesión con frecuencia. que podría estar generando el tráfico para su página de inicio de sesión…?

    – t kit

    15 de diciembre de 2010 a las 7:45

  • No, pootzko, eso no va a pasar. El sitio no requiere un inicio de sesión para ver ningún contenido.

    – epaps

    15 de diciembre de 2010 a las 18:05

avatar de usuario
elmedicomuerto

¿Cómo haría para agregar una contraseña a un solo archivo?

Agregue esto a la actual de WP .htaccess:

<FilesMatch "wp-login.php">
    AuthName "WordPress Admin"
    AuthType Basic
    AuthUserFile /path/to/.htpasswd
    require valid-user
</FilesMatch>

  • Esta solución, si bien es buena, interrumpirá la capacidad del usuario para cerrar sesión (aparecerá el cuadro de autenticación básico), especialmente molesto si usa woocommerce…. es molesto cómo cerrar sesión en WordPress utiliza el archivo wp-login.php.

    – Consuelo antes del amanecer

    21 de noviembre de 2019 a las 0:12

avatar de usuario
tkit

mal comportamiento puede bloquear algunas direcciones IP maliciosas conocidas. funciona junto con ProyectoHoneyPot y mantiene las IP malas fuera de su página web incluso antes de que esté completamente cargada…

además, hay una manera de ocultar su página de inicio de sesión usando .htaccess
bloquee a todos los que intenten iniciar sesión más de unas pocas veces como ya lo señaló Jimmy

y además de eso, probablemente debería hacer cumplir las siguientes prácticas:

  • no use la cuenta de administrador (cree otra cuenta con privilegios de administrador, pero con un nombre de usuario diferente al de administrador y luego elimine la cuenta de administrador predeterminada)
  • forzar usando SSL
  • usa contraseñas seguras

  • Tenga en cuenta que la punta en hide your login page el enlace de arriba todavía no protegerá wp-login.phpque puede ser publicado directamente por un bot.

    – montrealista

    12 de abril de 2013 a las 14:04

cree una regla .htaccess para el directorio wp-admin y configúrela en una lista establecida de direcciones IP o en una combinación de usuario/contraseña. No desea comenzar a piratear wordpress si puede evitarlo, ya que la próxima actualización simplemente deshará los cambios, y configurarlo en el nivel .htaccess de Apache será mucho más efectivo que tratar de parchear wordpress.

¿Cuál es el problema con solo limitar la cantidad de intentos de inicio de sesión por dirección IP? http://wordpress.org/extend/plugins/limit-login-attempts/

para actualizar sobre epaps arriba EDITAR y responder a la pregunta similar ¿Hay alguna forma de cambiar el nombre u ocultar wp-login.php?yo también he descubierto que las reglas .htaccess generadas por el complemento de inicio de sesión sigiloso (ahora abandonado hace mucho tiempo) son el medio menos complejo pero más efectivo para evitar el acceso directo a wp-login.php / wp-admin y proteger contra varios ataques ( particularmente fuerza bruta).

Otras “soluciones” que he leído requieren funciones de php, cambios en wp-config.php y reescrituras de .htaccess. ¡O la instalación de otro complemento (voluminoso)! Muchos de estos solo bloquean el URI /wp-admin/ (que se subvierte fácilmente yendo directamente a wp-login.php), o rompen los inicios de sesión de comentaristas/clientes.

La versión final del complemento de inicio de sesión sigiloso era v1.3 y era compatible con las versiones de WordPress 2.3 a 2.7.1. Se puede encontrar la última instantánea de Internet Archive del 15 de octubre de 2011 aquí donde se puede descargar stealth-login.1.3.zip. Se puede descargar una versión compatible de WordPress desde el Archivo de versiones – https://wordpress.org/download/release-archive/. Realice la famosa instalación de 5 minutos, descomprima el complemento de inicio de sesión sigiloso en /wp-content/plugins y ahora puede generar un conjunto de reglas para su propio uso.

El mío es como se muestra a continuación y funciona perfectamente en WordPress 4.7.4 con WooCommerce 3.0.5. El único cambio que hice fue agregar la condición de reescritura en la línea 12. Era necesario evitar que WooCommerce /my-account/customer-logout se rompiera (era una redirección 302 sin el URI /wp-login.php, lo que significa que la cadena de consulta en su propio no ejecutaría el cierre de sesión, por lo tanto, no sucedió nada. Tenga en cuenta que la cadena se ha dejado abierta para recoger la variable wpnonce.

Entonces, como se señaló anteriormente, esta es LA mejor solución que he encontrado hasta ahora, e incluso se puede hacer que funcione con WooCommerce. Tan simple, pero tan efectivo – gracias epaps por señalar esto.

RewriteRule ^signout wp-login.php?action=logout&_wpnonce=a3d57642ab&stealth_out_key=ow4hzd5lxudcetbgbfreaox6c1 [L]
RewriteRule ^signin wp-login.php?stealth_in_key=05gvov4wuuruahpuchpohavitl&redirect_to=https://yourwebsite.com/wp-admin/ [R,L]
RewriteRule ^admin wp-admin/?stealth_admin_key=f4ji1q6tpwr55s5a0h65clg0qk [R,L]
RewriteCond %{HTTP_REFERER} !^https://yourwebsite.com/wp-admin 
RewriteCond %{HTTP_REFERER} !^https://yourwebsite.com/wp-login\.php 
RewriteCond %{HTTP_REFERER} !^https://yourwebsite.com/signin 
RewriteCond %{HTTP_REFERER} !^https://yourwebsite.com/admin 
RewriteCond %{QUERY_STRING} !^stealth_in_key=05gvov4wuuruahpuchpohavitl 
RewriteCond %{QUERY_STRING} !^stealth_out_key=ow4hzd5lxudcetbgbfreaox6c1 
RewriteCond %{QUERY_STRING} !^stealth_reg_key=rue2bekyask21pwtegavqbbp5n 
RewriteCond %{QUERY_STRING} !^stealth_admin_key=f4ji1q6tpwr55s5a0h65clg0qk 
RewriteCond %{QUERY_STRING} !^action=logout&redirect_to=https%3A%2F%2Fyourwebsite.com%2Fmy-account%2F&_wpnonce= 
RewriteRule ^wp-login\.php https://yourwebsite.com [L] 
RewriteCond %{QUERY_STRING} ^loggedout=true 
RewriteRule ^wp-login\.php https://yourwebsite.com [L] 

avatar de usuario
Juan Parker

Como sugerencia, si tiene una IP estática, puede usar un archivo .htaccess .passwd para restringir el acceso al directorio de administración a una lista conocida de direcciones IP. Si bien esto no evitará los intentos de acceso, al menos reducirá el uso de recursos.

avatar de usuario
tonio

Como una adición a su seguridad, puede probar este simple complemento de WordPress:

http://themext.com/protected-wp-login/

El sitio web ya no está disponible, pero el el código todavía está en GitHub

Protege contra la fuerza bruta la página de inicio de sesión de su administrador (mediante el uso de una clave segura en la URL).

  • Gracias, complemento realmente útil. Ya lo uso para proteger mi página de inicio de sesión de wp.

    – starikovs

    18 de abril de 2013 a las 10:49

¿Ha sido útil esta solución?