Guía de seguridad wordpress
1. Introducción
Wordpress es un sistema de gestión de contenido (CMS, Content Management System), que permite crear sitios web, su popularidad ha logrado que resulte muy atractivo para los “ciberatacantes”, con el fin de explotar vulnerabilidad
2. Asegurando Wordpress
Para mitigar el riesgo de ataques a Wordpress, recomendamos las siguientes buenas prácticas de seguridad.
2.1. Configurar el control de acceso de usuarios
Ingresar al panel de administración de usuarios del sitio web: https://[midominio.gob.bo]/wp-admin/users.php y eliminar a los usuarios administradores que no se usan actualmente:
2.2. Actualizar el core de Wordpress
Ingresar a su sitio web https://[mi-dominio.gob.bo]/wp-admin/update-core.php y hacer click en el botón “Actualizar ahora”.
2.3. Actualizar los plugins de Wordpress
Previamente instalar y activar el plugin WP-Rollback (https://es.wordpress.org/plugins/wp-rollback/) que será útil en caso que la actualización de algún plugin no sea exitosa.
Realizar un backup de la base de datos.
Ingresar al sitio https://[mi-dominio.gob.bo]/wp-admin/update-core.php y seleccionar todos los plugins y presionar el botón “Actualizar plugins”.
En caso de existir un error durante el proceso de actualización, realizar un ROLLBACK (https://[mi-dominio.gob.bo]/wp-admin/plugins.php).
2.4. Habilitar actualizaciones de seguridad automáticas
Ingresar al panel de administración https://[mi-dominio.gob.bo]/wp-admin/plugins.php y seleccionar todos los plugins.
Seleccionar la acción “habilitar actualizaciones automáticas” y ejecutar “Aplicar”
Borrar los themes no usados mediante la URL https://[mi-dominio.gob.bo]/wp-admin/themesphp
2.5. Instalar plugins de seguridad
Instalar y habilitar el plugin “Logonizer” (https://wordpress.org/plugins/loginizer/) para proteger el sitio contra ataques de fuerza bruta.
Instalar y habilitar el plugin “WP Hardening” (https://wordpress.org/plugins/wp-security-hardening/).
En el panel de “WP hardening” https://[mi-dominio.gob.bo]/wp-admin/admin.php? page=wphwp_harden_fixers habilitar todas las opciones (12 en total) menos “Change Login URL”:
En el panel de “WP hardening” https://[mi-dominio.gob.bo]/wp-admin/admin.php?page=wphwp_harden realizar la auditoría de seguridad y corregir todas las observaciones críticas (high), obteniendo como resultado final una pantalla similar a la siguiente:
2.6. Deshabilitar XML-RPC
Wordpress tiene características para interactuar de forma remota con el sitio web, XML- RPC es una función de WordPress que permite la transmisión de datos con HTTP actuando como mecanismo de transporte y XML como mecanismo de codificación.
En la actualidad la funcionalidad del archivo xmlrpc.php ha disminuido considerablemente y su exposición y configuración insegura representa un riesgo en la seguridad del sitio web, provocando las siguientes vulnerabilidades:
- Ataques de fuerza bruta.
- Denegación Distribuida de Servicio.
- XMLRPC pingback.ping.
2.6.1. Restringir el acceso al archivo xmlrpc.php
Para restringir el acceso al archivo xmlrpc.php en apache2, se debe editar el archivo de configuración del sitio web o mediante el archivo .htaccess agregando las siguientes líneas:
<files xmlrpc.php>
order allow,deny
deny from all
</files>
Después reiniciar apache:
systemctl restart apache2
2.6.2. Deshabilitar la función XML-RPC
Si se determina que la función XML-RPC no es necesaria, se recomienda deshabilitarla, para ello se debe editar el archivo wp-config.php y agregar la siguiente línea:
add_filter('xmlrpc_enabled', '__return_false');
Otra opción para deshabilitar la función XML-RPC es instalando y activando el complemento “Disable XML-RPC”.
2.7. Enumeración de usuarios
Wordpress a través de su REST API puede exponer datos sensibles, como es el caso de los usuarios del sistema, si el sitio no está configurado de forma segura.
Para solucionar esta vulnerabilidad se debe actualizar a la versión 4.7.1 o posterior de Wordpress.
Una opción, en caso de no hacer uso del API REST de Wordpress, es deshabilitarlo, para ello se debe agregar las siguientes líneas en el archivo de configuración de wordpress wp-config.php:
add_filter('rest_enabled', '_return_false');
add_filter('rest_jsonp_enabled', '_return_false');