Descripción
Este artículo describe cómo configurar una puntada de automatización de webhooks que publica un mensaje en un canal de Discordia elegido cuando la puntada se activa.
Alcance
Esta guía es aplicable a cualquier versión de FortiOS que soporte la acción de automatización de webhooks (6.0+).
El FortiGate necesita ser capaz de resolver y comunicarse con el discord.com servidor.
El usuario que crea el webhook para el canal de Discordia debe tener permisos de acceso para gestionar webhooks.
Solución
1) Crear el webhook en Discord
a) Selecciona el icono del engranaje junto al nombre del canal para editarlo, luego ve a Integraciones y seleccione Crear Webhook.
editar canal
b) Dé al webhook un nombre apropiado, seleccione el canal deseado y, opcionalmente, cargue un icono. (Los iconos de Fortinet están disponibles para su descarga aquí)
creación de webhooks
Cuando el webhook es activado por el FortiGate, el mensaje será mostrado como un mensaje por un bot de Discord en el canal seleccionado con el nombre e icono elegidos.
Finalmente, seleccione Copiar URL de Webhook, guarde la URL (se puede recuperar más tarde desde la misma ubicación), y seleccione Guardar cambios.
c) (opcional) Confirmar que la URL del webhook es válida.
En ambos casos, sustituya la URL falsa por la URL real del webhook.
Verificación mediante cURL:
rizo https://discord.com/api/webhooks/999999999999999999/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx… –json ‘{«contenido»: «mensaje de prueba de curl»}’
Verificación mediante PowerShell:
Invoke-RestMethod -Uri https://discord.com/api/webhooks/999999999999999999/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx… -Método Post -Cuerpo (@{«contenido»=»mensaje de prueba powershell»} | ConvertTo-Json) -Tipo de contenido «application/json»
Si la URL del webhook es válida, el o los mensajes se mostrarán en el canal:
resultados de las pruebas
2) Crear el punto de automatización en FortiGate
Este ejemplo utiliza el evento de inicio de sesión fallido del administrador como activador. Para otras opciones, consulte Guía de Administración de FortiOS -> Fortinet Security Fabric -> Puntadas de automatización.
Las capturas de pantalla que se muestran a continuación fueron tomadas de la versión 7.0.5 de FortiOS. Las imágenes pueden ser ligeramente diferentes en otras versiones.
a) Crear el disparador de automatización.
En Tejido de seguridad -> Automatización -> Disparo, seleccione Crear nuevo y seleccione el Registro de eventos de FortiOS tipo.
Asigne al activador un nombre descriptivo y seleccione la opción Fallo en el inicio de sesión del administrador en el campo Evento. Seleccione OK para guardar el cambio.
disparador de automatización
b) Crear la acción de automatización
Pasar a la Acción seleccione Crear nuevo y seleccione el Webhook acción.
Dé a la acción un nombre descriptivo. Seleccione HTTPS como protocolo, pegue la URL del webhook en el campo URL sin el prefijo de protocolo http://, y seleccione el método POST. Añade un Tipo de contenido Cabecera HTTP con el valor application/json. Introduzca el código JSON deseado en el campo del cuerpo HTTP.
El cuerpo JSON mínimo requerido por la API de Discord para enviar un mensaje consiste en la clave ‘content’ con un valor que contiene el mensaje a mostrar.
Este ejemplo utiliza una carga útil que demuestra cómo enviar un mensaje de varias líneas y cómo utilizar las variables del evento de registro de origen. Enviará dos líneas de texto, seguidas de líneas adicionales con variables que contienen la hora, el nombre de usuario del administrador, la IP de origen y la razón del fallo.
{«content» : «Ejemplo de webhook de FortiGate: ¡Fallo en el inicio de sesión de administrador!}
Una vez hecho esto, seleccione OK para guardar la acción de automatización.
acción de automatización
c) Crear la puntada de automatización.
Cambie a la Puntada y seleccione Crear nuevo. Dé un nombre descriptivo a la puntada. Seleccione Añadir activaciónseleccione el activador del paso ay seleccione Aplicar. Seleccione Añadir acciónseleccione la acción creada en el paso b y seleccione Aplicar. Por último, seleccione OK para guardar la nueva puntada de automatización.
puntada de automatización
La puntada de automatización completada, el disparador y la acción se representan en la CLI como sigue:
# config system automation-trigger
editar «admin_login_failed»
set event-type event-log
set logid 32002
siguiente
end
# config system automation-action
editar «discord_admin_login_fail»
set action-type webhook
set protocol https
set uri «discord.com/api/webhooks/99999999999999/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx»
set http-body «{\»content\» : \N – «Ejemplo de webhook de FortiGate\N¡El inicio de sesión de administrador ha fallado!\N – Tiempo: %%log.time%\NNNNombre de usuario: %%log.user%\NPropia IP: %%log.srcip%\NRazón del fallo: %%log.reason%\N»}»
set port 443
set headers «Content-Type:application/json»
siguiente
fin
# config system automation-stitch
editar «discord_sample_stitch»
set trigger «admin_login_failed»
configurar acciones
editar 1
set action «discord_admin_login_fail»
set required enable
siguiente
end
siguiente
fin
3) Confirmación final
La configuración se ha completado y la puntada puede probarse realizando un inicio de sesión de administrador fallido. El mensaje resultante, basado en la acción de automatización anterior, debería tener el siguiente aspecto:
Información adicional y referencias
¿Cómo incluir una @mención de nombre de usuario o rol de usuario en el mensaje del webhook?
La mención de un usuario o rol de usuario específico en el mensaje del webhook requiere una sintaxis específica:
nombre de usuario: <@id-usuario-aquí>
user-role: <@&role-id-here>
Estos IDs pueden descubrirse rápidamente enviando manualmente un mensaje con el usuario/rol de usuario mencionado en el canal y anteponiendo al signo @ una barra invertida ‘\’. El mensaje resultante mostrará la secuencia exacta de caracteres a utilizar en el cuerpo JSON de la acción del webhook.
Recuperación del ID de usuario/rol de usuario
@mencionar la carga útil JSON y el resultado
Documentación
Referencia de la API del webhook de Discord – https://discord.com/developers/docs/resources/webhook
Se puede revisar la referencia de mensajes de registro de FortiOS para saber qué campos de registro están disponibles como variables para cada activador de registro de eventos. – https://docs.fortinet.com/document/fortigate/7.0.5/fortios-log-message-reference
Cómo escapar varios caracteres en cadenas JSON. – https://www.tutorialspoint.com/json_simple/json_simple_escape_characters.htm
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!