¿Quién dijo que las segundas partes no son buenas? ¡Esta es súper interesante y completa! Luego de una primera entrega donde repasamos algunos conceptos de seguridad básicos, se va la segunda con muchos más tips.
WordPress Ninjas Defence
Limitar la cantidad de intentos de acceso al panel administrativo
Para evitar los ataques de acceso por fuerza bruta es recomendable restringir la cantidad de intentos que realiza un usuario para ingresar al panel administrativo y bloquearlos temporalmente luego de una determinada cantidad de intentos fallidos. Esto ayuda a prevenir que alguien descubra nuestra contraseña por prueba y error.
Esto se puede hacer fácil y rápidamente con plugins como Login LockDown y Simple Login Lockdown que se ocupará del control de acceso de tu sitio WordPress permitiendo, entre otras cosas, configurar cuantos intentos de accesos se admitirán y el tiempo de espera antes de permitir un nuevo intento.
Ocultar los errores de acceso
Cuando intentas ingresar a tu sitio WordPress con un usuario o contraseña incorrecta, el formulario de acceso muestra un mensaje de error indicando cual de los datos es el erróneo. Esto brinda información a los usuarios malintencionados sobre que nombres de usuarios son correctos para ingresar al sitio. Se recomienda reemplazar esos mensajes de error por uno genérico y así ocultar dicha información.
Para esto hay que agregar el siguiente código en el archivo functions.php del theme de tu sitio:
add_filter('login_errors', create_function('$a',
"return 'Los datos de acceso son incorrectos.';")
);
Reemplaza donde dice Los datos de acceso son incorrectos por el mensaje que desees mostrar.
Utilizar el modo seguro para ingreso de usuarios
Desde WordPress es posible definir que los accesos de usuarios se realicen en Modo Seguro utilizando el protocolo SSL únicamente para que los datos de acceso viajen encriptados entre el navegador y tu sitio. Es decir que sólo se podrá ingresar con un usuario si utilizando una dirección que comienza con https://.
Para habilitar esta opción simplemente debes agregar en tu archivo wp-config.php la siguiente línea de código:
define('FORCE_SSL_LOGIN', true);
Si además de forzar que los ingresos sean seguros se desea forzar la navegación segura con SSL en toda la sección del panel administrativo, se puede hacer agregando el siguiente código:
define('FORCE_SSL_ADMIN', true);
Para que tengan efecto estos códigos deben ser agregados al archivo de configuración antes de la siguiente línea:
require_once(ABSPATH . 'wp-settings.php');
También debes tener en cuenta que el acceso con modo SSL hace más lenta la navegación en el sitio. Además, si bien MDQSERVER.COM sí lo permite, algunos servidores y planes de hosting no tienen habilitado el acceso a través de SSL, con lo cual asegúrate de tener habilitada esa opción en tu servicio de hosting antes de realizar este paso o contratá hoy mismo un plan con nosotros 😉
Configurar las claves secretas de autenticación
Estas claves se encuentran definidas en el archivo wp-config.php y se utilizan para encriptar de forma más segura tu contraseña y los datos que se transmiten entre el sitio y tu navegador lo que hace más difícil que alguien pueda adivinarlos o acceder a ellos.
Para definir estas claves secretas debes editar las líneas del archivo wp-config.php en donde figura lo siguiente:
define('AUTH_KEY', 'Agrega aquí tu frase de seguridad');
define('SECURE_AUTH_KEY', 'Agrega aquí tu frase de seguridad');
define('LOGGED_IN_KEY', 'Agrega aquí tu frase de seguridad');
define('NONCE_KEY', 'Agrega aquí tu frase de seguridad');
define('AUTH_SALT', 'Agrega aquí tu frase de seguridad');
define('SECURE_AUTH_SALT', 'Agrega aquí tu frase de seguridad');
define('LOGGED_IN_SALT', 'Agrega aquí tu frase de seguridad');
define('NONCE_SALT', 'Agrega aquí tu frase de seguridad');
Donde dice “Agrega aquí tu frase de seguridad” debes colocar la frase o clave que quieras utilizar, se recomienda que sean claves aleatorias de tal forma que no puedan ser adivinadas fácilmente.
Puedes generar las claves aleatorias utilizando el WordPress Key Generator. Simplemente copia las claves que genera y reemplazalas en tu archivo wp-config.php.
Cambiar la ubicación del archivo wp-config.php
En las últimas versiones de WordPress, más específicamente a partir de la versión 2.6, es posible reubicar el archivo wp-config.php UN (1) nivel más arriba del directorio donde se haya creado la instalación para que no sea accedido públicamente.
Por ejemplo, si nuestra instalación está ubicada en /public_html/misitioweb/, entónces el archivo wp-config.php podría moverse de esa carpeta a /public_html/ y WordPress autodetectará en cual de las dos se ubica. Pero por más que se lo coloque en cualquier otra ubicación, WordPress no lo detectará.
Cabe aclarar que el archivo de configuración sólo se puede reubicar en la carpeta superior al raíz de la instalación WordPress y NO en cualquier directorio como se menciona en algunos artículos.
Si lo colocas en cualquier otra ubicación, WordPress no lo detectará e intentará crear uno nuevo a través del asistente de instalación. Esto genera una falla de seguridad más grave ya que quien ingrese primero al sitio web podrá generar una nueva instalación.
Prevenir la inyección de código malicioso
Dependiendo de cómo esté configurado el servidor de hosting, existe la posibilidad de que alguien intente sobreescribir las variables globales de PHP a través de la URL de acceso a algunas de las páginas del sitio. Para evitar esto se pueden filtrar los parámetros de las URL a través del módulo Rewrite, agregando la siguiente configuración en el archivo .htaccess del directorio raíz:
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]
Eliminar los plugins innecesarios
Existen muchos plugins que no se encuentran debidamente probados o que no reciben mantenimiento y actualización para las nuevas versiones de WordPress. Estos pueden generar errores, agujeros o filtraciones de seguridad que pueden ser aprovechados por quienes deseen hacer daño y perjudicarán el funcionamiento del sitio.
Si tienes plugins instalados en tu sitio que no estas utilizando o de los cuales no sabes qué riesgos de seguridad pueden presentar, la mejor opción es desactivarlos y desinstalarlos completamente desde el menú de gestión de Plugins.
Asegurate de que se hayan eliminado todos los archivos de esos plugins en la carpeta /wp-plugins de tu instalación para evitar cualquier filtración posible.
Hasta aquí llega el alcance de la seguridad básica que podría implementar cualquier propietario de un sitio WordPress. En la próxima nota veremos otros tips para restricción de permisos en los archivos, modificación de configuraciones predefinidas durante la instalación y como agregar más seguridad al panel administrativo.
Escrito por: Anita Massacane