[ Introducción a la seguridad de WordPress]

Estadísticas recientes indican que más del 29% de los administradores de sitios web usan WordPress. Pero tanta popularidad tiene un precio. WordPress es a menudo el blanco de hackers y spammers que buscan aprovecharse en su beneficio de sitios web que no son lo suficientemente seguros.

Hablar de seguridad en WordPress significa hablar de reducir los riesgos, no de eliminarlos. Siempre va a haber riesgos, y la seguridad es, por tanto, un proceso continuo que requiere evaluaciones frecuentes de los vectores de ataque, con el objeto de minimizarlos, no de eliminarlos.

El objetivo de esta guía es educar a los administradores de sitios web WordPress en las técnicas de seguridad básicas y en el plan de acción a seguir para mejorar la seguridad del sitio web y reducir los riesgos de una vulnerabilidad.

 

Copias de seguridad de WordPress | WPFIX

[ 1 Vulnerabilidades de Software]

El equipo de seguridad de WordPress trabaja duro para proporcionar actualizaciones y parches importantes de seguridad sobre las vulnerabilidad detectadas. Al instalar regularmente las últimas versiones del núcleo y de las extensiones principales de WordPress, puedes tener la seguridad de que tu sitio web posee todos los parches de seguridad disponibles.

Sin embargo, el uso de plugins y temas de terceros expone a los sitios web a nuevas amenazas de seguridad.

[ 1.1 Auditando plugins y temas]

Los plugins y los temas que utilizas en tu sitio web pueden quedarse obsoletos, o incluir errores en el código que supongan serios riesgos de seguridad.

Para proteger tu WordPress, es recomendable que realices regularmente una auditoría a los plugins y a los temas que utilice tu sitio web.

Evalúa la seguridad de tus plugins

Puedes evaluar la seguridad de los plugins de WordPress verificando algunos indicadores importantes:

    • ¿Hay muchos usuarios que hayan instalado el plugin?
    • ¿Hay muchas reseñas de los usuarios, y la calificación promedio de las mismas es alta?
    • ¿Los desarrolladores están dando soporte al plugin, y lanzan actualizaciones o parches de seguridad frecuentemente?
    • ¿El proveedor del plugin define los Términos y condiciones de uso o una Política de privacidad?
    • ¿El proveedor incluye una dirección de contacto físico en los Términos y condiciones de uso o en alguna página de contacto?

Lee atentamente los Términos y condiciones de uso. El plugin puede incluir extras no deseados que el autor no quiere hacer muy visibles en la página de inicio desde donde se puede obtener el plugin. Si el plugin no cumple con alguno de los requisitos mencionados, o si ha cambiado de propietario antes de la última actualización, deberías buscar una solución más segura.

A veces, usuarios maliciosos compran un plugin para añadir funcionalidades extras no deseadas o maliciosas. Ten cuidado al instalar plugins que han cambiado recientemente de propietario antes de la última actualización.

Elimina plugins y temas que no utilizas

Cuando se trata de plugins que no se utilizan, menos es más. Si almacenas plugins que no utilizas en tu  WordPress, aumentas las probabilidades de una vulnerabilidad (incluso si están deshabilitados y no se usan de forma activa en tu sitio web).

¿No estás usando ese plugin? Pues entonces elimínalo de tu WordPress.

[ 1.2 Actualizaciones]

Actualizando WordPress

Cuando haya disponible una nueva actualización de WordPress, se te notificará en el menú principal Dashboard > Actualizaciones.

Deberías aplicar las actualizaciones tan pronto como estén disponibles. Si Inicias sesión con frecuencia en tu sitio web, te asegurarás de estar al tanto de las actualizaciones a medida que se publican. Si no puedes actualizar tu sitio web por alguna razón, valora la posibilidad de usar un firewall web (WAF, por sus siglas en inglés, Web Application Firewall) para poner un parche el problema y minimizar el riesgo.

Configurar actualizaciones automáticas en WordPress:

    1. Inicia sesión en tu servidor a través de SFTP o SSH.
    2. Busca el archivo wp-config.php. Suele encontrarse en el directorio raíz public_html.
    3. Agrega el siguiente fragmento de código: define (‘WP_AUTO_UPDATE_CORE’, true);

Aplicar actualizaciones de forma manual en WordPress:

    1. Inicia sesión en su servidor a través de SFTP o SSH.
    2. Elimina manualmente los directorios wp-admin y wp-includes.
    3. Reemplaza los archivos principales de los directorios raíz, /wp-admin/ y /wp-includes/ por las versiones actualizadas del repositorio oficial de WordPress.
    4. Inicia sesión en WordPress como administrador. Es posible que veas una notificación para actualizar la base de datos (ver imagen).
    5. Haz clic en Update WordPress Database.
    6. Una vez que la base de datos se haya actualizado, ve a Dashboard > Actualizaciones.
    7. Aplica todas las actualizaciones restantes.
    8. Accede a tu sitio web para verificar que está operativo.

Seguridad WordPress

Algunas actualizaciones pueden dañar tu sitio web. Asegúrate de verificar que tu sitio está en pleno funcionamiento después de aplicar una actualización.

Los usuarios avanzados pueden consultar la guía del Codex de WordPress sobre cómo actualizar usando subversion.


 

PRECAUCIÓN:
Antes de actualizar tu sitio web a la última versión de WordPress, es recomendable que tomes las siguientes precauciones:

    1. Haz una copia de seguridad de tu sitio web (especialmente, del contenido personalizado).

    2. Revisa las notas de la actualización para identificar si los cambios pueden tener algún impacto negativo en tu sitio web.

    3. Prueba la actualización en una copia de pruebas de tu sitio web, para verificar que tu tema, plugins y otras extensiones son compatibles con la última versión.

 

Actualizando Plugins

Si el plugin procede de un sitio web de terceros, es posible que WordPress no sea capaz de actualizarlo de forma automática. En este caso, tendrás que actualizar el plugin manualmente utilizando FTP, o bien mediante algún archivo actualizador (en caso de que se incluya con la actualización del plugin).

Actualizar plugins de forma manual en WordPress:

    1. Comprueba la compatibilidad entre el plugin y tu versión actual de WordPress.
    2. Descarga la última versión del plugin desde una fuente oficial y guárdala en tu equipo local.
    3. Comprueba si el desarrollador o proveedor indican instrucciones adicionales o especiales para la actualización del plugin. Si no existen, continúa con los pasos 4-9.
    4. Inicia sesión en tu servidor a través de SFTP o SSH.
    5. Navega hasta /wp-content/plugins/ y descarga esta carpeta a tu equipo para usarla como copia de seguridad.
    6. Localiza el directorio del plugin que deseas actualizar y elimínalo desde FTP.
    7. Sube la última versión del plugin en la misma ubicación.
    8. Inicia sesión como administrador en WordPress y haz clic en Dashboard > Plugins.
    9. Localiza el plugin que acabas de actualizar en la lista de plugins y haz clic en Activar.

Actualizando Temas

Si no utilizas temas padre/hijo para guardar tus personalizaciones, deberás añadir tus personalizaciones manualmente cada vez que actualices el tema.

Para actualizar temas de forma manual en WordPress:

    1. Conéctate a tu sitio web a través de FTP, ve a /wp-content/themes/ y descarga la carpeta del tema actual a tu equipo.
    2. Visita el sitio web del tema, descarga la última versión y guárdala en tu equipo local (ahora tendrás dos versiones del mismo tema en tu equipo local).
    3. Copia tus personalizaciones y cambios en el código de tu tema viejo, y añádelos a los archivos del tema actualizado.
    4. Sube la versión más reciente del directorio del tema a WordPress usando FTP (la versión actualizada ahora ya está completa con tus personalizaciones).

Si usas un tema hijo personalizado que hereda funcionalidades del tema padre, es mucho más sencillo actualizar el tema. Simplemente, sobreescribe tu copia del tema padre con la última versión de la fuente oficial. Tus personalizaciones permanecerán intactas en el tema hijo, sin necesidad de hacer nada más.

 

[ 2 Control de Acceso]

A menudo, los atacantes se aprovechan de las contraseñas débiles de los usuarios para obtener acceso a los sitios web de WordPress.

Puedes reducir el riesgo de que tu sitio web sea vulnerado con algunas acciones orientadas al control de acceso de los usuarios:

    • Utilizando contraseñas fuertes y únicas
    • Restringiendo los privilegios de los usuarios mediante el uso de roles
    • Habilitando la autenticación en dos o más pasos
    • Limitando el número de intentos de inicio de sesión de los usuarios

[ 2.1 Cuentas de usuarios]

Administrador

La mayoría de los ataques tienen como objetivo los puntos de acceso wp-admin, wp-login.php, y xmlrpc.php, que se atacan utilizando una combinación de nombres de usuarios y contraseñas comunes.

Al utilizar un nombre de usuario único y eliminar la cuenta de usuario administrador que WordPress crea por defecto en la instalación, haces que sea mucho más difícil que los atacantes puedan acceder a tu sitio web por “fuerza bruta” (probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso).

Reemplazar la cuenta “admin” por defecto:

    1. Inicia sesión como administrador en WordPress.
    2. Desde el Dashboard, selecciona Usuarios > Agregar Nuevo.
    3. Utilizando una nueva dirección de correo electrónico, crea una nueva cuenta y asignarle el Rol Administrator.
    4. Guarda el nuevo usuario, cierra sesión e inicia sesión nuevamente utilizando la nueva cuenta de administrador.
    5. Desde el Dashboard, selecciona Usuarios > Todos los Usuarios.
    6. Selecciona el usuario admin, y elige Eliminar.
    7. Atribuye las publicaciones antiguas a tu nueva cuenta administradora.

CONSEJO:
Crea un nombre de usuario que sea diferente a tu nombre de usuario actual y haz que ese sea el que esté visible públicamente. Esto hará que sea más difícil para los atacantes adivinar tus credenciales de acceso utilizando fuerza bruta.

Roles y el principio de Mínimo Privilegio

El principio de mínimo privilegio está compuesto por dos pasos sencillos:

    • Utiliza el menor conjunto de privilegios en un sistema para realizar una acción.
    • Otorgar privilegios solamente mientras una acción es necesaria.

Con este concepto en mente, WordPress incluye roles por defecto para Administradores, Autores, Editores, Contribuidores y Subscriptores. Estos roles especifican lo que puede y no puede hacer cada tipo de usuario.

Recomendaciones sobre control de acceso para reducir los riesgos de seguridad:

    • Crea nuevas cuentas de usuario con el nivel de permisos más bajo.
    • Concede los permisos de manera temporal y revoca el acceso cuando ya no sean necesarios.
    • Elimina las cuentas que ya no estén siendo utilizadas.
    • Asegúrate de que el rol por defecto para las cuentas nuevas sea el de Suscriptor:
      1. Inicia sesión en WordPress como un Administrador.
      2. Verifica que los permisos de los Suscriptores solo permitan iniciar sesión y actualizar el perfil.
      3. Desde el Dashboard, selecciona Ajustes > Generales.
      4. Define Suscriptor como el rol por defecto para usuarios nuevos.

[ 2.2 Contraseñas]

Los atacantes utilizan listas de contraseñas para atacar sitios web WordPress por medio de fuerza bruta. Por esta razón, siempre debes utilizar contraseñas únicas y fuertes para todas tus cuentas. Usar contraseñas habituales (como “root” o “admin”) o fácilmente deducibles, supone un gran riesgo de seguridad.

Las contraseñas fuertes deben cumplir los siguientes requisitos:

    • Al menos 1 caracter en mayúscula
    • Al menos 1 caracter en minúscula
    • Al menos 1 digito
    • Al menos 1 caracter especial
    • Al menos 10 caracteres, con no más de dos caracteres iguales seguidos

Utilizar un generador de contraseñas para generar una cadena de texto compuesta de letras, números y caracteres especiales es una de las maneras más simples de crear una contraseña segura.

Seguridad WordPress

 

2FA / MFA

La autenticación en dos (o más) pasos te permite tener un segundo nivel de protección para tus cuentas. Esta funcionalidad requiere que apruebes los inicios de sesión a través de una aplicación, y protege tu cuenta en caso de que alguien más adivine tu contraseña.

Añadir 2FA a WordPress utilizando Google Authenticator:

    1. Descarga e instala Google Authenticator para tu iPhone o Android.
    2. Instala y activa un plugin que permita 2FA para WordPress, como por ejemplo, miniOrange’s 2FA.
    3. Selecciona miniOrange 2-Factor del menú a la izquierda y sigue las instrucciones.
    4. Una vez que obtuviste tu código QR, abre Google Authenticator y haz clic en el botón Agregar, en la parte inferior izquierda de la aplicación.
    5. Utilizando la cámara de tu teléfono, escanea el código QR que muestra el plugin.
    6. Verifica el código en la página del plugin.

 

[ 2.3 Limita los intentos de Inicio de Sesión]

Por defecto, WordPress permite que los usuarios puedan intentar iniciar sesión un número ilimitado de veces. Esto deja tu sitio web vulnerable a ataques de fuerza bruta, ya que los hackers pueden intentar diferentes combinaciones de contraseñas de forma ilimitada.

Puedes agregar otra capa de seguridad al limitar el número de intentos de inicio de sesión en una cuenta a través de un plugin, o utilizar un Firewall para Aplicaciones Web (WAF, por sus siglas en inglés Web Application Firewall).

Algunos de los plugins populares que incluyen esta función son Limit Login Attempts, WP Limit Login Attempts y Loginizer.

[ 2.4 Captchas]

El acrónimo Captcha significa Prueba de Turing Completamente Automática y Pública para Diferenciar Ordenadores de Humanos (en inglés: Completely Automated Public Turing Test To Tell Computers and Humans Apart). Esta función es extremadamente útil para detener los bots automáticos que intentan acceder a tu panel de WordPress, o que envían spam no deseado a través de formularios.

Algunos plugins populares para agregar CAPTCHA a tu página de inicio de sesión de WordPress son Captcha o Really Simple Captcha.

 

Seguridad WordPress

 

[ 2.5 Restringe el acceso a URLs Autenticadas]

Si limitas el acceso a tu página de inicio de sesión solamente a IPs autorizadas, podrás prevenir intentos de acceso no autorizados.

Hay plugins disponibles que pueden implementar esta restricción. Si estás utilizando un WAF basado en la nube, puedes restringir el acceso a esas URLs a través del panel de administración, sin tener que personalizar tu archivo .htaccess.

 

 

[ 3 Seguridad Proactiva para WordPress]

Al hablar de la Seguridad de la Información (InfoSec) nos gusta utilizar el término defensa en profundidad. Para apreciar este concepto, partimos de un principio de base muy sencillo: No hay ninguna solución capaz de proteger un entorno al 100%.

Vamos a ver algunas soluciones que puedes aplicar en tu sitio web para desplegar una estrategia eficaz de defensa en profundidad. Al tener esos controles defensivos en capas, serás capaz de identificar y mitigar ataques contra tu sitio web.

[ 3.1 Plugins de Seguridad]

Si vas al repositorio oficial de WordPress y haces una búsqueda por la palabra “security”, encontrarás más de 4.300 plugins con categorías y funciones diferentes.

Vamos a descomponer esas categorías y explicar su importancia de modo que puedas encontrar la solución  más adecuada a tus necesidades.

Plugin de Seguridad para WordPress – Categoría de Prevención

Estos plugins buscan proporcionar un cierto grado de prevención (también conocido como un sistema de defensa perimetral para tu sitio web). El objetivo es detener ataques filtrando el tráfico de entrada.

Los plugins de prevención están generalmente limitados a trabajar en la capa de la aplicación, lo que significa que el ataque tiene que llegar hasta tu WordPress para que estos plugins puedan responder. Los ataques contra el software del servidor no pueden ser prevenidos con estos plugins, para lo que recomendamos utilizar un WAF basado en la nube.

Plugin de Seguridad para WordPress – Categoría de Detección

La prevención funciona muy bien con problemas conocidos, pero pierde efectividad cuando se trata de problemas desconocidos. Ser capaz de detectar algo que atraviesa tu perímetro de defensa tiene un valor incalculable, y es aquí donde la detección entra en juego.

Este tipo de plugins tratará de identificar intrusos mediante Verificaciones de Integridad a tus Archivos, escaneos en busca de indicadores de intrusiones, o una combinación de ambos.

La efectividad de estos plugins está determinada estrictamente por el orden en el que fueron instalados. Por ejemplo, si un plugin está basado en verificaciones de integridad, necesita estar instalado en entornos limpios bien conocidos, de modo que pueda crear un punto de partida que usará en las comprobaciones como punto de comparación.

Algunos plugins pueden hacer comparaciones contra repositorios oficiales de temas y plugins de terceros, y de este modo poder funcionar en sitios web que ya están comprometidos, pero no son compatibles con archivos personalizados o poco conocidos.

 

CONSEJO
Los plugins de detección son importantes para identificar si algo está mal en tu sitio web. Estas herramientas de seguridad se aseguran de mantenerte informado cuando ocurre un incidente de seguridad, de modo que puedas actuar lo antes posible.

 

Plugin de Seguridad para WordPress – Categoría de Auditoría

Contrariamente a lo que se suele pensar, la seguridad no es algo fijo y preestablecido que configures y te olvides de ello. Tienes que invertir tiempo en el proceso, y en acostumbrarte a lo que está pasando, quién está iniciando sesión, qué está cambiando, y en qué momentos se están haciendo estos cambios.

Los plugins de auditoría te pueden ayudar a responder a estas preguntas mediante funciones básicas de administración que te permiten identificar, frustrar o responder a una intrusión.

Plugin de Seguridad para WordPress – Categoría de Utilidad

Esta es quizá la categoría más amplia y diversa entre los plugins de Seguridad para WordPress.

Dentro de esta categoría, hay algunos que son muy específicos con un conjunto de funcionalidades y opciones de configuración muy pequeño. En el otro lado, hay otros que disponen de una configuración exhaustiva y un sinfín de opciones que contemplan cualquier posible configuración que pudieras querer aplicar. Este tipo encaja muy bien con aquellos usuarios a los que les gusta indagar a fondo, o que necesitan poder configurar opciones muy específicas para satisfacer sus necesidades (por ejemplo, algunos plugins de seguridad desactivan XML-RPC, o mueven tu página de inicio de sesión).

También se incluyen en esta categoría plugins de mantenimiento, o que cubren funciones de seguridad específicas, como crear copias de seguridad.

[ 3.2 Alojamiento Web]

La seguridad de los hostings de sitios web ha evolucionado en los últimos años, y es un tema  bastante complejo. La mayoría de los alojamientos web proporcionan la seguridad necesaria en varios niveles, pero no para el sitio web en sí. Hay algunos proveedores de hosting que proporcionan seguridad por un coste adicional, pero a menos que hayas comprado alguno de sus productos de seguridad, es poco probable que te resuelvan un compromiso de seguridad cuando se produzca.

Hay principalmente cuatro entornos de hosting que se pueden usar para tu WordPress:

    • Hosting Compartidos
    • Servidores Privados Virtuales (VPS o Virtual Private Server en inglés)
    • Hosting Gestionados
    • Servidores Dedicados

A priori, los entornos que no dependen del usuario serán los que ofrezcan mayor seguridad. Sin embargo, si tienes el tiempo y las habilidades necesarias para asegurar tu propio entorno, tienes más opciones y versatilidad, pero también más responsabilidad.

En resumidas cuentas, el tipo de hosting que elijas dependerá de tus necesidades y tu experiencia:

    • Si no sabes mucho sobre cómo funcionan los sitios web, la mejor opción sería un entorno gestionado.
    • Si eres parte de una organización con su propio centro de operaciones de datos (NOC, por sus siglas en inglés), centro de operaciones de seguridad de la información (SOC, por sus siglas en inglés), o Administradores de Sistemas dedicados (sysadmins), entonces un servidor dedicado o un servidor privado virtual (VPS) te proporcionará un mejor aislamiento de tu entorno (suponiendo que esté adecuadamente configurado).

También puedes hablar con tu proveedor de hosting para saber cuál es su postura en cuanto a la seguridad. Estos son algunos puntos clave que deberías preguntarle:

    • ¿Qué precauciones están tomando para proteger tu sitio web (no solo su servidor)?
    • ¿Qué acciones llevarán a cabo si identifican malware en uno de tus sitios?
    • ¿Con qué frecuencia hacen escaneos en busca de malware?
    • ¿Ofrecen servicios de respuesta a incidencias?
    • ¿Tendrás que contratar servicios de terceros si tu sitio web es hackeado?

Para prevenir contaminación cruzada (cross-site contamination) en entornos de servidores compartidos, utiliza cuentas de usuario y cuentas FTP aisladas cuidadosamente.

Conexiones SFTP/SSH

La transferencia segura de datos desde y hacia tu servidor es un aspecto importante de la seguridad de tu entorno de alojamiento. La encriptación se asegura de que cualquier dato enviado sea protegido de ojos curiosos que pudieran estar interceptando tu tráfico de red. En aras de la seguridad, es recomendable utilizar uno de los siguientes métodos para conectarte a tu servidor:

SSH: El Intérprete de Órdenes Seguro (Secure Socket Shell en inglés) es un protocolo de red seguro y el modo más habitual de administrar servidores remotos de manera segura. Con SSH, cualquier tipo de autenticación (incluyendo autenticación por contraseña) y transferencia de archivos, está totalmente encriptada.

SFTP: El Protocolo de Transferencia Segura de Archivos (Secure File Transfer Protocolo, en inglés) es una extensión de SSH y permite la autenticación sobre un canal seguro. Si estás utilizando FileZilla o algún otro cliente FTP, puedes utilizar SFTP en su lugar (el puerto por defecto para SFTP en la mayoría de servicios FTP es el 22).

[ 3.3 Copias de Seguridad]

Mantener copias de seguridad actualizadas debe ser una de las tareas recurrentes más importantes para un administrador de sitios web.

Un buen juego de copias de seguridad puede salvar tu sitio web cuando absolutamente todo lo demás ha salido mal. Si un atacante malintencionado decide borrar todos tus archivos, o corromperlos usando scripts con errores, puedes deshacer el daño al restaurar tu sitio web utilizando una copia de seguridad.

Hay cuatro puntos clave que debe cumplir un buen sistema de copias de seguridad:

  1. Ubicación Remota: Debes guardar tus copias de seguridad en una ubicación remota, y no en el mismo servidor que tu sitio web. Las copias de seguridad almacenadas en el mismo servidor son un gran riesgo, porque generalmente contienen software sin parchear y con vulnerabilidades, por lo que si están en una ubicación públicamente accesible, cualquiera las puede explotar para atacar tu sitio web en producción. Las copias de seguridad en una ubicación remota también te pueden ayudar contra fallos que pudieran producirse en el hardware. Si, por ejemplo, el disco duro de tu servidor web falla y tienes las copias de seguridad en el mismo servidor que el sitio web, podrías perder toda tu información (tanto el sitio web en producción como tus copias de seguridad).
  2. Automáticas: Los sistemas de copias de seguridad deben estar completamente automatizados para garantizar que las copias se realizan de forma regular, sin depender de la acción humana. Los humanos tendemos a ser perezosos y olvidadizos, y podemos reducir los errores humanos a través de la automatización. Si la única opción que tienes es hacerlo manualmente, asegúrate de programarte el tiempo necesario para hacer las copias de seguridad de manera regular.
  3. Redundantes: La Segunda Ley de la Computación de Schofield dice que los datos no existen a menos que hayan al menos dos copias de ellos. Esto significa que tu estrategia de copias de seguridad tiene que incluir redundancia, es decir, respaldos de tus copias de respaldo (debes hacer copias de seguridad de tus copias de seguridad).
  4. Probadas & Funcionales: Asegúrate de que el proceso de restauración funcione. Desde con un directorio web vacío y un dominio de prueba, utilizando solamente el archivo de respaldo (la copia de seguridad), asegúrate de que puedas recuperar tus datos y poner el sitio web de nuevo en línea.

[ 3.4 Detección]

Hay algunas herramientas que puedes utilizar para identificar cuándo alguien ha hecho algo malintencionado en tu sitio web. Para ayudarte a dar respuesta a una brecha de seguridad rápidamente, utiliza una herramienta que incluya los siguientes servicios.

Monitoreo de Integridad

Las verificaciones de integridad son un aspecto importante de la auditoría de tu WordPress, y pueden darte un primer aviso temprano en caso de que ocurra una intrusión en tu sitio web.

Las herramientas de Monitoreo de Integridad de Archivos normalmente se instalan en servidores donde crean una suma de comprobación criptográfica de los archivos críticos y de las entradas de registro. Si un archivo o registro es modificado de cualquiera manera, recibirás una notificación de los cambios.

 

Auditoría / Alertas

Las herramientas de auditoría te dan una visión de la actividad de los usuarios en tu sitio web. Como administrador de tu sitio web, deberías preguntarte cosas como:

    • ¿Quién inició sesión?
    • ¿Debería haber iniciado sesión?
    • ¿Por qué están cambiando esa publicación?
    • ¿Por qué iniciaron sesión cuando deberían estar dormidos?
    • ¿Quién instaló ese plugin?

No nos cansaremos de enfatizar la importancia de tener registros de actividad. Utiliza una herramienta que registre y alerte de cualquier acción realizada en tu sitio web, especialmente:

    1. Autenticaciones de usuarios correctas / incorrectas
    2. Creación y eliminación de usuarios
    3. Subidas de archivos
    4. Creación de entradas y páginas
    5. Publicación de nuevas entradas y páginas
    6. Activación y modificación de Widgets
    7. Instalación de plugins
    8. Modificaciones en temas
    9. Modificaciones de ajustes

Protege y limpia WordPress

Mantenemos de forma activa un Plugin de Seguridad para WordPress que incluye todas las funciones anteriormente mencionadas para mejorar la seguridad e identificar indicadores de compromiso.

Si crees que tu sitio web ya está comprometido, lee esta guía sobre Cómo Limpiar un Sitio Web WordPress Hackeado o ponte en contacto con nuestro equipo de Eliminación de Malware. Nuestros Analistas de Seguridad están disponibles las 24 horas, los 365 días del año.

 

[ 4 Recomendaciones de endurecimiento]

Precaución: Las siguientes recomendaciones son para administradores de servidores con conocimientos de cómo funcionan estos archivos. Si no tienes experiencia o no te sientes seguro sobre cómo aplicar estas recomendaciones, te recomendamos utilizar en su lugar un firewall para aplicaciones web (WAF o Website Application Firewall en inglés) que incluya endurecimiento virtual.

[ 4.1 Configuración .htaccess Básica]

El archivo .htaccess es lo que modificará la mayoría de proveedores cuando te digan que están endureciendo tu entorno.

Este archivo de configuración tan crítico es específico para servidores web corriendo Apache. Si estás corriendo tu instancia de WordPress con LAMP utilizando Apache, te recomendamos endurecer tu sitio actualizando tu archivo .htaccess con las siguientes reglas de configuración:

Algunas de las reglas a continuación dependen de la versión de Apache que estés utilizando. En esos casos, incluimos instrucciones para la versión 2.2 y 2.4 del Servidor Apache.

/.HTACCESS

Explicación de la Regla

# BEGIN WordPress

# Rewrite rule

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

Regla de Sobreescritura:

En caso de que disponga de permisos de escritura en el servidor, WordPress genera esta regla automáticamente más que nada para arreglar problemas con enlaces permanentes.

Si la regla no está al comienzo de tu archivo, colócalo al inicio de tu archivo .htaccess. Cualquier otra regla deberá ir después de los comentarios #BEGIN WordPress y #END WordPress.

# Block IPs for login Apache 2.2

<files /wp-login.php>

order deny,allow

allow from MYIP

allow from MYIP2

deny from all

</files>

# Block IPS for login Apache 2.4

<Files “wp-login.php”>

Require all denied

</Files>

Restringir Inicios de Sesión a un Rango de IPs

Esta regla restringe el acceso al wp-login.php a un rango de IPs, protegiendo tu sitio de intentos de inicio de sesión no autorizados provenientes de otras ubicaciones. Incluso si no tienes una IP estática, puedes restringir los intentos de inicio de sesión al rango que utiliza tu ISP.

Utiliza esta misma entrada en otras URLs autenticadas que te gustaría restringir, incluyendo /wp-admin. Si estás utilizando una IP dinámica, puedes leer estas instrucciones sobre Cómo Bloquear el Panel de Administración de WordPress con una IP Dinámica

# Protect wp-config Apache 2.2

<files wp-config.php>

order allow,deny

deny from all

</files>

#Protect wp-config Apache 2.4

<Files “wp-config.php”>

Require all denied

Require ip 1.1.1.1

</Files>

Protege tu wp-config.php

Esta regla restringe el acceso de los usuarios a tu archivo wp-config.php, que contiene información sensible sobre la base de datos, incluyendo el nombre, host, nombre de usuario y contraseña. Este archivo también se usa para definir ajustes avanzados, llaves de seguridad y otras opciones para desarrolladores.

# Prevent directory browsing

Options All -Indexes

Limita la Navegación de Directorios

Esta regla evita que los atacantes puedan ver el contenido de los directorios en tu sitio, limitando así la información que tienen para explotar tu sitio web.

# Prevent image hotlinking

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} \

!^http://(www\.)example.com/.*$ [NC]

RewriteRule \.(gif|jpg|jpeg|bmp|png)$ – [NC,F,L]

Limita el Hotlinking a tus Imágenes

Esta regla evita que otros sitios web usen las imágenes alojadas en tu sitio web. Aunque el hotlinking no hará que tu sitio web sea hackeado, sí puede conllevar la explotación de los recursos de tu servidor. Cambia example.com por el nombre de dominio de tu sitio web.

# Protect htaccess Apache 2.2

<files ~ “^.*\.([Hh][Tt][Aa])”>

order allow, deny

deny from all

satisfy all

</files>

# Protect htaccess Apache 2.4

<FilesMatch “^.*\.([Hh][Tt][Aa])”>

Require all denied

</FilesMatch>

Protege .htaccess

Esta regla evita que los atacantes accedan a cualquier archivo cuyo nombre comience con “hta” (lo que asegura que los archivos .htaccess están protegidos en todos los directorios de tu servidor).

# Block Includes

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^wp-admin/includes/ – [F,L]

RewriteRule !^wp-includes/ – [S=3]

RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]

RewriteRule ^wp-includes/js/tinymce/langs/.+\.php \

– [F,L]

RewriteRule ^wp-includes/theme-compat/ – [F,L]

</IfModule>

Bloquea los Includes

Esta regla bloquea a los hackers evitando que inserten archivos maliciosos en cualquiera de los cuatro directorios principales utilizados para incluir otros archivos:

    • /wp-admin/includes/
    • /wp-includes
    • /wp-includes/js/tinymce/langs/
    • /wp-includes/theme-compat

/WP-INCLUDES/.HTACCESS

/WP-CONTENT/UPLOADS/.HTACCESS

Explicación de la Regla

# Backdoor Protection Apache 2.2

<Files *.php>

deny from all

</Files>

# Backdoor Protection Apache 2.4

<FilesMatch “.+\.php$”>

Require all denied

</FilesMatch>

Prevén Puertas Traseras en PHP

Esta regla previene que los hackers coloquen puertas traseras (backdoors) escritas en PHP en los directorios /wp-includes/ y /wp-content/uploads/, dos ubicaciones habituales para subir archivos maliciosos.

[ 4.2 Configuración de aplicación]

WP-Config

El archivo wp-config.php es un archivo de configuración muy importante, y contiene información sensible sobre tu sitio web WordPress, incluyendo datos de conexión a la base de datos.

Si el archivo wp-config.php no existe en el directorio raíz, WordPress buscará este archivo en el directorio siguiente de manera automática. Mover el archivo wp-config.php fuera del directorio raíz previene que sea accesible desde Internet.

Claves secretas y aleatorias

El archivo wp-config.php incluye una sección dedicada a claves secretas y aleatorias. Estas claves mejoran la seguridad de las cookies y las contraseñas que están en tránsito entre el navegador y el servidor web.

Puedes configurar tus claves incluyendo o editando las siguientes líneas en las sentencias de definición en tu archivo wp-config.php:

define(‘AUTH_KEY’, ‘incluye tu clave aleatoria aquí’);

define(‘SECURE_AUTH_KEY’, ‘incluye tu clave aleatoria aquí’);

define(‘LOGGED_IN_KEY’, ‘incluye tu clave aleatoria aquí’);

define(‘NONCE_KEY’, ‘incluye tu clave aleatoria aquí’);

Puedes generar tus claves de manera sencilla navegando hasta el generador de claves secretas y aleatorias de wordpress.org o utilizando la opción de restablecer las claves secretas y aleatorias de nuestro plugin para WordPress.

 

IMPORTANTE

Si sospechas que las claves secretas han sido comprometidas, generalas de nuevo lo antes posible. Todos los usuarios tendrán que autenticarse nuevamente.

 

Deshabilita la Edición de Archivos

Por defecto, se pueden realizar cambios en los archivos desde el panel WordPress en Apariencia > Editor

Puedes aumentar tu seguridad deshabilitando la edición de archivos desde el dashboard. Esto previene que los atacantes modifiquen tus archivos desde el backend o wp-admin. Todavía podrás seguir realizando cambios a través de SFTP/SSH.

Para deshabilitar la edición de archivos desde el dashboard, incluye las siguientes dos líneas de código al final de tu archivo wp-config.php:

## Deshabilitar Edición desde el Dashboard

define(‘DISALLOW_FILE_EDIT’, true);

 

Algunos plugins deshabilitan la edición de archivos como parte de su proceso de endurecimiento, o como un extra en los ajustes.

[ 5 Servicios de Seguridad]

Hay algunos servicios profesionales que pueden encargarse de las seguridad de tu sitio web por ti. No todos los servicios son iguales: algunos cobran más por limpiar intrusiones complejas, mientras que otros ofrecen un conjunto de funciones distintos. Deberías elegir el que más se ajuste a tus necesidades.

Si tu proveedor de alojamiento ofrece servicios de seguridad, Investiga las funciones que incluyen. Generalmente no tendrán inconveniente en aconsejarte sobre qué opciones son más recomendables para complementar sus servicios de base de seguridad, con otros adicionales.

[ 6 Implementando SSL y HTTPS]

SSL se ha vuelto cada vez más importante en los últimos años, no solo por transmitir información de manera segura desde y hacia tu sitio web, sino también por aumentar la visibilidad y disminuir la probabilidad de ser penalizado.

SSL permite que se acceda a los sitios web desde HTTPS, el cual encripta la información enviada desde los visitantes y los navegadores web. Desde el año 2014, SSL ha sido un factor de ranking SEO y Google ha comenzado a marcar sitios web sin HTTPS que transmiten contraseñas e información de tarjetas de crédito.

Aquí tienes unas indicaciones sobre cómo implementar SSL en tu sitio web.