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
Créée par Venki Srivatsav (AWS) et Aromal Raj Jayarajan (AWS)
Récapitulatif
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
Prérequis
Chaîne Slack (voir Commencer
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
et choisissez un webhook entrant pour voir son URL ; pour plus d'informations, consultez la section Création d'un webhook entrant 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
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
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. 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.

Pour plus d'informations sur cette architecture, consultez le billet de blog AWS Deployment models for AWS Network Firewall
Outils
Services AWS
AWS Network Firewall est un pare-feu réseau 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 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) 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 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 Integrationsrc
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
Tâche | Description | Compétences requises |
---|---|---|
Créez un compartiment S3. |
Pour plus d'informations, consultez la section Création d'un compartiment 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. |
| Développeur d'applications, propriétaire de l'application, administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Lancez le CloudFormation modèle. | Ouvrez la CloudFormation console AWS 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 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. | Développeur d'applications, propriétaire de l'application, administrateur du cloud |
Créez la pile. |
| Développeur d'applications, propriétaire de l'application, administrateur du cloud |
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 stack ont été créées. Si le déploiement du CloudFormation modèle échoue, vérifiez les valeurs que vous avez fournies pour les | 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/ 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 dans la EC2 documentation Amazon. NoteLe support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez Amazon Linux 2 FAQs 3. Utilisez les données utilisateur suivantes pour installer un serveur Web sur l' EC2 instance :
4. Créez les règles de pare-feu réseau suivantes : Règle d'apatridie :
Règle dynamique :
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 :
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. | Développeur d'applications, propriétaire de l'application, administrateur du cloud |
Ressources connexes
Modèles de déploiement pour AWS Network Firewall
(article de blog AWS) Politiques d'AWS Network Firewall (documentation AWS)
Network Firewall Slack Integration
(GitHub référentiel) Création d'un espace de travail Slack
(centre d'aide Slack)
Informations supplémentaires
CloudFormation parameters
Paramètre | Description | Valeur par défaut ou valeur d'échantillon |
---|---|---|
| Nom du VPC à créer. | Inspection |
| La plage CIDR que le VPC doit créer. | 10.0.0.0/16 |
| Comment EC2 les instances sont distribuées sur le matériel physique. Les options sont | default |
| La première zone de disponibilité de l'infrastructure. | us-east-2a |
| La deuxième zone de disponibilité de l'infrastructure. | us-east-2b |
| La plage CIDR pour le premier sous-réseau de pare-feu (minimum /28). | 10.0.1.0/24 |
| La plage CIDR pour le deuxième sous-réseau de pare-feu (minimum /28). | 10.0.2.0/24 |
| La plage CIDR pour le premier sous-réseau protégé (charge de travail). | 10.0.3.0/24 |
| La plage CIDR pour le deuxième sous-réseau protégé (charge de travail). | 10.0.4.0/24 |
| Le nom du compartiment S3 existant dans lequel vous avez chargé le code source Lambda. | us-w2- yourname-lambda-functions |
| Le préfixe du compartiment S3 dans lequel vous avez chargé le code source Lambda. | test AOD |
| Le nom du secret qui contient l'URL de Slack. | SlackEnpoint-Cfn |
| Le nom de la chaîne Slack que vous avez créée. | quelques notifications de nom |
| Nom d'utilisateur Slack. | Utilisateur de Slack |
| Il peut s'agir de n'importe quelle clé. Nous vous recommandons d'utiliser la valeur par défaut. | URL du webhook |
| La valeur de l'URL Slack. | https://hooks.slack.com/services/T ? ? ? 9E ? /A031885 JRM7 /9D4Y ? ? ? ? ? |
| 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 |
| Le nom du tag pour le secret. | AppName |
| La valeur de balise pour le nom de balise spécifié. | LambdaSlackIntegration |
| 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 |
| 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 | inclure |
| Le filtre correspondant à la plage d'adresses CIDR source à alerter. Pour plus d'informations, consultez la section suivante, . | 118,2,0,0/16 |
| 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 conditioninclude
, 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 (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 | exclure | Non |
Destination (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 (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 (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 (Destination) | 100,0,0/16 | 202,0.0.13 | inclure |