

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Envoyer des alertes depuis AWS Network Firewall vers un canal Slack
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel"></a>

*Venki Srivatsav et Aromal Raj Jayarajan, Amazon Web Services*

## Résumé
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-summary"></a>

Ce modèle décrit comment déployer un pare-feu en utilisant le pare-feu réseau Amazon Web Services (AWS) avec le modèle de déploiement distribué et comment propager les alertes générées par AWS Network Firewall vers un canal Slack configurable. 

Les normes de conformité telles que la norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS) exigent que vous installiez et mainteniez un pare-feu pour protéger les données des clients. Dans le cloud AWS, un cloud privé virtuel (VPC) est considéré comme un réseau physique dans le contexte de ces exigences de conformité. Vous pouvez utiliser Network Firewall pour surveiller le trafic réseau entre VPCs et pour protéger vos charges de travail exécutées conformément à VPCs une norme de conformité. Network Firewall bloque l'accès ou génère des alertes lorsqu'il détecte un accès non autorisé provenant VPCs d'autres utilisateurs du même compte. Toutefois, Network Firewall prend en charge un nombre limité de destinations pour envoyer les alertes. Ces destinations incluent les buckets Amazon Simple Storage Service (Amazon S3), les groupes de log CloudWatch Amazon et les flux de livraison Amazon Data Firehose. Toute action ultérieure concernant ces notifications nécessite une analyse hors ligne à l'aide d'Amazon Athena ou d'Amazon Kinesis. 

Ce modèle fournit une méthode pour propager les alertes générées par Network Firewall vers un canal Slack configurable pour une action ultérieure en temps quasi réel. Vous pouvez également étendre cette fonctionnalité à d'autres mécanismes d'alerte tels que PagerDuty Jira et le courrier électronique. (Ces personnalisations n'entrent pas dans le cadre de ce modèle.) 

## Conditions préalables et limitations
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-prereqs"></a>

**Conditions préalables**
+ Chaîne Slack (voir [Commencer](https://slack.com/help/articles/206845317-Create-a-Slack-workspace) dans le centre d'aide Slack)
+ Privilèges requis pour envoyer un message à la chaîne
+ L'URL du point de terminaison Slack avec un jeton d'API ([sélectionnez votre application](https://api.slack.com/apps) et choisissez un webhook entrant pour voir son URL ; pour plus d'informations, consultez la section [Création d'un webhook entrant](https://api.slack.com/messaging/webhooks#create_a_webhook) dans la documentation de l'API Slack) 
+ Une instance de test Amazon Elastic Compute Cloud (Amazon EC2) dans les sous-réseaux de charge de travail
+ Règles de test dans Network Firewall
+ Trafic réel ou simulé pour déclencher les règles de test
+ Un compartiment S3 pour contenir les fichiers source à déployer

**Limites**
+ Actuellement, cette solution ne prend en charge qu'une seule plage de routage interdomaines sans classe (CIDR) en tant que filtre pour la source et la destination. IPs

## Architecture
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-architecture"></a>

**Pile technologique cible**
+ Un VPC
+ Quatre sous-réseaux (deux pour le pare-feu et deux pour les charges de travail) 
+ Passerelle Internet
+ Quatre tables de routage avec règles 
+ Compartiment S3 utilisé comme destination d'alerte, configuré avec une politique de compartiment et des paramètres d'événements pour exécuter une fonction Lambda
+ Fonction Lambda avec rôle d'exécution, pour envoyer des notifications Slack
+ Secret d'AWS Secrets Manager pour le stockage de l'URL Slack
+ Pare-feu réseau avec configuration d'alertes
+ Canal Slack

[Tous les composants, à l'exception du canal Slack, sont fournis par les CloudFormation modèles et la fonction Lambda fournis avec ce modèle (voir la section Code).](#send-alerts-from-aws-network-firewall-to-a-slack-channel-tools)

**Architecture cible**

Ce modèle met en place un pare-feu réseau décentralisé avec intégration à Slack. Cette architecture consiste en un VPC avec deux zones de disponibilité. Le VPC comprend deux sous-réseaux protégés et deux sous-réseaux de pare-feu dotés de points de terminaison de pare-feu réseau. Tout le trafic entrant et sortant des sous-réseaux protégés peut être surveillé en [créant des politiques et des règles de pare-feu](https://docs.aws.amazon.com/waf/latest/developerguide/network-firewall-policies.html). Le pare-feu réseau est configuré pour placer toutes les alertes dans un compartiment S3. Ce compartiment S3 est configuré pour appeler une fonction Lambda lorsqu'il reçoit un `put` événement. La fonction Lambda extrait l'URL Slack configurée depuis Secrets Manager et envoie le message de notification à l'espace de travail Slack.

![\[Architecture cible pour un pare-feu réseau décentralisé avec intégration à Slack.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/7207fd56-094e-4af4-9ecd-75b122b82275/images/b1320776-c010-49b9-96bf-15e97ebe09ba.png)


Pour plus d'informations sur cette architecture, consultez le billet de blog AWS [Deployment models for AWS Network Firewall](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/).

## Outils
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-tools"></a>

**Services AWS**
+ [AWS Network Firewall est un pare-feu réseau](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) dynamique et géré, ainsi qu'un service de détection et de prévention des intrusions VPCs destiné au cloud AWS. Vous pouvez utiliser Network Firewall pour filtrer le trafic sur le périmètre de votre VPC et protéger vos charges de travail sur AWS.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) est un service de stockage et de récupération des informations d'identification. À l'aide de Secrets Manager, vous pouvez remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation. Ce modèle utilise Secrets Manager pour stocker l'URL de Slack.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets. Vous pouvez utiliser Amazon S3 pour stocker et récupérer n'importe quelle quantité de données, n'importe quand et depuis n'importe quel emplacement sur le Web. Ce modèle utilise Amazon S3 pour stocker les CloudFormation modèles et le script Python de la fonction Lambda. Il utilise également un compartiment S3 comme destination des alertes de pare-feu réseau.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Ce modèle utilise AWS CloudFormation pour déployer automatiquement une architecture distribuée pour Firewall Manager.

**Code**

Le code de ce modèle est disponible sur GitHub le référentiel [Network Firewall Slack Integration](https://github.com/aws-samples/aws-network-firewall-automation-examples/tree/main/NfwSlackIntegration/src). Dans le `src ` dossier du dépôt, vous trouverez :
+ Ensemble de CloudFormation fichiers au format YAML. Vous utilisez ces modèles pour configurer les composants de ce modèle.
+ Un fichier source Python (`slack-lambda.py`) pour créer la fonction Lambda.
+ Un package de déploiement d'archive .zip (`slack-lambda.py.zip`) pour télécharger le code de votre fonction Lambda.

Pour utiliser ces fichiers, suivez les instructions de la section suivante.

## Épopées
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-epics"></a>

### Configuration du compartiment S3
<a name="set-up-the-s3-bucket"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/send-alerts-from-aws-network-firewall-to-a-slack-channel.html)Pour plus d'informations, consultez [la section Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans la documentation Amazon S3.  | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 
| Téléchargez les CloudFormation modèles et le code Lambda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/send-alerts-from-aws-network-firewall-to-a-slack-channel.html) | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 

### Déployer le CloudFormation modèle
<a name="deploy-the-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le CloudFormation modèle. | Ouvrez la [ CloudFormation console AWS](https://console.aws.amazon.com/cloudformation/) dans la même région AWS que votre compartiment S3 et déployez le modèle`base.yml`. Ce modèle crée les ressources AWS et les fonctions Lambda requises pour les alertes à transmettre au canal Slack.Pour plus d'informations sur le déploiement CloudFormation de modèles, consultez la section [Création d'une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dans la CloudFormation documentation. | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 
| Complétez les paramètres du modèle. | Spécifiez le nom de la pile et configurez les valeurs des paramètres. Pour obtenir la liste des paramètres, leurs descriptions et leurs valeurs par défaut, voir *CloudFormation les paramètres* dans la section [Informations supplémentaires](#send-alerts-from-aws-network-firewall-to-a-slack-channel-additional).  | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 
| Créez la pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/send-alerts-from-aws-network-firewall-to-a-slack-channel.html) | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 

### Vérifiez la solution
<a name="verify-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez le déploiement. | Utilisez la CloudFormation console AWS ou l'interface de ligne de commande AWS (AWS CLI) pour vérifier que les ressources répertoriées dans [la section Target technology](#send-alerts-from-aws-network-firewall-to-a-slack-channel-architecture) stack ont été créées.  Si le déploiement du CloudFormation modèle échoue, vérifiez les valeurs que vous avez fournies pour les `pAvailabilityZone2 ` paramètres `pAvailabilityZone1 ` et. Ils doivent être adaptés à la région AWS dans laquelle vous déployez la solution. Pour obtenir la liste des zones de disponibilité pour chaque région, consultez [Régions et zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) dans la EC2 documentation Amazon.  | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 
| Fonctionnalité de test. | 1. Ouvrez la EC2 console Amazon à l'adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).2. Créez une EC2 instance dans l'un des sous-réseaux protégés. Choisissez une AMI Amazon Linux 2 (HVM) à utiliser comme serveur HTTPS. Pour obtenir des instructions, consultez la section [Lancer une instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance) dans la EC2 documentation Amazon.Le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).3. Utilisez les données utilisateur suivantes pour installer un serveur Web sur l' EC2 instance :<pre>#!/bin/bash<br />yum install httpd -y<br />systemctl start httpd<br />systemctl stop firewalld<br />cd /var/www/html<br />echo "Hello!! this is a NFW alert test page, 200 OK" > index.html</pre>4. Créez les règles de pare-feu réseau suivantes :*Règle d'apatridie :*<pre>Source: 0.0.0.0/0<br />Destination 10.0.3.65/32 (private IP of the EC2 instance)<br />Action: Forward </pre>*Règle dynamique :*<pre>Protocol: HTTP<br />Source ip/port: Any / Any<br />Destination ip/port: Any /Any</pre>5. Obtenez l'adresse IP publique du serveur Web que vous avez créé à l'étape 3.6. Accédez à l'adresse IP publique dans un navigateur. Le message suivant devrait s'afficher dans le navigateur :<pre>Hello!! this is a NFW alert test page, 200 OK </pre>Vous recevrez également une notification sur le canal Slack. La notification peut être différée en fonction de la taille du message. À des fins de test, envisagez de fournir un filtre CIDR qui n'est pas trop étroit (par exemple, une valeur CIDR avec /32 serait considérée comme trop étroite et /8 serait trop large). Pour plus d'informations, consultez la section *Comportement du filtre* dans [Informations supplémentaires](#send-alerts-from-aws-network-firewall-to-a-slack-channel-additional). | Développeur d'applications, propriétaire de l'application, administrateur du cloud | 

## Ressources connexes
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-resources"></a>
+ [Modèles de déploiement pour AWS Network Firewall](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/) (article de blog AWS)
+ [Politiques d'AWS Network Firewall](https://docs.aws.amazon.com/waf/latest/developerguide/network-firewall-policies.html) (documentation AWS)
+ [Network Firewall Slack Integration](https://github.com/aws-samples/aws-network-firewall-automation-examples/tree/main/NfwSlackIntegration/src) (GitHub référentiel)
+ [Création d'un espace de travail Slack](https://slack.com/help/articles/206845317-Create-a-Slack-workspace) (centre d'aide Slack)

## Informations supplémentaires
<a name="send-alerts-from-aws-network-firewall-to-a-slack-channel-additional"></a>

**CloudFormation parameters**


| 
| 
| Paramètre  | Description  | Valeur par défaut ou valeur d'échantillon  | 
| --- |--- |--- |
| `pVpcName` | Nom du VPC à créer. | Inspection | 
| `pVpcCidr` | La plage CIDR que le VPC doit créer. | 10.0.0.0/16 | 
| `pVpcInstanceTenancy` | Comment EC2 les instances sont distribuées sur le matériel physique. Les options sont `default ` (location partagée) ou `dedicated ` (location unique). | default | 
| `pAvailabilityZone1` | La première zone de disponibilité de l'infrastructure.  | us-east-2a  | 
| `pAvailabilityZone2` | La deuxième zone de disponibilité de l'infrastructure. | us-east-2b | 
| `pNetworkFirewallSubnet1Cidr` | La plage CIDR pour le premier sous-réseau de pare-feu (minimum /28). | 10.0.1.0/24 | 
| `pNetworkFirewallSubnet2Cidr` | La plage CIDR pour le deuxième sous-réseau de pare-feu (minimum /28). | 10.0.2.0/24 | 
| `pProtectedSubnet1Cidr` | La plage CIDR pour le premier sous-réseau protégé (charge de travail). | 10.0.3.0/24 | 
| `pProtectedSubnet2Cidr` | La plage CIDR pour le deuxième sous-réseau protégé (charge de travail). | 10.0.4.0/24 | 
| `pS3BucketName` | Le nom du compartiment S3 existant dans lequel vous avez chargé le code source Lambda. | us-w2- yourname-lambda-functions | 
| `pS3KeyPrefix` | Le préfixe du compartiment S3 dans lequel vous avez chargé le code source Lambda. | test AOD  | 
| `pAWSSecretName4Slack` | Le nom du secret contenant l'URL de Slack. | SlackEnpoint-Cfn | 
| `pSlackChannelName` | Le nom de la chaîne Slack que vous avez créée. | quelques notifications de nom | 
| `pSlackUserName` | Nom d'utilisateur Slack. | Utilisateur de Slack | 
| `pSecretKey` | Il peut s'agir de n'importe quelle clé. Nous vous recommandons d'utiliser la valeur par défaut. | URL du webhook | 
| `pWebHookUrl` | La valeur de l'URL Slack. | https://hooks.slack.com/services/T ? ? ? 9E ? /A031885 JRM7 /9D4Y ? ? ? ? ? | 
| `pAlertS3Bucket` | Nom du compartiment S3 à utiliser comme destination des alertes de pare-feu réseau. Ce bucket sera créé pour vous. | us-w2- yourname-security-aod-alerts | 
| `pSecretTagName` | Le nom du tag pour le secret. | AppName | 
| `pSecretTagValue` | La valeur de balise pour le nom de balise spécifié. | LambdaSlackIntegration | 
| `pdestCidr` | Le filtre pour la plage d'adresses CIDR de destination. Pour plus d'informations, consultez la section suivante, *Comportement du filtre*. | 10.0.0.0/16 | 
| `pdestCondition` | Un drapeau pour indiquer s'il faut exclure ou inclure la correspondance de destination. Pour plus d'informations, consultez la section suivante, . Les valeurs valides sont `include ` et `exclude`. | inclure | 
| `psrcCidr` | Le filtre correspondant à la plage d'adresses CIDR source à alerter. Pour plus d'informations, consultez la section suivante, .  | 118,2,0,0/16 | 
| `psrcCondition` | L'indicateur permettant d'exclure ou d'inclure la correspondance source. Pour plus d'informations, consultez la section suivante, . | inclure | 

**Comportement du filtre**

Si vous n'avez configuré aucun filtre dans AWS Lambda, toutes les alertes générées sont envoyées à votre chaîne Slack. La source et la destination IPs des alertes générées sont comparées aux plages CIDR que vous avez configurées lors du déploiement du CloudFormation modèle. Si une correspondance est trouvée, la condition est appliquée. Si la source ou la destination se situent dans la plage CIDR configurée et qu'au moins l'une d'entre elles est configurée avec la condition`include`, une alerte est générée. Les tableaux suivants fournissent des exemples de valeurs, de conditions et de résultats CIDR.


| 
| 
|  | CIDR configuré  | IP d'alerte  | Configured  | Alerte  | 
| --- |--- |--- |--- |--- |
| **Source**  | 10.0.0.0/16  | 10,0.0.25  | inclure  | Oui  | 
| **Destination**  | 100,0,0/16  | 202,0.0.13  | inclure  | 


| 
| 
|  | CIDR configuré  | IP d'alerte  | Configured  | Alerte  | 
| --- |--- |--- |--- |--- |
| **Source**  | 10.0.0.0/16  | 10,0.0.25  | exclude  | Non  | 
| **Destination**  | 100,0,0/16  | 202,0.0.13  | inclure  | 


| 
| 
|  | CIDR configuré  | IP d'alerte  | Configured  | Alerte  | 
| --- |--- |--- |--- |--- |
| **Source**  | 10.0.0.0/16  | 10,0.0.25  | inclure  | Oui  | 
| **Destination**  | 100,0,0/16  | 100,0,13  | inclure  | 


| 
| 
|  | CIDR configuré  | IP d'alerte  | Configured  | Alerte  | 
| --- |--- |--- |--- |--- |
| **Source**  | 10.0.0.0/16  | 90,0.0.25  | inclure  | Oui  | 
| **Destination**  | Null  | 202,0.0.13  | inclure  | 


| 
| 
|  | CIDR configuré  | IP d'alerte  | Configured  | Alerte  | 
| --- |--- |--- |--- |--- |
| **Source**  | 10.0.0.0/16  | 90,0.0.25  | inclure  | Non  | 
| **Destination**  | 100,0,0/16  | 202,0.0.13  | inclure  | 