Consejos de Seguridad en wordpress 2ª parte

<<- Primera parte

Si te interesa llegar un poco mas lejos en el tema de seguridad de tu pagina hoy vamos a ver algunas lineas de código que se pueden añadir a ciertos archivos para dar un paso más hacia la seguridad de vuestro sitio WordPress.

1. Protección de archivos sensibles:

Hay ciertos archivos que una vez completada la instalación de la pagina y los plugins ningún proceso debería modificar, para evitarlo basta con añadir unas lineas al archivo .htaccess que encontraremos en la raíz de nuestro sitio.

<files .htaccess>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>

Si quisierais bloquear el acceso a modificar cualquier otro archivo por los motivos que sean, basta con repetir el código cambiando el nombre del archivo, por ejemplo tras la instalación podemos bloquear los archivos install.php y setup-config.php.

2. Bloquear php en carpetas:

Varias carpetas de worpress no necesitan ejecutar php, worpress ya viene con un bloqueo de subida para archivos php, pero es conveniente evitar la posibilidad de que se pueda ejecutar código php en ellas, para ello debemos crear un archivo .htaccess en las carpetas /wp-content/uploads, /wp-content/plugins y /wp-content/themes con el siguiente código:

<files *.php>
deny from all
</files>

3. Deshabilitar la edición de ficheros en wordpress

Esto es una medida de seguridad para el panel de administración, evitando que cualquier intruso o usuario autorizado modifique los ficheros de nuestra pagina.

Esta vez tendremos que poner la siguiente linea en el archivo wp-config.php:

define(‘DISALLOW_FILE_EDIT’,TRUE);

Si quieres evitar la instalación de nuevos plugins bastaría con lo siguiente.

define(‘DISALLOW_FILE_MODS’,TRUE);

En el momento que necesites poder instalar plugins o editar archivos desde wordpress solo habría que cambiar el true por false.

4 Forzar el uso de https en la pagina:

Si todavía no tienes un certificado de seguridad, deja de leer y consigue uno en letsencrypt puedes conseguir uno de forma gratuita, en caso de tenerlo solo hay que añadir al archivo wp-config.php las siguientes lineas

define(‘FORCE_SSL_LOGIN’,TRUE);
define(‘FORCE_SSL_ADMIN’,TRUE);

5. desactivar sugerencias de sesión:

WordPress indica si el usuario y la clave no son correctos, esto da información a posibles intrusos, confirmandole si un usuario es correcto por ejemplo, para desactivarlo tenemos que poner en el archivo functions.php:

function no_wordpress_login_errors(){
return ‘Mensaje que quieras en este espacio’;
}
add_filter(‘login_errors’,no_wordpress_login_errors);

6. Cabeceras de seguridad:

Aquí os dejo diferentes lineas para mejorar varios puntos de seguridad.

Bloquear que se abran frames de nuestra pagina en otros dominios:

Header set X-Frame-Optins SAMEORIGIN

Si quisiéramos que alguna pagina en concreto pueda, podemos añadir:

Header set X-Frame-Optins “ALLOW-FROM https://dominio.extension”

Para protegernos de ataques xss en navegadores antiguos:

Header set X-XSS-Protection “1;mode=block”

Si queremos bloquear scripts externos a nuestra pagina (ciertos plugins y apis no funcionaran):

Header setContent-Security-Policy “script-src ‘self’ ;”

Podemos añadir dominios permitidos ampliando a:

Header setContent-Security-Policy “script-src ‘self’ www.google-analytics.com;”

7. Elimina la información de version de wordpress:

Reducir la información innecesaria que recibe un visitante siempre es bueno, asi que vamos a ocultar la version de nuestro wordpress añadiendo a functions.php:

function SG_remove_wp_version_strings($src){
global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY),$query);
if (!empty($query[‘ver’])===$wp_version){
$src=remove_query_arg(‘ver’,$src);
}
return$src;
}
add_filter(‘script_loader_src’,’SG_remove_wp_version_strings’);
add_filter(‘style_loader_src’,’SG_remove_wp_version_strings’);
function SG_remove_wp_generator(){
return “;
}
add_filter(‘the_generator’,’SG_remove_wp_generator’);

También podemos evitar que se lean los ficheros de wordpress para ocultar mas información, editando el archivo .htaccess:

<files readme.html>
Order allow, deny
deny from all
</files>
<files license.txt.php>
Order allow, deny
deny from all
</files>

Otra información que podemos ocultar es la versión de php que estamos utilizando, en este caso añadimos a .htaccess:

Header unset X-Powered-by

Y  ya que estamos ocultamos de paso la información sobre el servidor:

ServerSignature Off

8. Desactivar el reporte de errores

En el reporte de errores aparece información sensible como rutas, nombres de variablets, etc…
Para desactivarlos añadimos a wp-config.php:

error_reporting(0);
ini_set(‘display_errors’,0);

Espero que os sirvan algunas de estos añadidos al código para mejorar la seguridad en WordPress, después de cada cambio hay que comprobar que la pagina sigue funcionando correctamente ya que algunos de estos cambios pueden interferir con el funcionamiento de vuestra pagina.