En este tutorial vemos cómo configurar WordPress SG Security, un plugin que nos ayudará a mejorar la seguridad a nivel de site, de acceso, y de post-hackeo.
1. Instalar el plugin
Se trata de un plugin gratuito desarrollado por SiteGround, que podemos descargar desde el repositorio de WordPress.
Para instalarlo, debemos ir a "Plugins / Añadir nuevo" y en la caja de búsqueda escibiremos "sg security". Eso nos mostrará un listado de plugins, entre los cuales tendremos el que podemos ver en la siguiente imagen:

Haremos clic en "Instalar ahora" del plugin SG Security
Una vez instalado, el botón de instalación cambiará a "Activar". Haremos clic de nuevo, y el plugin ya estará funcionando.

Es muy recomendable activar las actualizaciones automáticas
Podemos comprobar que está instalado correctamente en el listado de plugins. Al tratarse de un plugin de seguridad, recomiendo encarecidamente activar las actualizaciones automáticas.
2. Configuración de SG Security
Una vez instalado, veremos un nuevo item en el menú del panel de control de WordPress llamado "SG Security". Si hacemos clic en él, veremos la siguiente pantalla de resumen y bienvenida:

El dashboard inicial nos ofrece accesos directos y un resumen de la actividad reciente
Aunque pueda parecer que tenemos muchas opciones o caminos que tomar, todo se resume en cuatro herramientas:
- Seguridad del sitio: Para reforzar la seguridad de la web y evitar malware.
- Seguridad en el acceso: Para proteger el acceso de visitantes no autorizados, bots y ataques humanos o automáticos.
- Registro de actividad: Monitorizar visitas e inicio de sesión en busca de visitantes no autorizados o intentos de fuerza bruta. Puede bloquear y desbloquear fácilmente direcciones IP o visitantes sospechosos.
- Acciones post-hackeo: Herramientas por si un site ha sido pirateado o el inicio de sesión de un usuario se ha visto comprometido.
Podemos acceder a "Seguridad del sitio" y a "Seguridad en el acceso" tanto desde el menú, como desde los iconos. En cuanto a al "Registro de actividad", también podemos acceder desde el menú, o desde el botón inferior "Ver todos los registros". Finalmente, las opciones post hackeo, sólo están en el menú.
3. Seguridad en el sitio
El primer set de opciones sirven para reforzar la seguridad de nuestra web, lo que se llama el "hardening". Tenemos las siguientes 7 opciones:
- Bloquear y proteger carpetas del sistema: Al habilitar esta opción, evitamos la ejecución de scripts no autorizados o maliciosos en las carpetas de sistema.
- Ocultar la versión de WordPress: Al ocultar la versión, evitamos que se sepa si tenemos una versión con vulnerabilidades (aunque siempre es mejor tenerlo todo actualizado, claro).
- Desactivar el editor de temas y plugins: Con esta opción desactivamos el editor de código de plugins y themes del panel de control de WordPress, tantp para evitar posibles errores de código como de acceso no autorizado.
- Deshabilitar XML-RPC: El protocolo XML-RPC fue diseñado para permitir a WordPress comunicarse con sistemas de terceros, pero puede ser una puerta de entrada para exploits. Si no lo usamos, mejor desactibar.
- Deshabilitar las fuentes RSS y ATOM: Esta opción es para evitar que se usen los feeds para scrapear nuestro contenido. Pero no deberíamos desactivarla si tenemos feeds públicos o un podcast.
- Protección XSS avanzada: Esta opción añade encabezados adicionales nuestra web para protección contra ataques XSS.
- Eliminar el archivo readme.html: WordPress viene con un archivo readme.html que contiene información sobre nuestra versión, mejor eliminarla para no dar información a posibles bots o malware.
4. Seguridad en el acceso
Este apartado mejora la seguridad en cuanto a los accesos (logueos) a nuestro WordPress, especialmente interesante si tenemos e-commerces, membership sites, foros o redes sociales.

Podemos limitar el límite de errores de logueo
Veamos las 4 opciones que nos ofrece:
- Acceso de inicio de sesión: Por defecto se puede acceder al formulario de acceso de WordPress desde cualquier IP. Con esta opción podemos limitar el acceso a direcciones IP específicas o un rango de direcciones IP para evitar ataques de fuerza bruta o intentos de inicio de sesión maliciosos. Lógicamente no nos servirá si tenemos una web donde los usuarios deban loguearse.
- Autenticación de doble factor para usuarios administradores y editores: La autenticación de doble factor obliga a los administradores y editores a iniciar sesión usando también el token generado con Google Authenticator.
- Deshabilitar el nombre de usuario "admin": Esta opción no permitirá el uso de "admin" como nombre de usuario. Si ya existe un usuario llamado "admin", se nos pedirá un proporcione un nuevo nombre de usuario y el plugin lo cambiará.
- Limitar los intentos de inicio de sesión: Esta opción limita la cantidad de veces que un usuario determinado puede equivocarse de password. Una vez que se alcanza el límite (nos permite elegir entre 3 y 5) la IP desde la que se han originado los intentos se bloqueará durante 1 hora. Si después de ese tiempo se continua intentando con passwords incorrectos, el límite se activará durante 24 horas y luego durante 7 días.
En el caso que tengamos que conectarnos desde una IP que no está permitida, y nos quedemos fuera del admin, podemos usar este código:
add_action( 'init', 'remove_login_access_data' ); function remove_login_access_data() { update_option( 'sg_login_access', array() ); }
Podemos poner este código tanto en el archivo "functions.php" de nuestro theme activo, como en un plugin de funcionalidades. Una vez hayamos accedido, ya podemos borrarlo de nuevo.
5. Registro de actividad
El registro de actividad monitoriza las visitas y logueos en busca de visitantes no autorizados o intentos de fuerza bruta.

El registro de actividad nos muestra las visitas, usuarios y bloqueos.
Podemos bloquear y desbloquear fácilmente direcciones IP o visitantes que parezcan sospechosos y evitar que realicen acciones maliciosas. Podemos ver tres listados:
- Desconocidos: Vemos la actividad de usuarios no logueados.
- Registrados: Vemos la actividad de los usuarios registrados.
- Bloqueados: Vemos las IPs y usuarios bloqueados por exceso de errores de acceso, y podemos desbloquearlos desde el mismo listado.
Considerando que actualmente el plugin solo permite elegir entre 3 y 5 errores máximos antes del bloqueo, es muy probable que algunos usuarios lícitos queden bloqueados por el intento de accesos máximo. En tal caso lo más seguro es que nos contacte indicando el problema. Si es así, sólo debemos desbloquearle desde el listado de la tercera pestaña.
En el caso que nos quedemos bloqueados nosotros mismos por no acordarnos de nuestro password (pasa en las mejores familias), podemos usar este código para limpiar la lista de bloqueos.
add_action( 'init', 'remove_unsuccessfull_attempts_block' ); function remove_unsuccessfull_attempts_block() { update_option( 'sg_security_unsuccessful_login', array() ); }
En este caso, también podemos poner este código tanto en el archivo "functions.php" de nuestro theme activo, como en un plugin de funcionalidades. Una vez hayamos accedido, ya podemos borrarlo de nuevo. Pensemos que no sólo desbloqueará nuestra IP, sino también todas las bloqueadas.
6. Acciones post-hackeo
Finalmente, la última herramienta nos permite realizar de forma fácil y rápida tres acciones muy recomendables "post-hackeo", o sea, en el caso que se haya detectado un posible hackeo o malware.
- Reinstalar todos los plugins del repositorio: Esta opción reinstalará la misma versión de todos los plugins del repositorio que tenemos instalados, para asegurarnos que el atacante no ha modificado el código. Importante saber que esto no funciona con los plugins que tengamos de fuera del repositorio.
- Forzar restablecimiento de contraseña: Esta opción hace que todos los usuarios deban cambiar sus contraseñas en su próximo inicio de sesión. Además, se cerrará la sesión instantáneamente de todos los usuarios logueados.
- Cerrar sesión todos los usuarios: Esta opción cerrará la sesión de todos los usuarios actualmente conectados, sin pedirles que cambien su contraseña cuando accedan de nuevo.
Resumen y conclusión:
El plugin SG Security nos permite reforzar la seguridad de nuestro WordPress a través de buenas prácticas de seguridad activa y pasiva, evitar ataques de fuerza bruta, y llevar un registro de actividad muy simple de usar.
Se trata de una primera versión de un plugin muy básico y simple pero muy prometedor, que cubre justo los aspectos más importantes en cuanto a la seguridad WordPress, de forma fácil y clara.
Tampoco notaremos ningún tipo de recarga en el servidor ni a nivel de rendimiento de la web. Estamos hablando de un plugin de 687kb, frente a las 4,9MG de WordFence, el plugin de seguridad más usado del repositorio.
En general, un plugin muy recomendable para asegurarnos que cumplimos las buenas prácticas básicas en cuanto a seguridad de WordPress. Espero que en próximas versiones añada ciertos detalles, como la opción de ampliar el límite máximo de intentos de acceso, o la opción de añadir whitelists y blacklists de IPs.
Si queréis saber más sobre seguridad WordPress, y de pequeños snippets de código que nos pueden ayudar a tener una web más segura, podéis echarle un vistazo al curso de seguridad en WordPress, en el que entramos en detalle. ¡Abrazo!