Cómo prevenir ataques de fuerza bruta a los servicios de WordPress (y similares) alojados detrás de su firewall

Cómo prevenir ataques de fuerza bruta a los servicios de WordPress (y similares) alojados detrás de su firewall

44382
Created On 09/25/18 18:59 PM - Last Modified 06/05/23 20:31 PM


Resolution


Problema:

Cuando está hospedando servicios vulnerables a ataques de fuerza bruta a formularios de inicio de sesión Web, no es fácil detectar estos ataques a menos que estén inundando el servidor detrás del cortafuegos. Además, otros controles y características del cortafuegos de Palo Alto Networks pueden evitar ataques. Sin embargo, si el ataque no es demasiado agresivo pero persistente, entonces podría no ser bloqueado por otros controles.

 

El diagnóstico de los ataques en los registros de cortafuegos por sí solo puede ser difícil para algunos servicios como WordPress, porque un formulario de inicio de sesión responde con un código de estado http 200 (OK), independientemente de si el inicio de sesión fue exitoso o no; la única diferencia es que el inicio de sesión exitoso redirige al usuario después a las páginas de administración. Pero la respuesta inicial para el éxito o el fracaso es siempre el código de Estado HTTP 200. Obtener la misma respuesta para el éxito y el fracaso significa que no podemos distinguir un bien de una mala respuesta, sin embargo, si vemos intentos posteriores en registros de tráfico, donde la misma fuente IP accede a una URL que contiene una cadena ' WP-Logon ' dentro de un tiempo relativamente corto  intervalo, podemos estar bastante seguro de que alguien está fallando a entrar en el sitio web de WordPress y volver a intentarlo. Si son muy persistentes y siguen tratando durante horas y horas, lo más probable es que es un ataque de fuerza bruta contra su instalación de WordPress que no está siendo bloqueado por los controles convencionales.

 

Una solución en firmas personalizadas

Introduzca firmas personalizadas: configuremos esto para que podamos bloquear cualquier dirección IP de origen que intente más de 5 inicios de curso en 20 segundos — un valor arbitrario elegido con poca experiencia — ajuste de acuerdo a sus necesidades y experiencia. Mi enfoque sería el de ajustar esos valores a cualquier cosa que no impida que demasiados usuarios habituales accedan a la página web diariamente.

 

Para evitar afectar adversamente a los usuarios, primero necesitamos detectar el propio evento de inicio de sesión y, a continuación, contar el número de intentos en el intervalo de tiempo designado. Esto se puede hacer en dos pasos: mediante la creación de una firma base primero para detectar el evento de inicio de sesión y, a continuación, crear una firma combinada que cuente los impactos repetitivos de la firma base dentro de un intervalo de tiempo determinado (5 logons en 20 segundos).

 

Una solución rápida y descargable

Sólo tiene que descargar archivos adjuntos desde la parte inferior de este documento e importarlos en el cortafuegos. Para importar, inicie sesión en WebGUI, seleccione la ficha objetos y, a continuación, examine el panel izquierdo para objetos personalizados > vulnerabilidad. En la esquina inferior izquierda de la página, haga clic en ' importar. ' A continuación, abra los archivos y ajuste los valores según sea necesario y commit. Sigue leyendo para averiguar qué puedes ajustar y por qué.

 

Creación de una firma base

Para empezar a crear firmas, inicie sesión en la GUI web del cortafuegos y, en la ficha objetos, examine el panel izquierdo en objetos personalizados > vulnerabilidad. En la esquina inferior izquierda de la página, haga clic en agregar y sigamos creando una firma personalizada.

 

Ficha Configuración

Configure lo siguiente:

Regla base: ficha Configuración

  • ID. de amenaza: número arbitrario entre 41000 y 45000 — elegí 43434.
  • Nombre: WordPress-BF-base (opción arbitraria)
  • Severidad: informativo — esto es importante. Desea que la firma base sea de gravedad informativa o baja porque normalmente tendría acción ' alerta ' sobre la gravedad baja/informativa y no ' bloquear ', como lo haría en niveles de severidad media/alta/crítica. No queremos seleccionar ' bloquear ' porque una sola instancia de Visiting WP-Logon también desencadenará esta vulnerabilidad base. En su lugar, crearemos una firma combinada con alta severidad que se desencadenará mediante desencadenadores repetitivos de esta firma base de la misma fuente IP dentro de un período corto.
  • Dirección: ambos.
  • Acción predeterminada: alerta — como ya se mencionó, no queremos bloquear a todos los que golpeen esta regla, sólo aquellos que lo golpean repetidamente desde la misma dirección IP de origen en el corto intervalo de tiempo.
  • Sistema afectado: cliente y servidor

 

Ficha firma

Necesitamos configurar los siguientes elementos:

Regla base-ficha firmas

Elija ' estándar ' y haga clic en Agregar para configurar los detalles de la firma, como:

Regla base-firmas estándar

Estándar: WP-Logon-Failure (nombre arbitrario, éste es uno mismo-descriptivo).

Ámbito: sesión — Estamos reconociendo una sesión http consistente en dos transacciones — la primera es una solicitud HTTP de URL que contiene ' WP-login ' en su ruta, mientras que la segunda transacción es una respuesta HTTP con el código de estado 200.

Coincidencia de condición ordenada: sí — esperamos que esta sesión consista en transacciones que están en un determinado orden (la respuesta siempre es causada por la petición).

 

Primera condición

Haga clic en ' Agregar o condición ' para agregar la primera condición y configure:

Regla base-primera condición de la regla estándar

Operador: patrón Match — usaremos el patrón regex para capturar la cadena ' WP-login ' en la solicitud de URL.

Context: http-req-URI-path — lo coincidiremos dentro de la ruta URL de la solicitud HTTP.

Patrón: wp\-login — necesitamos usar el signo de escape "-" con barra invertida. Necesitamos un mínimo de 7 caracteres para emparejar; Si tiene una URL personalizada para WP-Logon o está emparejando algún otro servicio Web, cambie esto en consecuencia. Aquí encontrará más referencias sobre creación de patrones y regex .

 

Segunda condición

Haga clic en ' Agregar o condición ' para agregar la segunda condición y configure:

Regla base: segunda condición de la regla estándar

Operador: igual a

Contexto: http-RSP-Code

Valor: 200 — buscamos una respuesta HTTP con un código de estado 200 (OK).

 

Creación de una combinación de firmas

Ahora que hemos creado nuestra firma base, vamos a proceder y crear una combinación de firmas. Haga clic en agregar de nuevo en la esquina inferior izquierda de la pantalla para comenzar con la configuración.

 

Ficha Configuración

Necesitamos configurar lo siguiente:

Ficha combinación de reglas y configuración

 

  • IDENTIFICACIÓN de la amenaza: número arbitrario entre 41000 y 45000, elijo 43435 porque anterior era 43435:)
  • Nombre: WordPress-bruta (opción arbitraria)
  • Severidad: critica — esto es importante, desea que esta firma tenga una severidad alta o crítica, ya que estamos detectando intentos de fuerza bruta para irrumpir en sus servicios.
  • Acción predeterminada: bloquear IP: se definirá aún más esta acción.
  • Rastrear por: Source — bloquearemos la dirección IP de origen, no queremos bloquear el destino en este caso porque ese es nuestro servidor dentro del firewall. La regla base anterior utilizó una idea de una "sesión pedida" que tenía primera transacción de la petición para WP-Logon y la respuesta de 200 a ella; por lo tanto la fuente de la sesión es atacante externo.
  • Duración: 60 — esta es la duración de cuánto tiempo queremos que este bloque se lleve a cabo, hasta una hora (3600 segundos). Mientras que nuestra demostración impide que la IP de origen se conecte sólo durante 60 segundos, en la configuración estricta en la producción que podría elevar esto a 3600 segundos; Esto debería ser suficiente para desalentar a cualquier atacante-podrían intentar romper forzar sólo 5 contraseñas por hora.
  • Dirección: ambos
  • Sistema afectado: servidor

Ficha firmas

Ahora necesitamos correlacionar esto con nuestra firma base. En esta ficha, elija:

Firma: combinación

y proceda a configurar las subpestañas:

Firmas combinadas

Ficha combinación de reglas de firma

ID. de amenazas: haga clic en ' Agregar o condición ' y escriba 43434 (o cualquier identificador de amenaza que haya elegido para su firma base).

 

Atributo Time

Ficha combinación de atributos en tiempo de regla

Número de hits: 5 por 20 segundos — esta es la parte final donde estamos estableciendo valores que desencadenarán nuestra firma base. Esto se puede ajustar en función de su experiencia. Puedes contar cualquier cosa entre 1-255 Hits dentro de 1-3600 segundos.

Criterios de agregación: Source: se contarán los desencadenadores por dirección IP de origen.

 

Detalles adicionales

Actualmente, Threat ID 37480 en la lista de vulnerabilidades es pan Signature para WordPress login; también es de severidad informativa y puede ser utilizado como la firma base en el ejemplo anterior. Este artículo debe traerle valor en el aprendizaje de cómo crear y personalizar cualquier firma, en caso de que tenga URLs personalizadas de inicio de sesión o si está utilizando algún otro servicio similar al caso descrito anteriormente.

 

Conclusión

Su configuración final mostraría dos vulnerabilidades personalizadas para ayudarle a evitar ataques de fuerza bruta al sitio de WordPress alojado detrás de su firewall. Sin embargo, con un poco de retoque, también puede proteger un montón de servicios diferentes, mitigar algunos trabajos de WAF dedicados y ofrecer un valor adicional más allá de firmas regulares.

Vista final

 

Si te gusta la idea de crear firmas personalizadas para tu dispositivo, por favor visita nuestras páginas de la comunidad para firmas personalizadas.

 



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClSTCA0&lang=es&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language