8 Tips para mejorar la seguridad de tu WordPress
WordPress es un sistema de gestión de contenidos (CMS) que nos permite crear y mantener un sitio web. Cuenta con una gran experiencia y dispone de multitud de plantillas y plugins que aumentan el nivel de personalización. Como todos los CMS, cuentan con una serie de…
WordPress es un sistema de gestión de contenidos (CMS) que nos permite crear y mantener un sitio web. Cuenta con una gran experiencia y dispone de multitud de plantillas y plugins que aumentan el nivel de personalización.
Como todos los CMS, cuentan con una serie de parámetros relacionados con la seguridad del sitio. Estos parámetros no son suficientemente seguros en su estado predeterminado y han de ser modificados con el fin de prevenir cualquier tipo de ataque informático.
A continuación, pasamos a detallaros 8 apartados que en Flat 101 cuidamos y tenemos en cuenta para tener las mejores páginas web y sobre todo, las más seguras.
1. Cambiar el usuario administrador que viene por defecto
Durante el proceso de instalación de WordPress debes decidir el nombre de usuario. A este usuario se le otorgaran por defecto todos los permisos, es por eso que tendrás que tener un especial cuidado a la hora de elegirlo. En un principio se te ofrece un usuario por defecto que no debes utilizar. Para mayor seguridad, tienes que escoger un nombre de usuario propio y que por supuesto no sea genérico (admin, Admin, root, user).
Un modelo de nombre para utilizar en tu sitio web es el nombre de tu empresa + los 4 últimos dígitos del CIF (por ejemplo: FLAT101_1234).
2. Utilizar una contraseña fuerte
La mayoría de personas tiene dificultad a la hora de recordar todas las contraseñas que se deben tener presentes en el día a día. Por ello utilizan contraseñas tan simples como “123456” o “0000”. Estas contraseñas son fáciles de recordar, pero también son fáciles de adivinar.
Esto supone un gran riesgo para la seguridad de nuestro sitios, por eso, desde Flat 101 te recomendamos que configures tu contraseña con caracteres especiales, una extensión de entre 8 y 12 caracteres, valores alfanuméricos y mayúsculas y minúsculas utilizadas de manera alternativa. Esto será muy útil de cara a crear una contraseña robusta y difícil de hackear.
Un ejemplo de contraseña segura sería “F+l+a_T<101”.
3. Cambiar la URL del panel de administración
Una medida que casi nadie utiliza es cambiar la dirección para acceder al panel de administración. Por defecto, WordPress tiene la conocidísima URL compuesta por la dirección del hosting/wp-admin.
En caso de modificar esta dirección conseguiremos que, si intentan acceder a nuestro sitio web -ya sea a través de bots o probando distintas direcciones- sea casi imposible que den con la dirección correcta. Esto supondrá una mejora notable de la seguridad del sitio.
4. Actualizar a las últimas versiones tanto de WordPress como de los plugings que se hayan instalado
Esto es importante, ya que en cada actualización se implementan mejoras de seguridad por parte del desarrollador. Esto dificulta la entrada de softwares maliciosos al panel de WordPress.
5. Realizar copias de seguridad
Si realmente te importa la seguridad de tu sitio web, debes de tener siempre una copia de seguridad de tu base de datos. Esto no impedirá que te hackeen, no obstante conseguirás reponer tu sitio web en cuestión de minutos de una forma rápida y sencilla, poniendo a disposición de los usuarios la misma información que había en la web antes de sufrir el ataque a tus servidores.
6. Cambiar el prefijo de las tablas de base de datos
La base de datos es la parte fundamental de un sitio web y por tanto es muy importante protegerla, no solo realizando copias de seguridad para poder reponerla en caso de que fuera necesario, sino también cambiando el prefijo de las tablas para impedir que posibles atacantes puedan obtener los datos que contienen.
- Servicio de base de datos: hace que el acceso a la base de datos solo sea posible desde el servidor o instancia donde este el WordPress instalado (no abierto).
- Usuario de base de datos: permite que “wp-config” no sea root, sino uno solo con acceso al esquema del WordPress.
7. Banear a los posibles hackers
Para mantener la seguridad en tu sitio web basado en WordPress te recomendamos instalar un sistema que cuente los intentos para hacer login en la pagina “wp_login.php”.
En caso de detectar un elevado numero de inicios de sesión desde la misma IP, sería recomendable banear esa dirección, ya sea por tiempo limitado (30 minutos, 50 minutos, 1 hora…) o de forma permanente.
Así evitaremos que un bot pueda adivinar el usuario y la contraseña mediante un abecedary or dictionary attack. Estos ataques consisten en intentar descifrar usuarios y contraseñas probando con numerosos intentos y basando estos en palabras de un diccionario de claves o contraseñas anteriormente utilizadas que hayan podido obtener en ataques anteriores.
8. Content Security Policy (CSP)
Consiste en agregar a la página web una cabecera HTTP y darle unos valores concretos para controlar los recursos que el usuario puede cargar para esa página. Sirven como una capa de seguridad adicional que contribuye a prevenir y reducir ciertos ataques como los Cross Site Scripting (XSS) y la inyección de datos.
El Cross Site Scripting consiste en ejecutar scripts maliciosos en el navegador, ya que dicho navegador confía en la fuente del contenido aun cuando este no proviene de donde se supone que debería provenir. añadir la cabecera hará que intentar el XSS no sea tan fácil para el hacker que intente realizarlo. También sirve para reducir los ataques de inyección de datos, los cuales consisten en insertar código propio en un sitio web para acceder a datos protegidos del sitio web al que se ataca.
Al implementar las cabeceras es recomendable separar dichas reglas entre el frontend y el backend, incluyendo la página de login.
Para trabajar con las cabeceras, WordPress nos ofrece un filtro (wp_headers) y la acción de poder enviarlas (send_headers), si lo que queremos es que funcione en todas las páginas (tanto en frontend como en el backend), lo que debemos usar es la función de PHP header() desde dentro del hook WordPress init.