Consejos para securizar la instalación de WordPress #WhitePaper

Consejos para securizar la instalación de WordPress #WhitePaper

La fama alcanzada por WordPress como CMS para la gestión y desarrollo de páginas web, ha traído consigo que también sea el objetivo de infinidad de ataques.

Para evitar posibles hackeos, son muchas las cosas que se pueden llevar a cabo. Debido a la importancia de poder disfrutar de un sitio totalmente seguro, hoy os vamos a dejar algunas recomendaciones que os ayudarán a securizar la instalación de WordPress y mantenerse de esta forma mejor protegidos.

 

Actualizar WordPress, plugins y plantilla utilizada

Empezaremos con un clásico que no debemos olvidar jamás. Es muy importante trabajar siempre con la última versión de WordPress que se haya lanzado al mercado. Con esto nos aseguraremos de que las vulnerabilidades detectadas en versiones anteriores se hayan quedado solucionadas.

Además de mantener actualizado el core de WordPress, también es importante hacer lo mismo con los plugins que tengamos instalados y con el tema que utilicemos para nuestro diseño.

Por suerte, mantener todo esto actualizado no es complicado. WordPress ofrece un sistema de actualizaciones automáticas, tanto para el mismo núcleo de WordPress como para plugins y temas. Eso sí, no os olvidéis de realizar una copia de seguridad de vuestra web antes de actualizar, para poder tener la opción de restaurarla en caso de sufrir algún problema durante el proceso de actualización.

 

No utilizar plugins o temas obsoletos

De igual forma que es importante tener actualizado WordPress, plugins y temas a la última versión disponible, también lo es no utilizar plugins y temas que se hayan quedado obsoletos y que no se sigan actualizando. Además de poder ser incompatibles con la versión de WordPress, pueden ser un coladero para que los hackers realicen sus ataques.

Lo bueno de esto es que el directorio oficial de WordPress retira automáticamente plugins y temas que no se hayan actualizado durante más de dos años, lo que supone una garantía adicional para el usuario.

A lo dicho anteriormente, también hay que añadir la práctica de borrar tanto los plugins como los temas que no estemos utilizando. No sólo ocupan espacio en tu alojamiento sino que suponen una vía de entrada a posibles vulnerabilidades en tu web.

Todo este proceso de borrado lo podemos hacer desde el propio WordPress, tal y como podemos ver en la imagen superior.

 

Cambiar el prefijo de la base de datos

Cuando se realiza una instalación de WordPress desde cero, en uno de los pasos hay que indicar los datos de conexión a la base de datos. Además de indicar el nombre del usuario, nombre de la base de datos y la contraseña, también se nos ofrece la opción de indicar el prefijo de las tablas. Por defecto viene indicado “wp_”, de manera que las tablas quedarán tal que “wp_options”, “wp_comments” o “wp_posts”. Por supuesto, esto es información gratuita que damos a los atacantes, que saben que si se utilizan los valores por defecto, las tablas tendrán ese tipo de nombre.

Para ponérselo más complicado, es recomendable no hacer uso del prefijo por defecto y utilizar letras y números aleatorios. Por ejemplo “sy45x_”.

En el caso de que ya tengamos realizada la instalación, podemos modificar sin problema. Para ello, deberemos editar el archivo “wp-config.php” y cambiar el valor asociado a la variable “$table_prefix”.

PHP
$table_prefix  = 'sy45x_';

 

Además de este cambio, también es necesario modificar el nombre de todas y cada una de las tablas que forman parte de la base de datos. Para ello, desde el phpMyAdmin deberíamos ejecutar las siguientes sentencias SQL, una por cada tabla que tengamos en nuestra base de datos.

SQL
RENAME TABLE wp_links TO sy45x_links;

 

Por último, faltaría buscar en las tablas “sy45x_options” y “sy45x_usermeta” registros que contengan referencias al anterior prefijo “wp_”. Esto lo podemos hacer con las siguientes instrucciones SQL

SQL
SELECT * FROM sy45x_options WHERE option_name LIKE'%wp_%';
SELECT * FROM sy45x_usermeta WHERE meta_key LIKE'%wp_%';

 

Por cada resultado, habría que realizar un Update.

SQL
UPDATE sy45x_options SET option_name = '1a2b3c_user_roles' WHERE option_name = 'wp_user_roles';

 

No utilizar el usuario admin

Otra de las acciones que mejoran la seguridad de WordPress es no hacer uso del usuario admin. Este usuario, si no se indica lo contrario, se crea por defecto durante la instalación. Si estamos instalando desde cero WordPress, podremos indicar un usuario diferente al admin, ya que éste será el primero que probará un hacker para tomar el control de tu web. Por ejemplo, en la imagen que os dejamos a continuación hemos indicado “berto”.

En el caso de que ya lo tengamos creado, lo recomendable es eliminarlo desde la gestión de usuarios de WordPress. Para ello, será necesario que exista al menos otro usuario con rol de administrador.

Tampoco debemos olvidarnos de las contraseñas asignadas a los usuarios. Estas deben ser lo más complejas posibles para evitar problemas de seguridad.

 

Proteger el archivo de configuración de WordPress

El archivo de configuración de WordPress, el fichero “wp-config.php”, contiene información muy sensible sobre el servidor y la configuración del CMS. Para mejorar su seguridad, y evitar que puedan acceder a su contenido, se pueden tomar ciertas medidas.

La primera de ellas es cambiar los permisos del archivo para protegerlos contra escritura. Podemos asignarles permisos 444 o 440. Además de esto, también es recomendable bloquear los accesos no deseados. Esto dependerá del servidor que estemos utilizando.

En el caso de ser Apache, en el archivo .htaccess deberíamos añadir las siguientes líneas.

<Files wp-config.php>

order allow,deny

deny from all

</Files>

 

Si por el contrario, el servidor web utiliza Nginx, las líneas que deberíamos utilizar para bloquear el acceso serían las siguientes.

location /wp-config.php {

deny all;

}

 

Proteger la carpeta de archivos subidos

La carpeta “uploads”, ubicada dentro de “wp-content” de la instalación de WordPress, es donde se suben todos los archivos desde el administrador del CMS. Este directorio es el más susceptible de sufrir ataques, de modo que es muy importante protegerlas para evitar que se ejecuten desde su interior scripts maliciosos.

Aunque WordPress, por defecto, no permite la subida de archivos ejecutables en el interior de esta carpeta, los hackers utilizan ciertas técnicas para saltarse esta protección. Para garantizar la seguridad, debemos aplicar una protección extra, definiendo expresamente el tipo de extensiones de los archivos que se podrán subir. Al igual que en el punto anterior, tenemos dos opciones, según utilicemos Apache o Nginx.

En el caso de Apache, las líneas a añadir en el fichero .htaccess serían las siguientes:

<Files ~ «.*\..*»>

Order Allow,Deny

Deny from all

</Files>

<FilesMatch «\.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls)$»>

Order Deny,Allow

Allow from all

</FilesMatch>

 

En el caso de Nginx, en su archivo de configuración añadiríamos lo siguiente:

location ~ .*\..* {

deny all;

}

location ~ \.(jpg|jpeg|jpe|gif|png|bmp|tif|tiff|doc|pdf|rtf|xls)$ {

allow all;

}

 

En nuestro ejemplo hemos indicado algunas extensiones, pero podrían ser más o menos, según nuestras necesidades.

 

Limita los intentos de login

Una de las principales formas de atacar WordPress es hacerlo mediante el sistema de fuerza bruta. Este ataque consiste en ir probando miles de usuarios y contraseñas en tu login hasta dar con una correcta. Sin embargo, es posible evitar este tipo de ataques de forma muy sencilla y es limitando el número de intentos para loguearse. Si se alcanza ese número de intentos erróneos, el acceso se bloquearía durante un determinado tiempo.

Para añadir esta limitación, podemos utilizar varios plugins aunque Loginizer puede funcionar bastante bien. La idea es configurarlo con un número bajo de intentos pero que te deje maniobrar por si nos equivocamos. Un valor entre tres y cinco podría ser adecuado.

Dentro de este apartado, también sería recomendable inhabilitar el registro de usuarios para evitar que usuarios con malas intenciones aprovechen alguna vulnerabilidad para obtener permisos extras. Para desactivar esta opción debemos hacerlo desde la opción “Generales” que está dentro de “Ajustes” en el menú de la administración.

Por último, en lo que al apartado de login se refiere, no olvidéis añadir algún sistema de comprobación humana como reCaptcha que evite accesos indeseados de máquinas automáticas. Hay mucho plugins para ello, por ejemplo Login No Captcha reCAPTCHA.

 

Instala un plugin de seguridad

En el repositorio de plugins de WordPress podemos encontrarnos plugins especializados en proteger WordPress. La mayoría de ellos contienen ajustes que evitan ataques por fuerza bruta, inyección de código o modificaciones de archivos, incluyendo sistemas de avisos ante cualquier posible ataque. WordFence y iThemes Security son dos de estos plugins.

 

Deshabilitar XML-RPC

WordPress incluye en su core el archivo “xmlrpc.php” que ofrece ciertas funcionalidades al CMS como puede ser la posibilidad de conectar la aplicación WordPress para iOS o Android, el uso de editores offline o algunos sistemas de sindicación de contenidos. El problema es que este archivo también deja abierta una vía de posibles ataques. En el caso de que tenga muy claro que nunca utilizarás estas funcionalidades, lo más recomendable es que bloqueases el acceso. Veamos con hacer esto tanto en Apache como en Nginx.

En el servidor Apache se añadiría las siguientes líneas en el archivo .htaccess.

<Files xmlrpc.php>

Order Deny,Allow

Deny from all

</Files>

 

Si se utilizase Nginx, el código que habría que añadir sería el siguiente.

location /xmlrpc.php {

deny all;

}

 

Esconder la versión de WordPress

Conocer la versión que utiliza un sitio web desarrollado con WordPress puede ser de gran ayuda para los atacantes, ya que si se trata de una versión antigua, podría tener vulnerabilidades conocidas por ellos para esa determinada versión. Debido a esto, es recomendable esconder la versión que utiliza la instalación. Para ello, en el archivo “functions.php” del tema que estemos utilizando, deberíamos añadir el siguiente código PHP.

PHP
function wp_version_remove_version() {
    return '';
}
add_filter('the_generator', 'wp_version_remove_version');

 

De esta forma, la versión utilizada ya no se mostrará en el encabezado del código.

Desactivar la opción de edición de archivos desde la administración

WordPress da la opción de editar los archivos del tema desde su administración, algo que puede suponer un importante problema si alguien consigue acceder a nuestro sitio. Para evitar que se modifique el código sin nuestro consentimiento, es muy buena práctica desactivar la opción de editar archivos desde la administración. Para conseguir esto, bastaría con añadir la siguiente línea dentro del archivo “wp-config.php” de nuestra instalación.

PHP
define('DISALLOW_FILE_EDIT', true);

 

Como hemos podido ver a lo largo de nuestro White Paper, hay numerosas maneras de mejorar la seguridad de la instalación de nuestro WordPress. Ya depende de cada uno aplicar aquellas que considere más oportunas para él.

 

 

 

Comentarios

Déjanos un comentario o cuéntanos algo.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *