Mejorar seguridad de WordPress

La seguridad de un blog en WordPress es muy importante debido a los agujeros de seguridad que este puede presentar. Ya que constantemente se descubren nuevos errores y agujeros de seguridad, se requiere una gran atención para que un blog esté correctamente securizado.

 

A continuación vamos a listar algunos consejos que puedes aplicar para que tu blog sea más seguro

  1. Mantener WordPress actualizado
  2. Habitualmente en la última actualización de WordPress vienen corregidos varios problemas de seguridad de éste. Si no actualizas WordPress a la última versión de forma regular, los usuarios mal intencionados pueden aprovechar los agujeros de seguridad de la versión antigua de WordPress que peudas tener instalada, y así entrar fácilmente a tu blog.

  3. Hacer Backups de la base de datos y de los archivos web periódicamente

    Hacer un Backup (Copia de seguridad) de tu Base de Datos y tus archivos es muy importante para prevenir que, en caso de un ataque, se puedan perder.

    Un buen plugin para gestionar y automatizar los respaldos de tu base de datos es WP-DBManager. Este creará automáticamente el backup de la base de datos y lo enviará al correo que indiques en la configuración del plugin.

  4. Utilizar una contraseña compleja

    Un error habitual es utilizar un nombre u otro dato personal en la contraseña, o contraseñas demasiado sencillas (Por ejemplo: 1234, casa, etc…). Una contraseña segura es básica para un usuario con privilegios de administrador, por eso algunos puntos importantes en el momento de elegir una contraseña segura para tu blog, o cualquier otro acceso que precise de buena seguridad, serían que:

    • La contraseña sea alfanumérica, es decir que contenga tanto números como letras.
    • Tenga tango mayúsculas como minúsculas.
    • Contenga caracteres especiales (¬ ! #$%…)

    Truco

    Puedes utilizar generadores de contraseñas aleatorias, como por ejemplo el que puedes encontrar en el siguiente enlace: https://identitysafe.norton.com/password-generator/ Una vez dentro de la página tan solo tienes que marcar las diferentes opciones para generar tu contraseña, y hacer clic en el botón “Generate Password(s)“.

  5. Asignar los permisos correctos (CHMOD) a las carpetas de tu servidor / alojamiento
  6. Una opción para ello sería utilizar el plugin WP Security Scan. Este plugin te ayudará a saber si tienes los permisos más seguros para tus carpetas de WordPress en el servidor / alojamiento.

  7. Evitar la exploración de determinadas carpetas
  8. Otra norma básica para la correcta securización de WordPress, sería prohibir que tus visitantes puedan explorar las carpetas del sitio.

    Por ejemplo deberías evitar que si escriben http://www.tunombrededominio.com/wp-admin/ se vean todos los archivos en esa carpeta.

    Para evitar esto solo debes añadir la siguiente línea de código en el archivo .htaccess de la carpeta raíz de tu servidor:

    Archivo: .htaccess

    Options All -Indexes

    Información adicional

    Puedes encontrar más información sobre este punto en los siguientes artículo de nuestra base de conocimento:

    Proteger directorios con password y .htaccess
    Restringir acceso wp-admin en WordPress

  9. Utilizar el archivo robots.txt para deshabilitar el acceso
  10. El archivo robots.txt se utiliza para indicarle a los buscadores, que carpetas de tu sitio no deseas que explore el robot del buscador.

    Por ejemplo, deberías desactivar la búsqueda en las carpetas “/plugins” y “/wp-admin“.

    Para ello solo tienes que copiar el siguiente texto en un archivo del bloc de notas, nombrarlo “robots.txt” y subirlo a la carpeta raíz de tu sitio de WordPress:

    Archivo: robots.txt

    #
    User-agent: *
    Disallow: /cgi-bin
    Disallow: /wp-admin
    Disallow: /wp-includes
    Disallow: /wp-content/plugins/
    Disallow: /wp-content/cache/
    Disallow: /wp-content/themes/
    Disallow: */trackback/
    Disallow: */feed/
    Disallow: /*/feed/rss/$
    Disallow: /category/*

  11. Proteger la carpeta “/plugins”
  12. Los plugins que utiliza pueden ofrecer mucha información valiosa sobre su sitio a un usuario malicioso, así que es mejor ocultarlos. Para ello solo tienes que crear un archivo en el Bloc de Notas sin ningún contenido, guardarlo como index.html, y luego subir este archivo a la carpeta “/wp-content/plugins/“.

  13. Revisar los comentarios

    Los usuarios que se dedican a realizar spam llenan los blogs de comentarios si no existe una moderación o un filtro anti-spam. Estos comentarios spam pueden contener enlaces a sitios potencialmente dañinos, los cuales pueden afectar a tus lectores, e incluso afectar al blog.

    Estos son algunos de los plugins que puedes instalar para evitar el spam en los comentarios de tu blog:

    • Akismet: Plugin para la protección anti-spam. Este revisa los comentarios con el servicio web de Akismet para ver si parece spam o no, y te facilita la opción de indicar si ese comentario es spam o no.
    • Math Comment Spam Protection: Plugin que le pregunta al lector antes de publicar el comentario una simple pregunta matemática. Esto sirve para probar que el visitante es humano y no un robot de spam.
    • reCAPTCHA: Este plugin utiliza el método de ingresar los caracteres que ves en la imagen (Captcha) para comprobar si el visitante es humano o un robot de spam.
  14. Cambiar el prefijo de la Base de Datos
  15. Para hacer que tu base de datos sea más segura, es muy importante cambiar el prefijo por defecto de WordPress, ya que especifica el prefijo “wp_” en todas las tablas, y un usuario con los suficientes conocimientos podría utilizar este agujero de seguridad.

    El primer paso sería cambiar el prefijo en el archivo wp-config.php en la siguiente linea:

    Archivo: wp-config.php

    $table_prefix  = ‘nuevoprefijo_';

    Luego deberás cambiar el nombre de las tablas de la base de datos con el nuevo prefijo. Para esto puedes ejecutar la siguiente sentencia SQL en tu base de datos:

    RENAME TABLE wp_comments tonuevoprefijo_comments;
    RENAME TABLE wp_links to nuevoprefijo_links;
    RENAME TABLE wp_options to nuevoprefijo_options;
    RENAME TABLE wp_postmeta to nuevoprefijo_postmeta;
    RENAME TABLE wp_posts to nuevoprefijo_posts;
    RENAME TABLE wp_terms to nuevoprefijo_terms;
    RENAME TABLE wp_term_relationships to nuevoprefijo_term_relationships;
    RENAME TABLE wp_term_taxonomy to nuevoprefijo_term_taxonomy;
    RENAME TABLE wp_usermeta to nuevoprefijo_usermeta;
    RENAME TABLE wp_users to nuevoprefijo_users;

    Después deberás ejecutar la siguiente sentencia SQL para que WordPress funcione correctamente:

    T option_name = REPLACE(option_name, 'wp_','nuevoprefijo_');
    UPDATE t45s4w_usermeta SET meta_key = REPLACE(meta_key, 'wp_','nuevoprefijo_');

  16. Restringe el acceso de archivos de la carpeta /wp-content
  17. La carpeta wp-content contiene los archivos del theme de WordPress, las imágenes que ha subido y los plugins. WordPress no accede a estos archivos vía HTTP. Las únicas peticiones desde un explorador web deberían ser a archivos de imagen, javascript, css y xml.

    Por esta razón es conveniente restringir la carpeta “wp-content” para que solo se permita ver esos tipos de archivo.

    Para restringir este acceso, crea un archivo en el Bloc de Notas, guárdalo como .htaccess, añádele las siguientes líneas, y súbelo a la carpeta “wp-content” de tu instalación de WordPress:

    Archivo: .htaccess

    Order deny,allow
    Deny from all
    <Files ~ “.(php|lock|xml|css|jpe?g|png|gif|js)$”>
    Allow from all
    </Files>

  18. Bloquear el acceso por IP a la carpeta wp-admin
  19. Puede limitar el acceso a ciertas direcciones IP para que no puedan entrar a la carpeta “wp-admin“, excepto las IP’s que quieras.

    Para esto debes crear un archivo “.htaccess” en la carpeta /wp-admin con las siguientes líneas:

    Archivo: .htaccess

    AuthUserFile /dev/null
    AuthGroupFile /dev/null
    AuthName “Access Control”
    AuthType Basic
    order deny,allow
    deny from all
    allow from 000.000.000.000

    Recuerde reemplazar 000.000.000.000 por la IP a la cual desea permitir el acceso.

  20. Protege el archivo wp-config.php
  21. El archivo wp-config.php contiene toda la información que WordPress necesita para acceder a tu base de datos. Proteger este archivo es muy importante para la seguridad de tu sitio.

    Para esto, tan solo deberás añadir las siguientes líneas de código al archivo .htaccess de la carpeta raíz del servidor de WordPress, para prevenir que cualquier robot o persona pueda entrar directamente a este archivo:

    Archivo: .htaccess

    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

  22. Utilice las claves secretas de autenticación en wp-config.php
  23. Estas claves secretas son usadas para que tu contraseña sea más difícil de averiguar mediante los ataques tipo “brute force”. Simplemente visita WordPress Key Generator y copia las 8 claves en las siguientes líneas del archivo wp-config.php:

    Archivo: wp-config.php

    define(‘AUTH_KEY’, ‘Clave auto-generada’);
    define(‘SECURE_AUTH_KEY’, ‘Clave auto-generada’);
    define(‘LOGGED_IN_KEY’, ‘Clave auto-generada’);
    define(‘NONCE_KEY’, ‘Clave auto-generada’);
    define(‘AUTH_SALT’, ‘Clave auto-generada’);
    define(‘SECURE_AUTH_SALT’, ‘Clave auto-generada’);
    define(‘LOGGED_IN_SALT’, ‘Clave auto-generada’);
    define(‘NONCE_SALT’, ‘Clave auto-generada’);

  24. Mueve el archivo wp-config.php
  25. Desde WordPress 2.6 es posible mover la ubicación del archivo “wp-config.php” de la carpeta raíz de la instalación de WordPress haciendo más difícil un acceso malintencionado. Simplemente debes mover tu archivo “wp-config.php” a cualquier carpeta que se encuentre en la carpeta raíz de tu instalación, y WordPress, si no puede encontrarlo en la carpeta raíz, automáticamente buscará este archivo por todas las demás carpetas.

  26. Cambia el nombre del usuario “admin
  27. Hacer esto dificultará el acceso malintencionado a tu blog a usuarios maliciosos. Para ello tan solo tienes que ejecutar la siguiente sentencia SQL en tu base de datos (Recuerda indicar tu propio usuario donde pone “NuevoUsuario):

    UPDATE wp_users SET user_login = 'NuevoUsuario' WHERE user_login ='admin';

  28. Protege tu blog de inyecciones de código
  29. El siguiente código protegerá tu blog de inyecciones de código que modifican las variables GLOBALS y _REQUEST de PHP. Pega esto en el archivo .htaccess principal:

    Archivo: .htaccess

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    RewriteRule ^(.*)$ index.php [F,L]

  30. No mostrar la versión de WordPress
  31. Mostrando la versión de WordPress puedes estar ofreciendo información a usuarios maliciosos sobre si tu blog se encuentra actualizado o no. Si es una versión antigua, ellos pueden utilizar los errores que tenga dicha versión y apoderarse del site.

    WordPress automáticamente publica este dato en su theme. La siguiente línea de código le dice a WordPress que no publique este dato, y tan solo es necesario copiarla en el archivo functions.php de tu theme:

    Archivo: functions.php

    <?php remove_action(‘wp_head’, ‘wp_generator’); ?>

  32. Limita los intentos de acceso al Panel de Administración de WordPress
  33. A veces un usuario malintencionado puede creer que sabe tu contraseña, o ha desarrollado un script para averiguarla. En este caso necesitarías limitar la cantidad de veces que un usuario puede equivocarse al ingresar los datos de acceso. Puedes hacer esto fácilmente con el plugin Login Lockdown, que bloqueará a un usuario por X tiempo si ha ingresado mal los datos después de X veces.

  34. Utiliza un acceso seguro
  35. Los usuarios de WordPress que disponen de un certificado SSL (SSL es un protocolo criptográfico que blinda la comunicación entre redes) habilitado para su dominio, por seguridad, deberían utilizar este canal encriptado para acceder al Panel de Administración.

    Para esto solo tienes que poner el siguiente código en el archivo wp-config.php:

    Archivo: wp-config.php

    define(‘FORCE_SSL_ADMIN’, true);

  36. No muestres errores de acceso
  37. Cuando se indica un usuario o contraseña incorrectps, sale un mensaje de error en la página de acceso indicando que no se ha podido acceder por usuario o contraseña incorrecto/s. Por lo tanto en caso de que un atacante ingrese un dato correcto, el mensaje de error le ayudará a identificarlo. Por ello, es recomendable que elimines completamente ese mensaje de error.

    Para hacerlo tan solo debes incluir el siguiente código en el archivo functions.php de tu theme:

    Archivo: functions.php

    add_filter(‘login_errors’,create_function(‘$a’, “return null;”));

  38. Elimina los plugins innecesarios
  39. Siempre es aconsejable eliminar los plugins que no se encuentren en uso, pues pueden crear agujeros de seguridad que un atacante puede aprovechar fácilmente.

Artículo extraído del blog Trazos Web

Para comentar sobre este artículo, rellena el formulario. Los campos marcados con un asterisco (*) son obligatorios.


*