Securización del acceso (login) al Panel de Administración de WordPress

por | diciembre 10, 2014

Bueno queridos amigos, pues hoy vamos a ver cómo proteger de una manera mínimamente decente nuestro login al panel de administración de WordPress. Es una parte esencial y básica como primera línea de defensa de nuestro blog.

Asegúrate de utilizar HTTPS

Cuando accedes a tu panel de Administración de WordPress, tendrás que introducir tu usuario y contraseña para entrar… y digamos que no es nada recomendable que esa información se transfiera en texto plano (HTTP), ya que estaría a la vista de curiosos que podrían no tener muy buenas intenciones… muy susceptible a interceptaciones en ataques Man in the Middle (MitM). Lo suyo es que vaya cifrado.

Si alojas tu blog en wordpress.com lo tendrás bastante fácil para habilitar HTTPS ya que desde la propia página de soporte te dicen los pasos que tienes que seguir. Recuerda que wordpress.org no es lo mismo que wordpress.com

Por el contrario, si tu blog está en un tu propio servidor autoalojado (ya sea hosting compartido, VPS, físico dedicado, etc…) tendrás que dar algunos pasos más. Pero no te preocupes, tampoco es doloroso. Lo primero, tendrás que disponer de un certificado SSL para poder securizar y utilizar HTTPS. Para obtener un certificado tendrás distintas opciones:

  • En los planes de hosting compartido, algunas compañías ofrecen igualmente certificados SSL compartidos. Este es el caso para planes compartidos de Hostgator, por poner un ejemplo. Sirven para securizar todo el servidor compartido en el que puede haber determinado número de clientes. Es, para entendernos, el mismo certificado que utilizas cuando vas a hacer login en tu Panel de Control (cpanel) de la compañía de hosting.
  • Crear un certificado autofirmado con OpenSSL.
  • Obtener un certificado de una Autoridad de Certificados de Confianza. Algunas ofrecen certificados gratuitos, como StartSSL (clase 1, validez de 1 año), Comodo (90 días de validez) o Cacert (2 años de validez para certificados de servidor). Para períodos de renovación mayores, wildcards, etc… ya tendremos que pagar. Las compañías de hosting, también en estos casos, suelen tener ofertas bastante buenas.

Venga el certificado SSL de donde venga, luego tendrás que modificar la configuración de WordPress para que utilice HTTPS. Una manera sencilla de hacerlo es con el plugin WordPress HTTPS (SSL).

Plugins de seguridad

En WordPress no será por plugins… porque tienes para elegir de todos los colores y sabores. Lo principal que debes tener en cuenta es que contra tu login se lanzarán ataques de fuerza bruta (también conocidos como ataques de diccionario) en su mayor parte. De entre todos los plugins, algunos se centran única y exclusivamente en proteger tu login de ataques de fuerza bruta (por ejemplo, baneando la IP que llega a 3 intentos de acceso fallidos) y otros son soluciones integrales que incluyen gran cantidad de opciones y entre ellas está la de proteger tu login. Es tu decisión ya encontrar el que mejor te venga.

En mi humilde opinión, prefiero tener una solución integral que me protega en varios frentes, en vez de una sola o tener varias por separado. Eso sí, procura tener un único plugin para cada fin (por ejemplo, no tengas dos instalados a la vez para proteger tu login de ataques de fuerza bruta), porque pueden surgir problemas de compatibilidad e inestabilidad en tu plataforma de blog.

Así, a modo de ejemplo de los que encuentro más interesantes, te comento los siguientes:

  • BulletProof Security: protección y monitorización de login, logs de error HTTP, reglas de firewall autogeneradas para htaccess….
  • Wordfence Security: de nuevo como la anterior, con gran cantidad de opciones (escaneo de ficheros de configuración de WordPress, Backups, firewall…)
  • BruteProtect: centrada exclusivamente en la protección frente a ataques de fuerza bruta.
  • Login Security Solution: idem al anterior, creo que no hace falta que explique mucho más.
  • Anti-Malware (Get Off Malicious Scripts): protege de ataques de fuerza bruta y además escanea nuestro blog en busca de elementos malos malosos maliciosos.
  • Rename wp-login.php: centrado en ataques de fuerza bruta.
  • All In One WP Security & Firewall: más de lo mismo pero además cubre más flecos de seguridad (comprobación de fortaleza de contraseñas, protección de ficheros críticos…)
  • WordPress Simple Firewall: oooootro más. Permite además protección frente a SPAM, forzar SSL en la administración de WordPress…

Protección del fichero wp-login.php desde un .htaccess

Muy efectiva y fácil de implementar. Modifica tu fichero .htaccess o créalo en el directorio donde tengas el fichero wp-login.php (suele ser en el directorio raíz de tu servidor web):

# Restringir acceso por IP
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from IP
</Files>

Básicamente, lo que haces es indicarle qué IP tiene autorizado acceder (utilizar) a ese fichero. Indicaremos por tanto únicamente la IP desde donde pensamos administrar nuestro WordPress. Recuerda que esa IP corresponde con tu IP pública, que puedes determinar fácilmente en la página whatismyip.com o, si estás en Linux, puedes utilizar curl:

curl ifconfig.me

Si no tienes instalado curl y estás en Debian o derivada, te basta con:

apt-get install curl

En Red Hat o derivada:

yum install curl

Sentido común

Las primeras medidas que hay que tomar son de sentido común. Quizá debiera haberlo indicado al principio del artículo pero pienso que son cosas que se recuerdan mejor si se dejan como colofón final. Si esto falla, ya podemos instalar todos los muros que queramos… No es recomendable utilizar un usuario que, por ejemplo, se llame “admin” ya que es demasiado común y será de los primeros que pruebe un atacante. Tampoco 1234 o cosas por el estilo, no jodamos. Por otro lado presta especial atención a la contraseña. Al respecto escribí un artículo hace un tiempo en el que se veía claramente la importancia de las buenas contraseñas, tiempo necesario para reventarla en ataques de diccionario, etc…