Comment configurer les règles de mon pare-feu réseau pour bloquer ou autoriser des domaines spécifiques ?

Lecture de 11 minute(s)
0

Je souhaite filtrer le trafic Web sortant provenant des ressources de mon Amazon Virtual Cloud (Amazon VPC) à l’aide du pare-feu réseau AWS.

Brève description

Les politiques et les groupes de règles du pare-feu réseau sont définis selon leur ordre d’évaluation des règles, selon un ordre d’action par défaut ou un ordre d’évaluation strict. Une politique de pare-feu configurée pour l’ordre d’action par défaut évalue les règles dans l’ordre suivant : approbation, suppression, rejet et alerte. L’action dynamique par défaut pour une politique par défaut est « Réussite ».

Avec un ordre d’évaluation strict, les groupes de règles sont évalués par ordre de priorité, de la plus faible à la plus élevée. Les règles d’un groupe sont ensuite évaluées dans l’ordre dans lequel elles sont configurées. L’action dynamique par défaut pour une politique de commande stricte est configurable, par exemple en configurant Drop established. Les groupes de règles par défaut sont associés aux politiques d’ordre d’action par défaut, tandis que les groupes de règles d’ordre strict sont associés à des politiques d’ordre d’évaluation strictes.

Vous pouvez configurer le pare-feu réseau pour autoriser ou bloquer l’accès à des domaines spécifiques. Cela peut être fait pour les politiques ou les règles utilisant un ordre d’action par défaut ou un ordre d’évaluation strict en utilisant l’une des méthodes suivantes :

  • Groupe de règles de liste de domaines Stateful
  • Règles IPS compatibles avec Suricata

L’inspection des noms de domaine Stateful peut être configurée pour les protocoles HTTP et HTTPS. Pour HTTP, la demande n’est pas cryptée et permet au pare-feu réseau de voir la valeur du nom d’hôte dans l’en-tête de l’hôte HTTP. Pour HTTPS, le pare-feu réseau utilise l’extension SNI (Server Name Indication) dans l’établissement de contacts TLS pour déterminer le nom d’hôte. Le pare-feu compare ensuite le nom d’hôte (ou le nom de domaine) aux règles HTTP ou TLS configurées.

Avec une liste d’autorisation de domaines, le pare-feu transmet les requêtes HTTP ou HTTPS uniquement aux domaines spécifiés. Les demandes adressées à tous les autres domaines sont supprimées.

Résolution

Ordre d’action par défaut

Pour les politiques avec un ordre d’action par défaut, configurez un groupe de règles de liste de domaines pour autoriser les requêtes HTTP et HTTPS vers des domaines spécifiques.

1.    Ouvrez la console Amazon VPC.

2.    Create a firewall (Créez un pare-feu).

3.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

4.    Choisissez la politique de pare-feu d’ordre d’action par défaut que vous souhaitez modifier.

5.    Sous Stateful rule groups (Groupes de règles dynamiques), choisissez Actions, puis choisissez Create stateful rule group (Créer un groupe de règles dynamiques).

6.    Entrez un nom de groupe de règles unique.

7.    Pour la Capacity reservation (réserve de capacité), entrez une estimation du nombre de domaines que la liste inclura. Cette valeur ne peut pas être modifiée une fois le groupe de règles créé.

8.    Pour les Stateful rule group options (options du groupe de règles Stateful), choisissez Domain list (Liste des domaines).
Remarque : L’ordre des règles statutaires ne peut pas être modifié car il est hérité de la politique. Le Rule order (ordre des règles) apparaît comme Default (Par défaut).

9.    Sous Domain list (Liste des domaines), pour Domain name source (Source du nom de domaine), entrez les noms de domaine auxquels vous souhaitez faire correspondre. Les domaines peuvent être définis comme correspondant exactement, par exemple abc.example.com. Ils peuvent également être définis sous la forme d’un caractère générique, tel que .example.com.

10.    Pour le Source IPs type (type d’adresses IP source), choisissez Default (Par défaut) si l’adresse IP source existe dans le même VPC que le pare-feu. Choisissez Defined (Défini) si l’adresse IP source existe dans un VPC distant. Lorsque vous choisissez Defined (Défini), entrez les sous-réseaux source que vous souhaitez que le pare-feu inspecte sous Source IP CIDR ranges (Plages d’adresses CIDR IP source).

11.    Pour les Protocols (Protocoles), sélectionnez HTTP et HTTPS.

12.    Pour Action, choisissez Allow (Autoriser).

13.    Choisissez Create and add to policy (Créer et ajouter à la politique).

Pour définir manuellement des règles IPS compatibles avec Suricata pour HTTP et HTTPS, configurez une règle IPS compatible avec Suricata par défaut dans le groupe de règles.

1.    Ouvrez la console Amazon VPC.

2.    Create a firewall (Créez un pare-feu).

3.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

4.    Choisissez la politique de pare-feu d’ordre d’action par défaut que vous souhaitez modifier.

5.    Sous Stateful rule groups (Groupes de règles dynamiques), choisissez ** Actions**, puis choisissez Create stateful rule group (Créer un groupe de règles dynamiques).

6.    Entrez un nom de groupe de règles unique.

7.    Pour la Capacity reservation (réserve de capacité), entrez une estimation du nombre de règles que la liste inclura. Cette valeur ne peut pas être modifiée une fois le groupe de règles créé.

8.    Pour les Stateful rule group options (options de groupe de règles Stateful), choisissez les Suricata compatible IPS rules (règles IPS compatibles avec Suricata).
Remarque : L’ordre des règles statutaires ne peut pas être modifié car il est hérité de la politique. Le Rule order (ordre des règles) apparaît comme Default (Par défaut).

9.    (Facultatif) Définissez des variables de règle personnalisées à utiliser dans les signatures Suricata.

10.    (Facultatif) Définissez les références d’ensembles d’adresses IP à utiliser dans les signatures Suricata.

11.    Sous Suricata compatible IPS rules (règles IPS compatibles avec Suricata), entrez les règles suivantes. Remplacez les domaines par les domaines spécifiques auxquels vous souhaitez vous adresser.

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)
drop http $HOME_NET any -> $EXTERNAL_NET any (http.header_names; content:"|0d 0a|"; startswith; msg:"not matching any HTTP allowlisted FQDNs"; flow:to_server, established; sid:5; rev:1;)
drop tls $HOME_NET any -> $EXTERNAL_NET any (msg:"not matching any TLS allowlisted FQDNs"; flow:to_server, established; sid:6; rev:1;)

12.    Choisissez Create and add to policy (Créer et ajouter à la politique).
Remarque : Le mot clé de flux établi est couramment utilisé dans les règles de domaine, mais il se peut qu’il ne tienne pas compte de tous les cas extrêmes d’échange de paquets hors flux. Avant d’utiliser un exemple de liste de règles, testez la règle pour vérifier qu’elle fonctionne comme prévu.

Ordre d’évaluation strict

Pour les politiques avec un ordre d’évaluation strict, configurez un groupe de règles de liste de domaines pour autoriser les requêtes HTTP et HTTPS vers des domaines spécifiques.

1.    Ouvrez la console Amazon VPC.

2.    Create a firewall (Créez un pare-feu).

3.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

4.    Choisissez la politique de pare-feu stricte relative à l’ordre d’évaluation que vous souhaitez modifier.

5.    Sous Stateful rule groups (Groupes de règles dynamiques), choisissez ** Actions**, puis choisissez Create stateful rule group (Créer un groupe de règles dynamiques).

6.    Entrez un nom de groupe de règles unique.

7.    Pour la Capacity reservation (réserve de capacité), entrez une estimation du nombre de domaines que la liste inclura. Cette valeur ne peut pas être modifiée une fois le groupe de règles créé.

8.    Pour les Stateful rule group options (options du groupe de règles Stateful), choisissez Domain list (Liste des domaines).
Remarque : L’ordre des règles statutaires ne peut pas être modifié car il est hérité de la politique. Le Rule order (ordre des règles) apparaît comme Strict.

9.    Sous Domain list (Liste des domaines), pour Domain name source (Source du nom de domaine), entrez les noms de domaine auxquels vous souhaitez faire correspondre. Les domaines peuvent être définis comme correspondant exactement, par exemple abc.example.com. Ils peuvent également être définis sous la forme d’un caractère générique, tel que .example.com.

10.    Pour le Source IPs type (type d’adresses IP source), choisissez Default (Par défaut) si l’adresse IP source existe dans le même VPC que le pare-feu. Choisissez Defined (Défini) si l’adresse IP source existe dans un VPC distant. Lorsque vous choisissez Defined (Défini), entrez les sous-réseaux source que vous souhaitez que le pare-feu inspecte sous Source IP CIDR ranges (Plages d’adresses CIDR IP source).

11.    Pour les Protocols (Protocoles), choisissez HTTP et HTTPS.

12.    Pour Action, choisissez Allow (Autoriser).

13.    Choisissez Create and add to policy (Créer et ajouter à la politique).

14.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

15.    Choisissez la politique de commande stricte à laquelle vous avez ajouté ce groupe de règles.

16.Pour le Stateful rule evaluation order and default actions (ordre d’évaluation des règles Stateful et les actions par défaut), choisissez Edit (Modifier).

17.    Pour les Default actions (actions par défaut), choisissez Drop established (Supprimer les actions établies). Choisissez ensuite Save (Enregistrer).

Pour définir manuellement des règles IPS compatibles avec Suricata pour HTTP et HTTPS, configurez une règle IPS compatible avec Suricata selon un ordre d’évaluation strict dans le groupe de règles.

1.    Ouvrez la console Amazon VPC.

2.    Create a firewall (Créez un pare-feu).

3.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

4.    Choisissez la politique de pare-feu stricte relative à l’ordre d’évaluation que vous souhaitez modifier.

5.    Sous Stateful rule groups (Groupes de règles dynamiques), choisissez ** Actions**, puis choisissez Create stateful rule group (Créer un groupe de règles dynamiques).

6.    Entrez un nom de groupe de règles unique.

7.    Pour la Capacity reservation (réserve de capacité), entrez une estimation du nombre de règles que la liste inclura. Cette valeur ne peut pas être modifiée une fois le groupe de règles créé.

8.    Pour les Stateful rule group options (options de groupe de règles Stateful), choisissez les Suricata compatible IPS rules (règles IPS compatibles avec Suricata).
Remarque : L’ordre des règles statutaires ne peut pas être modifié car il est hérité de la politique. Le Rule order (ordre des règles) apparaît comme Strict.

9.    (Facultatif) Définissez des variables de règle personnalisées à utiliser dans les signatures Suricata que vous définissez.

10.    (Facultatif) Définissez les références d’ensembles d’adresses IP à utiliser dans les signatures Suricata que vous définissez.

11.    Sous Suricata compatible IPS rules (règles IPS compatibles avec Suricata), entrez les règles suivantes. Remplacez les domaines par les domaines spécifiques auxquels vous souhaitez vous adresser.

pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; dotprefix; content:".amazonaws.com"; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:1; rev:1;)
pass http $HOME_NET any -> $EXTERNAL_NET any (http.host; content:"example.com"; startswith; endswith; msg:"matching HTTP allowlisted FQDNs"; flow:to_server, established; sid:2; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; dotprefix; content:".amazonaws.com"; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:3; rev:1;)
pass tls $HOME_NET any -> $EXTERNAL_NET any (tls.sni; content:"example.com"; startswith; nocase; endswith; msg:"matching TLS allowlisted FQDNs"; flow:to_server, established; sid:4; rev:1;)

12.    Choisissez Create and add to policy (Créer et ajouter à la politique).

13.    Dans le volet de navigation, sous Network Firewall (Pare-feu réseau), choisissez Firewall policies (Politiques de pare-feu).

14.    Choisissez la politique de commande stricte à laquelle vous avez ajouté ce groupe de règles.

15.    Pour le Stateful rule evaluation order and default actions (ordre d’évaluation des règles Stateful et les actions par défaut), choisissez Edit (Modifier).

16.    Pour les Default actions (actions par défaut), choisissez Drop established (Supprimer les actions établies). Choisissez ensuite Save (Enregistrer).

Remarque : Le mot clé de flux établi est couramment utilisé dans les règles de domaine, mais il se peut qu’il ne tienne pas compte de tous les cas extrêmes d’échange de paquets hors flux. Avant d’utiliser un exemple de liste de règles, testez la règle pour vérifier qu’elle fonctionne comme prévu.

Vérification

Vous pouvez vérifier que les domaines sont gérés correctement en fonction de vos configurations en exécutant des commandes de test sur les domaines spécifiés.

Dans l’exemple suivant, le domaine https://example.com est autorisé et une réponse 200 OK est renvoyée au client :

curl -v --silent https://example.com --stderr - | grep 200
< HTTP/2 200

Dans l’exemple suivant, le domaine HTTP http://www.google.com est bloqué :

curl -v http://www.google.com
* Trying 172.253.115.99:80...
* Connected to www.google.com (http://www.google.com/) (172.253.115.99) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com (http://www.google.com/)
> User-Agent: curl/7.79.1
> Accept: /

Dans l’exemple suivant, le domaine HTTPS https://www.google.com est bloqué :

curl -v https://www.google.com
* Trying 172.253.115.147:443...
* Connected to www.google.com (http://www.google.com/) (172.253.115.147) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
* CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):

Informations connexes

Politiques de pare-feu dans le pare-feu réseau

Création d’un groupe de règles dynamiques

Exemples de règles statiques pour le pare-feu réseau

Ordre d’évaluation pour les groupes de règles statiques

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an