Seguridad WordPress

Seguridad WordPress: proteger el acceso a wp-admin

Uno de los objetivos más importantes para cualquier atacante es el acceso al panel de administración o back-end de nuestro WordPress. Debemos aumentar la seguridad en este punto tratando de protegerlo para mantener nuestra web a salvo de atacantes malintencionados.

Podemos proteger el acceso a wp-admin de varias maneras: mediante reglas en el archivo .htaccess, protegerlo con contraseña a través del archivo .htpasswd, o instalando el plugin Limit Login Attemps.

Proteger wp-admin con .htaccess y .htpasswd

Podemos poner un archivo de apache .htaccess dentro de la carpeta wp-admin, independiente del que tengamos en la raíz del proyecto. Desde este archivo podemos indicar que esta carpeta esté protegida mediante contraseña, apuntando a nuestro archivo .htpasswd, donde guardaremos nuestras credenciales.

AuthName "Area Restringida"
AuthType Basic
AuthUserFile /home/user/.htpasswds/public_html/wp-admin/.htpasswd
AuthGroupFile /dev/null
require valid-user

Cómo puede observarse podemos establecer un título y tenemos que definir la carpeta donde se guarda nuestro archivo .htpasswd. Ésta ruta debe ser la absoluta de tu servidor, puedes obtenerla con la variable $_SERVER[‘DOCUMENT_ROOT’] de PHP.

Podemos generar un archivo .htpasswd directamente desde consola. Por ejemplo si usas xampp, dirígete desde la consola a /xampp/apache/bin y ejecuta esta línea:

htpasswd -cb .htpasswd <usuario> <contraseña>

Te habrá generado un archivo .htpasswd con tu usuario y contraseña encriptada, que podrás subir a la ruta que has establecido anteriormente en el .htaccess.

Debemos añadir unas líneas más a nuestro fichero .htaccess que está dentro de wp-admin para que todo siga funcionando correctamente. El API Ajax de WordPress se ejecuta en el archivo wp-admin/admin-ajax-php. Como hemos bloqueado todo el acceso a la carpeta wp-admin, cualquier plugin, tema o widget que utilice el API Ajax, dejará de funcionar, así que vamos a permitir sólo las solicitudes a este archivo en concreto, así como los ficheros css, js e imágenes que también pueden ser utilizadas desde temas, plugins o widgets. El archivo .htaccess completo de nuestro wp-admin quedaría así:

AuthName "Area Restringida"
AuthType Basic
AuthUserFile /home/user/.htpasswds/public_html/wp-admin/.htpasswd
AuthGroupFile /dev/null
require valid-user

<FilesMatch “\.(css|js|jpg|jpeg|gif|png)$”>
  Order Allow,Deny
  Allow from All
  Satisfy Any
</FilesMatch>

<Files admin-ajax.php>
  Order Allow,Deny
  Allow from All
  Satisfy Any
</Files>

También mediante una regla en el .htaccess podemos limitar el acceso a wp-admin a una IP o IPs concretas. Si dispones de IP fija puedes escribir la siguiente regla:

order deny,allow
allow from XXX.XXX.XXX.XXX (tu ip)
deny from all

Proteger wp-admin con plugins

Existen varios plugins para limitar o proteger el acceso al wp-admin. Entre ellos podemos encontrar WP htaccess Control, WP htaccess Editor  y Limit Login Attemps.

Los dos primeros te permiten configurar el htaccess para bloquear o limitar el acceso a wp-admin. Limit Login Attemps, te permite configurar el número de intentos de login, así como el tiempo que transcurre para volver a intentarlo. Tiene una versión PRO de pago con más opciones de configuración.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

4 comentarios en Seguridad WordPress: proteger el acceso a wp-admin

  1. Hola una duda.
    En el caso de restringir el acceso mediante IPs, sería necesario habilitar la IP del propio Servidor para que si hubiera plugins, Themes o Widgets que tuvieran que acceder a la API de Ajax pudieran hacerlo?

    Gracias

    1. Hola Carlos

      Aunque bloquees el acceso por IP o por usuario/clave, es recomendable que permitas el acceso al archivo admin-ajax.php y a los JS, CSS e imágenes de la carpeta admin:

      Order Allow,Deny
      Allow from All
      Satisfy Any

      Order Allow,Deny
      Allow from All
      Satisfy Any

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios