AWS Network Firewall est un service géré de pare-feu stateful et de détection/prévention des intrusions pour votre Amazon Virtual Private Cloud (VPC). Grâce à son inspection stateful, il évalue le contexte du trafic réseau pour des décisions plus pertinentes. Son système de prévention des intrusions (IPS) assure une inspection active des flux, avec des protections en temps réel aux niveaux réseau et applicatif contre les exploitations de vulnérabilités et les attaques par force brute.
AWS enrichit continuellement ses capacités et devrait poursuivre cette évolution en intégrant de nouvelles fonctionnalités pour rivaliser avec les NGFW traditionnels.
Le 19 décembre, la prise en charge par AWS Network Firewall de l'inspection TLS (Transport Layer Security) en sortie est devenue disponible en disponibilité générale dans toutes les régions AWS. Cette fonctionnalité permet de déchiffrer, inspecter puis rechiffrer le trafic TLS sortant à destination d'Internet, d'un autre VPC ou d'un autre sous-réseau. À noter que l'inspection TLS en entrée sur Network Firewall est déjà disponible dans toutes les régions AWS.
Pourquoi les organisations ont besoin du déchiffrement SSL/TLS sortant
L'inspection TLS sortante permet aux organisations de surveiller et d'inspecter leur trafic chiffré sortant. Elle aide à détecter et à prévenir l'exfiltration de données, les malwares et d'autres menaces de sécurité. Le chiffrement TLS est conçu pour acheminer le trafic de façon sécurisée sur Internet, mais il peut aussi servir à dissimuler du trafic malveillant. En inspectant les connexions TLS sortantes, les organisations peuvent intercepter et filtrer les flux à risque. Cette approche s'avère précieuse pour détecter et prévenir les fuites de données et garantir la conformité aux exigences réglementaires.
Schéma d'architecture de référence et flux de trafic

Sans Network Firewall, toute requête chiffrée SSL vers un site web s'effectue directement entre le client et le serveur du site. Une fois l'inspection TLS activée sur le pare-feu, celui-ci agit comme un middlebox (dispositif d'interception SSL) entre votre navigateur et le serveur.
À noter que l'inspection TLS ne se limite pas au trafic HTTPS : elle couvre également d'autres protocoles applicatifs basés sur TCP qui s'appuient sur TLS, comme SMTP et POP3s.
Exemple de flux de trafic — [pour le trafic HTTPS]
- Requête du client : le client initie une connexion sécurisée vers un serveur via le protocole HTTPS.
- Server hello et certificat : le serveur répond en envoyant ses ciphers SSL et son certificat au client.
- Inspection SSL par Network Firewall : il intercepte le certificat et le remplace par un nouveau certificat généré dynamiquement. Il établit sa propre connexion SSL avec le client en se faisant passer pour le serveur, puis ouvre une connexion sécurisée distincte avec le serveur réel pour le compte du client.
- Inspection du contenu : les données chiffrées émises par le client sont déchiffrées par Network Firewall pour identifier d'éventuels risques de sécurité (malwares, virus ou données non autorisées) selon les règles stateful de la politique du pare-feu. Le pare-feu peut autoriser ou interrompre la connexion. Si elle est autorisée, les données sont rechiffrées et transmises au serveur pour traitement.
- Réponse du serveur : le serveur répond à la requête du client avec des données chiffrées, qui empruntent le même chemin retour à travers le dispositif d'inspection SSL.
**Étapes de configuration**
Prérequis
- Choisissez une architecture et un modèle de déploiement adaptés à votre cas d'usage.
- Consultez les considérations et limitations.
Créer une configuration d'inspection TLS —
Connectez-vous à la console AWS et accédez aux configurations d'inspection TLS dans le service VPC. Cliquez sur "Create TLS inspection configuration" —

Sur la page Associate certificates, sélectionnez le certificat CA destiné à l'inspection SSL sortante et cliquez sur "Next".
Les exigences générales applicables aux certificats CA utilisés pour l'inspection SSL/TLS sortante sont décrites ici.

Renseignez le champ "Name" et, en option, la "Description" —

Sur la page suivante, définissez le périmètre du trafic que Network Firewall doit déchiffrer. Network Firewall déchiffre le trafic correspondant au 5-tuple défini dans cette configuration. Voici un exemple de configuration pour inspecter tout le trafic destiné au port 443. Cliquez sur "Add scope configuration" —

Vérifiez la configuration et cliquez sur "Next" —

Vous pouvez également définir votre propre clé gérée par le client pour chiffrer les données au repos. Nous laissons cette option décochée pour l'instant. Il est toutefois recommandé de cocher "Check certificate revocation status" afin de pouvoir agir sur les certificats serveur révoqués ou inconnus.

Ajoutez des Tags puis, sur la page "Review and create", revérifiez la configuration et cliquez sur "Create TLS inspection configuration" —

L'étape suivante consiste à ajouter la configuration d'inspection TLS à une politique de pare-feu.
Créez une politique de pare-feu et ajoutez-y la configuration d'inspection TLS à l'"Step 4". À noter qu'une configuration d'inspection TLS ne peut être ajoutée qu'à une nouvelle politique, jamais à une politique existante.

En revanche, il est possible de remplacer une configuration d'inspection TLS existante par une autre dans une politique de pare-feu via l'onglet "TLS inspection configuration".

Pour finaliser la configuration, modifiez la politique de pare-feu de votre Firewall existant —

Si vous n'avez pas encore lancé Network Firewall, suivez le lien ici et choisissez "associate an existing firewall policy" dans le menu déroulant à l'"Step 4", comme illustré ci-dessous —

À ce stade, "tout" trafic destiné au port 443 (périmètre) qui transite par Network Firewall fait l'objet d'une inspection TLS.
**Tests**
Place aux tests de la configuration. Si le routage VPC n'est pas en place, suivez la documentation AWS ici pour des instructions pas à pas.
Pour démontrer que le moteur SSL d'AWS Network Firewall voit bien le trafic HTTP déchiffré, j'ai créé une règle suricata STATEFUL qui bloque l'URI "download-anti-malware-testfile"
drop http $HOME_NET any -> $EXTERNAL_NET any (content:"download-anti-malware-testfile"; http_uri; msg:"Blocking bad domain"; flow:to_server, established; sid:2; rev:1;)
Connectez-vous à l'instance EC2 et exécutez la commande ci-dessous pour récupérer le fichier de test malware
curl -I https://www.eicar.org/download-anti-malware-testfile/ -v
La commande curl renvoie une alerte TLS, signe d'une rupture du processus de communication.
* using HTTP/1.x
> HEAD /download-anti-malware-testfile/ HTTP/1.1
> Host: www.eicar.org
> User-Agent: curl/8.5.0
> Accept: */*
>
TLS alert, close notify (256):
* Empty reply from server
* Closing connection
* TLS alert, close notify (256):
curl: (52) Empty reply from server
Si les logs CloudWatch sont activés, vous verrez les en-têtes HTTP déchiffrés ainsi que la règle correspondante. L'action a été "blocked" en raison de cette règle.
{
"firewall_name": "Firewall-outbound-inspection",
"availability_zone": "eu-west-1a",
"event_timestamp": "1708512471",
"event": {
"tx_id": 0,
"app_proto": "http",
"src_ip": "172.31.88.172",
"src_port": 41508,
"event_type": "alert",
"alert": {
"severity": 3,
"signature_id": 2,
"rev": 1,
"signature": "Blocking bad domain",
"action": "blocked",
"category": ""
},
"flow_id": 817400271818255,
"dest_ip": "89.238.73.97",
"proto": "TCP",
"http": {
"hostname": "www.eicar.org",
"url": "/download-anti-malware-testfile/",
"http_user_agent": "curl/8.5.0",
"http_method": "HEAD",
"protocol": "HTTP/1.1",
"length": 0
},
"dest_port": 443,
"timestamp": "2024-02-21T10:47:51.085575+0000"
}
}
**Tarification**
L'utilisation de l'inspection TLS entraîne des frais horaires supplémentaires au titre de l'Advanced Inspection. Dans certaines régions, des frais additionnels peuvent également s'appliquer pour le traitement des données par l'Advanced Inspection.
Par exemple, la grille tarifaire de la région Irlande ne facture aucun frais supplémentaire pour le traitement de trafic Advanced Inspection

En revanche, le traitement du trafic à Melbourne est facturé 0,009 $/Go

Plus d'informations sur la tarification ici.
**Conclusion**
Pour conclure, nous avons vu comment configurer Network Firewall pour permettre aux organisations d'inspecter le trafic chiffré sortant et ainsi détecter et prévenir les menaces dissimulées dans les connexions chiffrées SSL/TLS. Cette approche contribue à atténuer les risques liés aux activités malveillantes telles que les malwares, l'exfiltration de données et les communications de commande et contrôle.
En définitive, l'inspection SSL sortante constitue une mesure de sécurité essentielle : elle aide les organisations à renforcer leurs défenses, à protéger les données sensibles et à maintenir la conformité réglementaire face au paysage actuel des menaces.