Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Enviar alertas desde AWS Network Firewall a un canal de Slack
Creado por Venki Srivatsav (AWS) y Aromal Raj Jayarajan (AWS)
Resumen
Este patrón describe cómo implementar un firewall mediante el Firewall de red de Amazon Web Services (AWS) con el modelo de implementación distribuida y cómo propagar las alertas generadas por AWS Network Firewall a un canal de Slack configurable.
Los estándares de conformidad, como el Estándar de seguridad de datos del sector de pagos con tarjeta (PCI DSS), requieren que instale y mantenga un firewall para proteger los datos de los clientes. En la nube de AWS, una nube privada virtual (VPC) se considera igual que una red física en el contexto de estos requisitos de conformidad. Puede usar Network Firewall para monitorear el tráfico de red entre VPCs y proteger las cargas de trabajo que se ejecutan según VPCs un estándar de cumplimiento. Network Firewall bloquea el acceso o genera alertas cuando detecta un acceso no autorizado desde otra VPCs persona de la misma cuenta. Sin embargo, Network Firewall admite un número limitado de destinos para enviar las alertas. Estos destinos incluyen depósitos de Amazon Simple Storage Service (Amazon S3), grupos de registros de CloudWatch Amazon y transmisiones de entrega de Amazon Data Firehose. Cualquier otra acción relacionada con estas notificaciones requiere un análisis fuera de línea mediante Amazon Athena o Amazon Kinesis.
Este patrón proporciona un método para propagar las alertas generadas por Network Firewall a un canal de Slack configurable para tomar medidas adicionales casi en tiempo real. También puede ampliar la funcionalidad a otros mecanismos de alerta PagerDuty, como Jira y el correo electrónico. (Esas personalizaciones quedan fuera del alcance de este patrón).
Requisitos previos y limitaciones
Requisitos previos
Canal de Slack (consulte Primeros pasos
en el centro de ayuda de Slack) Privilegios necesarios para enviar un mensaje al canal
La URL del punto de conexión de Slack con un token de API (seleccione su aplicación
y elija un webhook entrante para ver su URL; para obtener más información, consulte Cómo crear un webhook entrante en la documentación de la API de Slack) Una instancia de prueba de Amazon Elastic Compute Cloud (Amazon EC2) en las subredes de carga de trabajo
Reglas de prueba en Network Firewall
Tráfico real o simulado para activar las reglas de prueba
Un bucket de S3 para almacenar los archivos fuente que se van a implementar
Limitaciones
Actualmente, esta solución solo admite un rango de enrutamiento entre dominios sin clase (CIDR) como filtro para el origen y el destino. IPs
Arquitectura
Pila de tecnología de destino
Una VPC
Cuatro subredes (dos para el firewall y dos para las cargas de trabajo)
Puerta de enlace de Internet
Cuatro tablas de enrutamiento con reglas
El bucket de S3 se utiliza como destino de alertas y se configura con una política de bucket y una configuración de eventos para ejecutar una función de Lambda
Función de Lambda con un rol de ejecución, para enviar notificaciones de Slack
El secreto de AWS Secrets Manager para almacenar la URL de Slack
Firewall de red con configuración de alertas
Canal de Slack
Arquitectura de destino
Este patrón configura un firewall de red descentralizado con integración con Slack. Esta arquitectura consta de una VPC con dos zonas de disponibilidad. La VPC incluye dos subredes protegidas y dos subredes de firewall con puntos de conexión del firewall de red. Todo el tráfico que entra y sale de las subredes protegidas se puede supervisar mediante la creación de políticas y reglas de firewall. El firewall de la red está configurado para colocar todas las alertas en un bucket de S3. Este bucket de S3 está configurado para llamar a una función de Lambda cuando recibe un evento put
. La función Lambda obtiene la URL de Slack configurada de Secrets Manager y envía el mensaje de notificación al espacio de trabajo de Slack.

Para obtener más información sobre esta arquitectura, consulte la entrada del blog de AWS sobre modelos de implementación para AWS Network Firewall
Herramientas
Servicios de AWS
AWS Network Firewall es un servicio de detección y prevención de intrusiones y firewall de red gestionado y con estado para la VPCs nube de AWS. Puede utilizar el firewall de red para filtrar el tráfico en el perímetro de su VPC y proteger sus cargas de trabajo en AWS.
AWS Secrets Manager es un servicio de almacenamiento y recuperación de credenciales. Con Secrets Manager puede reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación. Este patrón usa Secrets Manager para almacenar la URL de Slack.
Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos. Puede utilizar Amazon S3 para almacenar y recuperar cualquier cantidad de datos en cualquier momento y desde cualquier parte de la web. Este patrón utiliza Amazon S3 para almacenar las CloudFormation plantillas y el script de Python para la función Lambda. También utiliza un bucket de S3 como el destino de alerta del firewall de red.
AWS le CloudFormation ayuda a modelar y configurar sus recursos de AWS, a aprovisionarlos de forma rápida y coherente y a gestionarlos durante todo su ciclo de vida. Facilita poder usar una plantilla para describir los recursos y sus dependencias, y lanzarlos y configurarlos juntos como una pila, en lugar de administrarlos de forma individual. Este patrón utiliza AWS CloudFormation para implementar automáticamente una arquitectura distribuida para Firewall Manager.
Código
El código de este patrón está disponible en el GitHub repositorio Network Firewall Slack Integrationsrc
del repositorio, encontrará:
Conjunto de CloudFormation archivos en formato YAML. Estas plantillas se utilizan para aprovisionar los componentes de este patrón.
Un archivo fuente de Python (
slack-lambda.py
) para crear la función de Lambda.Un paquete de implementación de archivos .zip (
slack-lambda.py.zip
) para cargar el código de la función de Lambda.
Para usar el código de muestra, siga las instrucciones de la siguiente sección.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un bucket de S3. |
Para más información, consulte Crear un bucket en la documentación de Amazon S3. | Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Cargue las CloudFormation plantillas y el código Lambda. |
| Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Lanza la CloudFormation plantilla. | Abra la CloudFormation consola de AWS Para obtener más información sobre la implementación de CloudFormation plantillas, consulte Crear una pila en la CloudFormation consola de AWS en la CloudFormation documentación. | Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Complete los parámetros de la plantilla. | Especifique el nombre de la pila y configure los valores de los parámetros. Para obtener una lista de los parámetros, sus descripciones y valores predeterminados, consulte CloudFormation los parámetros en la sección de información adicional. | Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Cree la pila. |
| Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Probar la implementación. | Utilice la CloudFormation consola de AWS o la interfaz de línea de comandos de AWS (AWS CLI) para comprobar que se han creado los recursos que figuran en la sección Pila de tecnologías de destino. Si la CloudFormation plantilla no se implementa correctamente, compruebe los valores que proporcionó para los | Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Pruebe la funcionalidad. | 1. Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/ 2. Cree una EC2 instancia en una de las subredes protegidas. Elija una AMI (HVM) de Amazon Linux 2 para usarla como servidor HTTPS. Para obtener instrucciones, consulta Cómo lanzar una instancia en la EC2 documentación de Amazon. notaAmazon Linux 2 está a punto de finalizar el soporte. Para obtener más información, consulte Amazon Linux 2 FAQs 3. Utilice los siguientes datos de usuario para instalar un servidor web en la EC2 instancia:
4. Cree las siguientes reglas de firewall de red: Regla sin estado:
Regla con estado:
5. Obtenga la IP pública del servidor web que creó en el paso 3. 6. Acceda a la IP pública en un navegador. Debería ver el siguiente mensaje en el navegador:
También recibirá una notificación en el canal de Slack. Es posible que la notificación se retrase en función del tamaño del mensaje. Para realizar pruebas, considere la posibilidad de proporcionar un filtro CIDR que no sea demasiado estrecho (por ejemplo, un valor CIDR con /32 se consideraría demasiado estrecho y /8 sería demasiado ancho). Para obtener más información, consulte la sección Comportamiento del filtro en Información adicional. | Desarrollador de aplicaciones, propietario de la aplicación, administrador de la nube |
Recursos relacionados
Deployment models for AWS Network Firewall
(entrada del blog de AWS) Políticas de AWS Network Firewall (documentación de AWS)
Integración de Network Firewall con Slack
(GitHub repositorio) Crear un espacio de trabajo de Slack
(centro de ayuda de Slack)
Información adicional
CloudFormation parameters
Parámetro | Descripción | Valor predeterminado o de muestra |
---|---|---|
| Nombre del VPC que se va a crear. | Inspección |
| El rango CIDR que debe crear la VPC. | 10.0.0.0/16 |
| Cómo se distribuyen las EC2 instancias en el hardware físico. Las opciones son | predeterminado |
| La primera zona de disponibilidad de la infraestructura. | us-east-2a |
| La segunda zona de disponibilidad de la infraestructura. | us-east-2b |
| El rango CIDR de la primera subred del firewall (mínimo /28). | 10.0.1.0/24 |
| El rango CIDR de la segunda subred del firewall (mínimo /28). | 10.0.2.0/24 |
| El rango CIDR de la primera subred protegida (carga de trabajo). | 10.0.3.0/24 |
| El rango CIDR de la segunda subred protegida (carga de trabajo). | 10.0.4.0/24 |
| El nombre del bucket de S3 existente en el que cargó el código fuente de Lambda. | us-w2- yourname-lambda-functions |
| El prefijo del bucket de S3 en el que cargó el código fuente de Lambda. | aod-test |
| El nombre del secreto que contiene la URL de Slack. | SlackEnpoint-Cfn |
| El nombre del canal de Slack que creó. | somename-notifications |
| Nombre de usuario de Slack. | Usuario de Slack |
| Puede ser cualquier clave. Se recomienda usar la configuración predeterminada. | webhookUrl |
| El valor de la URL de Slack. | https://hooks.slack.com/services/¿T?? ¿9T? /A031885 JRM7 /9D4Y????? |
| El nombre del bucket de S3 que se utilizará como el destino de la alerta del firewall de red. Este bucket se creará automáticamente. | us-w2- yourname-security-aod-alerts |
| El nombre de la etiqueta del secreto. | AppName |
| El valor de la etiqueta para el nombre de etiqueta indicado. | LambdaSlackIntegration |
| El filtro para el rango CIDR de destino. Para obtener más información, consulte la siguiente sección, Filtro comportamiento. | 10.0.0.0/16 |
| Un indicador que indica si se debe excluir o incluir la coincidencia de destino. Para obtener más información, consulte la siguiente sección. Los valores válidos son | incluir |
| El filtro del rango de CIDR de origen al que se debe alertar. Para obtener más información, consulte la siguiente sección. | 118.2.0.0/16 |
| El indicador para excluir o incluir la coincidencia de origen. Para obtener más información, consulte la siguiente sección. | incluir |
Comportamiento del filtro
Si no ha configurado ningún filtro en AWS Lambda, todas las alertas generadas se envían a su canal de Slack. El origen y el destino IPs de las alertas generadas coinciden con los rangos de CIDR que configuró al implementar la plantilla. CloudFormation Si hay una coincidencia, se aplica la condición. Si el origen o el destino se encuentran dentro del rango CIDR configurado y al menos uno de ellos está configurado con la condición include
, se genera una alerta. Las siguientes tablas proporcionan ejemplos de valores, condiciones y resultados del CIDR.
CIDR configurado | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 10.0.0.25 | incluir | Sí |
Destino | 100.0.0.0/16 | 202.0.0.13 | incluir |
CIDR configurado | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 10,00,25 | excluya | No |
Destino | 100.0.0.0/16 | 202.0.0.13 | incluir |
CIDR configurado | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 10,00,25 | incluir | Sí |
Destino | 100.0.0.0/16 | 100,0.0,13 | incluir |
CIDR configurado | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 90,0,25 | incluir | Sí |
Destino | Nulo | 202,0,0,13 | incluir |
CIDR configurado | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 90,0,25 | incluir | No |
Destino | 100.0.0.0/16 | 202.0.0.13 | incluir |