En una entrada anterior vimos cómo proteger el acceso a wp-admin. Vamos a ver ahora cómo proteger el archivo wp-login.php, situado en la raíz de nuestra instalación de WordPress. Éste archivo contiene el formulario de login para acceder a nuestro back-end o panel de administración de la web.
Es un archivo crítico en cuanto a seguridad ya que uno de los objetivos más importantes para cualquier atacante es el acceso al back-end de nuestro WordPress, por lo tanto protegiendo éste archivo aumentaremos la seguridad de nuestro sitio.
NOTA
Hay que tener en cuenta que en ciertas ocasiones podemos tener un área privada en nuestro front-end por lo que debemos dejar a los usuarios la posibilidad de que puedan iniciar sesión. La solución en este caso pasaría por crear un formulario de login personalizado.
Al lío. Vamos a proteger el archivo wp-login.php mediante contraseña. Agregaremos al fichero .htaccess de la raíz de nuestro sitio las siguientes líneas:
<Files wp-login.php>
AuthName "Area Restringida"
AuthType Basic
AuthUserFile /home/USER/.htpasswds/.htpasswd
AuthGroupFile /dev/null
require valid-user
</Files>
En el código anterior, /home/USER/.htpasswds/.htpasswd sería la ruta al archivo que contiene el usuario y contraseña de acceso, en este caso llamado .htpasswd. Es muy recomendable que este archivo se encuentre alojado fuera de la ruta donde se encuentran los archivos de la web, así evitaremos el acceso al mismo vía web.
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. También podemos obtener estos datos a través de un generador online.
Ahora si intentas acceder al archivo wp-login.php a través de tu navegador, verás que te solicita antes de nada el usuario y clave que hemos establecido.
Si dispones de una IP fija, otra alternativa sería restringir el acceso al archivo wp-login.php solo a determinadas direcciones IP. De esta manera sólo permites acceso a este archivo a las IPs que desees. Para ello, añade estas líneas al fichero .htaccess que hay en la raíz de tu sitio web:
<files wp-login.php>
order deny,allow
allow from XXX.XXX.XXX.XXX
allow from YYY.YYY.YYY.YYY
allow from ZZZ.ZZZ.ZZZ.ZZZ
deny from all
</files>
Con esto ya tendríamos el fichero wp-login.php capado excepto para las IPs que deseemos. Podemos añadir tantas líneas allow from como queramos.