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.
Envía alertas desde AWS Network Firewall a un canal de Slack
Creado por Venki Srivatsav (AWS) y Aromal Raj Jayarajan () AWS
Repositorio de código: NfwSlackIntegration | Entorno: PoC o piloto | Tecnologías: seguridad, identidad, conformidad; redes |
AWSservicios: AWS Lambda; AWS Network Firewall; Amazon S3 |
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 las tarjetas de pago (PCIDSS), exigen la instalación y el mantenimiento de un firewall para proteger los datos de los clientes. En la AWS nube, 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 VPCs se ejecutan en conformidad con un estándar de conformidad. 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
El punto de conexión de Slack URL con un API token (selecciona tu aplicación
y elige un webhook entrante para verlaURL; para obtener más información, consulta Cómo crear un webhook entrante en la documentación de Slack) API Una instancia de prueba de Amazon Elastic Compute Cloud (AmazonEC2) 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
Uno 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
AWSSecrets Manager: secreto para almacenar Slack URL
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. VPCIncluye dos subredes protegidas y dos subredes de firewall con puntos finales de 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 recupera el Slack configurado de Secrets URL 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 AWS blog Modelos de implementación para AWS Network Firewall
Herramientas
AWSservicios
AWSNetwork Firewall es un firewall de red gestionado y con estado y un servicio de detección y prevención de intrusiones para VPCs la AWS nube. Puede usar Network Firewall para filtrar el tráfico en su perímetro VPC y proteger sus cargas de trabajo. AWS
AWSSecrets Manager es un servicio de almacenamiento y recuperación de credenciales. Con Secrets Manager, puedes reemplazar las credenciales codificadas en tu código, incluidas las contraseñas, por una API llamada a Secrets Manager para recuperar el secreto mediante programación. Este patrón usa Secrets Manager para almacenar el SlackURL.
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 CloudFormationle ayuda a modelar y configurar sus AWS recursos, 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 se 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á:
Un conjunto de CloudFormation archivos en YAML formato. 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 AWS CloudFormation consola Para obtener más información sobre la implementación de CloudFormation plantillas, consulta Cómo crear una pila en la AWS CloudFormation consola 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 AWS CloudFormation consola o la interfaz de línea de AWS comandos (AWSCLI) para comprobar que se han creado los recursos que figuran en la sección Pila de tecnologías de Target. 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 Amazon Linux 2 AMI (HVM) para usarlo como HTTPS servidor. Para obtener instrucciones, consulta Cómo lanzar una instancia en la EC2 documentación de Amazon. Nota: Amazon 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 CIDR filtro que no sea demasiado estrecho (por ejemplo, un CIDR valor con /32 se consideraría demasiado estrecho y /8 sería demasiado amplio). 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
Modelos de implementación para AWS Network Firewall
(AWSentrada del blog) AWSPolíticas de Network Firewall (AWSdocumentación)
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 parámetros
Parámetro | Descripción | Valor predeterminado o de muestra |
---|---|---|
| El nombre del que se VPC va a crear. | Inspección |
| El CIDR rango que se va VPC a crear. | 10.0.0.0/16 |
| Cómo se distribuyen las EC2 instancias en el hardware físico. Las opciones son | predeterminada |
| La primera zona de disponibilidad de la infraestructura. | us-east-2a |
| La segunda zona de disponibilidad de la infraestructura. | us-east-2b |
| El CIDR rango de la primera subred del firewall (mínimo /28). | 10.0.1.0/24 |
| El CIDR rango de la segunda subred del firewall (mínimo /28). | 10.0.2.0/24 |
| El CIDR rango de la primera subred protegida (carga de trabajo). | 10.0.3.0/24 |
| El CIDR rango 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 guarda el Slack. URL | 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 Slack. URL | 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 del rango de destino. CIDR 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 CIDR rango de origen que se va a 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 has configurado ningún filtro en AWS Lambda, todas las alertas generadas se envían a tu canal de Slack. El origen y el destino IPs de las alertas generadas coinciden con los CIDR rangos que configuraste al implementar la CloudFormation plantilla. Si hay una coincidencia, se aplica la condición. Si el origen o el destino se encuentran dentro del CIDR rango configurado y al menos uno de ellos está configurado con la condicióninclude
, se genera una alerta. En las siguientes tablas se proporcionan ejemplos de CIDR valores, condiciones y resultados.
Configurado CIDR | 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 |
Configurado CIDR | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 10.0.0.25 | excluya | No |
Destino | 100.0.0.0/16 | 202.0.0.13 | incluir |
Configurado CIDR | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 10.0.0.25 | incluir | Sí |
Destino | 100.0.0.0/16 | 100,0.0,13 | incluir |
Configurado CIDR | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 90.0.0.25 | incluir | Sí |
Destino | Nulo | 202,0,0,13 | incluir |
Configurado CIDR | IP de alerta | Configured | Alerta | |
---|---|---|---|---|
Origen | 10.0.0.0/16 | 90.0.0.25 | incluir | No |
Destino | 100.0.0.0/16 | 202.0.0.13 | incluir |