Saltar al contenido

¿Cómo configuro mis reglas de Network Firewall para bloquear o permitir dominios específicos?

10 minutos de lectura
0

Quiero usar AWS Network Firewall para filtrar el tráfico web saliente de los recursos de mi Amazon Virtual Cloud (Amazon VPC).

Descripción corta

AWS Network Firewall usa la orden de acción o la orden de evaluación estricta para admitir el filtrado basado en dominios para el tráfico web saliente. Para configurar las reglas, utiliza un grupo de reglas de lista de dominios con estado o cadenas compatibles con Suricata. La inspección de dominios funciona para los protocolos HTTP y HTTPS.

En el caso de HTTP, el firewall inspecciona el encabezado del host. Para HTTPS, el firewall usa la indicación del nombre del servidor (SNI) en el protocolo de enlace TLS. Cuando usas una lista de dominios permitidos, Network Firewall envía el tráfico solo a los dominios especificados y descarta todas las demás solicitudes.

Para obtener más información, consulta Cadenas de reglas compatibles con Suricata en AWS Network Firewall y Grupos de reglas de la lista de dominios con estado en AWS Network Firewall.

Resolución

Configuración de un grupo de la lista de dominios para una política con el orden de acción predeterminado

Sigue estos pasos:

  1. Crea un firewall.
  2. En el panel de navegación de la consola de Amazon VPC, en Network Firewall, selecciona Políticas de firewall.
  3. Selecciona la política de firewall de orden de acción predeterminado que desees editar.
  4. En Grupos de reglas con estado, elige Acciones y, a continuación, elige Crear grupo de reglas con estado.
  5. En Formato del grupo de reglas con estado, elige Lista de dominios.
    Nota: No puedes cambiar el orden de las reglas con estado porque se hereda de la política. El orden de las reglas aparece como Orden de acción.
  6. Introduce un nombre de grupo de reglas único.
  7. En Reserva de capacidad, introduce el número estimado de dominios que incluirá la lista.
    Nota: Después de crear el grupo de reglas, no puedes cambiar el valor.
  8. En Lista de dominios, en Origen de nombre de dominio, introduce los nombres de dominio que desees que coincidan. Puedes definir los dominios como una coincidencia exacta, como abc.example.com. También puedes definirlos como comodín, como .ejemplo.com.
  9. En Intervalos de CIDR, elige una de las siguientes opciones:
    Predeterminado para una dirección IP de origen que existe en la misma VPC que el firewall.
    Personalizado para una dirección IP de origen que existe en una VPC remota. Introduce las subredes de origen que deseas que el firewall inspeccione en Intervalos de CIDR de dirección IP de origen.
  10. En Protocolos, elige HTTP y HTTPS.
  11. En Acción, elige Permitir.
  12. Selecciona Crear grupo de reglas.

Definición de una regla IPS compatible con Suricata para una política con la evaluación de la orden de acción

Sigue estos pasos:

  1. Crea un firewall.
  2. En el panel de navegación de la consola de Amazon VPC, en Network Firewall, selecciona Políticas de firewall.
  3. Selecciona la política de firewall de orden de acción predeterminado que desees editar.
  4. En Grupos de reglas con estado, elige Acciones y, a continuación, elige Crear grupo de reglas con estado.
  5. En Formato de grupo de reglas con estado, elige Cadena de reglas compatible con Suricata.
    Nota: No puedes cambiar el orden de las reglas con estado porque se hereda de la política. El orden de las reglas aparece como Orden de acción.
  6. Introduce un nombre de grupo de reglas único.
  7. En Reserva de capacidad, introduce el número estimado de dominios que incluirá la lista.
    Nota: Después de crear el grupo de reglas, no puedes cambiar el valor.
  8. (Opcional) Define variables de reglas personalizadas para usarlas en las firmas de Suricata.
  9. (Opcional) Define las referencias del conjunto de direcciones IP para usarlas en las firmas de Suricata.
  10. En Cadena de reglas compatible con Suricata, introduce las siguientes reglas:
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;)

Nota: En las reglas anteriores, sustituye los dominios por los dominios que desees incluir. Selecciona Crear grupo de reglas.

Nota: Las reglas de dominio suelen incluir la palabra clave del flujo establecido, pero es posible que esta no tenga en cuenta todos los casos en la periferia de intercambio de paquetes fuera de flujo. Antes de usar cualquier lista de reglas de ejemplo, prueba la regla para comprobar que funciona según lo esperado.

Configuración de un grupo de reglas de la lista de dominios para una política con el orden de evaluación estricto

Sigue estos pasos:

  1. Crea un firewall.
  2. En el panel de navegación de la consola de Amazon VPC, en Network Firewall, selecciona Políticas de firewall.
  3. Selecciona la política de firewall de orden de evaluación estricto que desees editar.
  4. En Grupos de reglas con estado, elige Acciones y, a continuación, elige Crear grupo de reglas con estado.
  5. En Formato del grupo de reglas con estado, elige Lista de dominios.
    Nota: No puedes cambiar el orden de las reglas con estado porque se hereda de la política. El Orden de las reglas aparece como Estricto.
  6. Introduce un nombre de grupo de reglas único.
  7. En Reserva de capacidad, introduce el número estimado de dominios que incluirá la lista.
    Nota: Después de crear el grupo de reglas, no puedes cambiar el valor.
  8. En Lista de dominios, en Origen de nombre de dominio, introduce los nombres de dominio que desees que coincidan. Puedes definir los dominios como una coincidencia exacta, como abc.example.com. También puedes definirlos como comodín, como .ejemplo.com.
  9. En Intervalos de CIDR, elige una de las siguientes opciones:
    Predeterminado para una dirección IP de origen que existe en la misma VPC que el firewall.
    Personalizado para una dirección IP de origen que existe en una VPC remota. Introduce las subredes de origen que deseas que el firewall inspeccione en Intervalos de CIDR de dirección IP de origen.
  10. En Protocolos, elige HTTP y HTTPS.
  11. En Acción, elige Permitir.
  12. Selecciona Crear grupo de reglas.
  13. En el panel de navegación, en Network Firewall, elige Políticas de firewall.
  14. Selecciona tu política de orden estricto.
  15. En Orden de evaluación de las reglas con estado y acciones predeterminadas, elige Editar.
  16. En Acciones predeterminadas, elige Eliminar lo establecido y, a continuación, selecciona Guardar.

Definición de una regla de IPS compatible con Suricata para una política con un orden de evaluación estricto

Sigue estos pasos:

  1. Crea un firewall.
  2. En el panel de navegación de la consola de Amazon VPC, en Network Firewall, selecciona Políticas de firewall.
  3. Selecciona la política de firewall de orden de evaluación estricto que desees editar.
  4. En Grupos de reglas con estado, elige Acciones y, a continuación, elige Crear grupo de reglas con estado.
  5. En Formato de grupo de reglas con estado, elige Cadena de reglas compatible con Suricata.
    Nota: No puedes cambiar el orden de las reglas con estado porque se hereda de la política. El Orden de las reglas aparece como Estricto.
  6. Introduce un nombre de grupo de reglas único.
  7. En Reserva de capacidad, introduce el número estimado de dominios que incluirá la lista.
    Nota: Después de crear el grupo de reglas, no puedes cambiar el valor.
  8. (Opcional) Define variables de reglas personalizadas para usarlas en las firmas de Suricata que definas.
  9. (Opcional) Define las referencias del conjunto de direcciones IP para usarlas en las firmas de Suricata que definas.
  10. En Cadena de reglas compatible con Suricata, introduce las siguientes reglas:
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;)

Nota: En las reglas anteriores, sustituye los dominios por los dominios que desees incluir. Selecciona Crear grupo de reglas. En el panel de navegación, en Network Firewall, elige Políticas de firewall. Selecciona tu política de orden estricto. En Orden de evaluación de las reglas con estado y acciones predeterminadas, elige Editar. En Acciones predeterminadas, elige Eliminar lo establecido y, a continuación, selecciona Guardar.

Nota: Las reglas de dominio suelen incluir la palabra clave del flujo establecido, pero es posible que esta palabra clave no capture todos los casos en la periferia en los que los paquetes se intercambian fuera de flujos de conexión normales. Antes de usar cualquier lista de reglas de ejemplo, prueba la regla para comprobar que funciona según lo esperado.

Cómo probar las configuraciones

Para comprobar que las configuraciones funcionan, ejecuta los comandos curl en los dominios especificados.

El siguiente comando de ejemplo prueba el acceso HTTPS al dominio https://ejemplo.com:

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

Si se permite el acceso, recibirás el siguiente resultado:

< HTTP/2 200

El siguiente comando de ejemplo prueba el acceso HTTP a http://www.google.com:

curl -v http://www.google.com

El siguiente resultado de ejemplo muestra que las reglas de firewall bloquean el tráfico HTTP porque la conexión se detiene en la solicitud GET:

* 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: /

El siguiente comando de ejemplo prueba el acceso HTTPS a https://www.google.com:

curl -v https://www.google.com

El resultado muestra que el tráfico HTTPS está bloqueado porque la conexión se detiene durante el protocolo de enlace TLS:

* Trying 172.253.115.147:443...
* Connected to www.google.com (https://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):

Información relacionada

Políticas de firewall en Network Firewall

Creación de un grupo de reglas con estado

Ejemplos de reglas con estado para Network Firewall

OFICIAL DE AWSActualizada hace 6 meses