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.

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:

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í:

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:

 

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.


¿Me invitas a un café?
Si te ha gustado el blog o algún artículo en concreto te ha ayudado a resolver una duda o problema que tenías…¿me invitas a un café?

Puede que también te interese

Cómo eliminar automáticamente los enlaces por defecto en las imágenes dentro del editor de WordPress
WordPress dispone de un sistema potentísimo para administrar el contenido multimedia de tu sitio web. Es muy fácil subir archivos, imágenes, etc…y siempre las tendremos…
Cómo crear un formulario de log-in/log-out personalizado con WordPress
En la anterior entrada Cómo restringir el acceso al back-end de WordPress a usuarios no administradores vimos como limitar el acceso al panel de control…
Me han hackeado mi página web de WordPress, ¿qué puedo hacer?
Un día nos podemos levantar y encontrarnos con la desagradable noticia de que nuestro sitio ha sido infectado. Esto puede ocurrir por multitud de factores:…
Sidebar diferente para cada página en WordPress
En algunas ocasiones podemos necesitar tener un sidebar o barra lateral diferente para cada página o sección de nuestro sitio. Esto lo podemos hacer de…




  • Carlos Manuel Díaz Honrado

    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

    • 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

      • Carlos Manuel Díaz Honrado

        Gracias