Securizando wordpress

Este post se centra en mejorar la seguridad de wordpress viendo los plugins que considero más útiles para estos menesteres.

Con el poco tiempo que lleva este blog online ya se han dado de alta unos cuantos espammers, aunque ya activé por defecto que los posts y comentarios tienen que ser moderados y el plugin Akismet para detectar y bloquear posts mediante reconocimiento de firmas de spam, me molesta recibir correos de alta de usuarios de rusia, brazil, rumanía… ¿Qué hace gente de esos países en una web en castellano? ¿por qué todos coinciden en un patrón de un grupo letras, un guión y un grupo de números? digamos la expresión regular [a-z]7[-_][0-9]5 o similares. Además no me gusta nada la idea de que puedan hacer login en mi web personas que tan solo quieren explotar vulnerabilidades, así que me puse manos a la obra a ver de qué soluciones disponía.

En principio tan solo buscaba el típico captcha para añadir imágenes ofuscadas como confirmación en el formulario de registro para lo cual encontré Sabre que es un plugin bastante completo en cuanto a opciones para limitar la automatización en el registro. Pero además me topé con este post 11 formas de aumentar la seguridad de tu blog en WordPress que comenta algunas soluciones muy interesantes y que recomiendo a todo usuario de WordPress. Ofrece soluciones para:

  • Encriptar la contraseña al hacer login sin necesidad de SSL mediante el plugin Chap Secure Login
  • Detener ataques de fuerza bruta mediante el plugin Logic LockDown
  • Comprobar el nivel de seguridad de tu wordpress mediante el plugin WP Security Scan
  • Comprovar periodicamente las plantillas en busca de codigo malicioso con el plgin antivirus
  • Además da una serie de consejos y trucos útiles que no repetiré aquí, visitar la web para más detalles

Los plugins que a mi parecer son más recomendables son Chap sercure login y WPSercurityScan, el LoginLockDown está bien tenerlo pero los ataques mediante fuerza bruta son más difíciles de encontrar y si no se configura bién puede ser un engorro para los usuarios que sean olvidadizos con las contraseñas, ya que por defecto bloquea el login para una ip durante una hora si se han realizado 3 intentos de acceso fallidos en 5 minutos, algo que no es demasiado inusual que le suceda a un usuario que no recuerde su contraseña. Recomiendo además instalar, activar y ejecutar el plugin WPSecurityScan antes de visitar el post al que hago mención más arriva ya que casi todas las soluciones que indica ya las implementa este plugin de forma automática por nosotros.

El Chap secure login es una idea genial para evitar que las contraseñas puedan ser capturadas si accedemos desde un cibercafé o cualquier red donde existan más de un ordenador y no tengamos control de todos ellos.

En cuanto al WPSecurityScan es de agradecer que alguien se haya tomado las molestias de programar un plugin que facilita tanto la comprovación y la implementación de unas mínimas reglas de seguridad. Tras activar el plugin al acceder a el empieza a comprobar el nivel de seguridad y da la opción de solventar los problemas encontrados de una forma muy automatizada.

El único problema que me ha causado a sido al cambiar el prefijo de las tablas de la base de datos, que además de realizar estos cambios tambien cambia el prefijo de la propia base de datos y modifica la configuración de wordpress para usar el nuevo nombre de la base de datos. El problema se debe a la configuración de mi servidor ya que el usuario que ejecuta apache lógicamente no tiene permisos para modificar el nombre del directorio de una base de datos de MySQL así que realiza los cambios en la configuración de wordpress sin comprobar antes que la base de datos exista, eso sí al menos muestra un mensaje de error, pero no deja de ser una incomodidad, aunque  fácil de solventar, eperemos que en futuras versiones esto cambie. Bueno si te has encontrado esta situación la solución es muy fácil, debes editar el archivo wp-config.php y buscar la línea

define(‘DB_NAME’, ‘prefijo_nombre’);

y cambiar el prefijo por wp, el resultado debe ser

define(‘DB_NAME’, ‘wp_nombre’);

esto deberá funcionar siempre y cuando el prefijo antiguo fuese wp, en caso contrario seguirá sin poder conectar, si sabes que el prefijo era otro pon tu prefijo, si no lo saber deberás buscar la base de datos en el servidor o preguntar el nombre al administrador del mismo.

Hace poco descubrí el plugin antivirus, es muy sencillo de utilizar e intenta evitar la inyección de código malicioso en las plantillas de wordpress mediante el escaneo periodico automático o mediante escaneos manuales, si se activa la opción automática el plugin enviará un e-mail en caso de encontrar algún código inadecuado. Este plugin no elimina el código y si da falsos positivos es posible evitar las notificaciones mediante un lista blanca de códigos.

Otro plugin que me ha enamorado es WP Captcha Free este plugin impide la población automatizada de comentarios sin incluir ningún paso o acción extra para el usuario, esto quiere decir que no usa capchas ni preguntas ni nada parecido, mediante la recolección de datos del navegador y otros mecanismos, detecta si se trata de un usuario real o un robot, en el primer caso permite la publicación y en el segundo la bloquea, de modo que tendremos el blog bien limpito pero pudiendo permitir la publicación completamente abierta en el mismo. Este plugin depende de los estilos CSS del formulario de publicación y si el tema no ha respetado los estilos originales puede fallar.

Bueno suerte en la securización ;)

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>