Ir para o conteúdo

Como configuro minhas regras de Network Firewall para bloquear ou permitir domínios específicos?

9 minuto de leitura
0

Quero usar o AWS Network Firewall para filtrar o tráfego de saída da web dos recursos na minha Amazon Virtual Private Cloud (Amazon VPC).

Breve descrição

O AWS Network Firewall usa a ordem de ação ou a ordem de avaliação estrita para oferecer suporte à filtragem baseada em domínio para tráfego de saída da web. Para configurar regras, use um grupo de regras de lista de domínios com estado ou strings compatíveis com Suricata. A inspeção de domínio funciona para protocolos HTTP e HTTPS.

Para HTTP, o firewall inspeciona o cabeçalho do host. Para HTTPS, o firewall usa a Indicação de Nome de Servidor (Server Name Indication, SNI) no handshake TLS. Quando você usa uma lista de permissões de domínio, o Network Firewall envia tráfego somente para domínios específicos e descarta todas as outras solicitações.

Para obter mais informações, consulte strings de regras compatíveis com Suricata no AWS Network Firewall e grupos de regras de lista de domínios com estado no AWS Network Firewall.

Resolução

Configurar um grupo de listas de domínios para uma política com a ordem de ação padrão

Conclua as seguintes etapas:

  1. Crie um firewall.
  2. No painel de navegação do console do Amazon VPC, em Network Firewall, escolha Políticas de Firewall.
  3. Selecione a política de firewall de ordem de ação padrão que você deseja editar.
  4. Em Grupos de regras com estado, escolha Ações e, em seguida, escolha Criar grupo de regras com estado.
  5. Em Formato de grupo de regras com estado, escolha Lista de domínios.
    Observação: não é possível alterar a ordem de regra com estado porque ela é herdada da política. A ordem da regra aparece como Ordem de ação.
  6. Insira um nome exclusivo para o grupo de regras.
  7. Em Reserva de capacidade, insira um número estimado de domínios para incluir na lista.
    Observação: depois de criar o grupo de regras, você não poderá alterar o valor.
  8. Em Lista de domínios, em Origem do nome de domínio, insira os nomes de domínio que você deseja corresponder. É possível definir domínios como uma correspondência exata, como abc.exemplo.com. Também é possível defini-los como curinga, como .exemplo.com.
  9. Para intervalos CIDR, escolha uma das seguintes opções:
    Predefina para um endereço IP de origem que existe na mesma VPC do firewall.
    Personalize para um endereço IP de origem que existe em uma VPC remota. Insira as sub-redes de origem que você deseja que o firewall inspecione em intervalos CIDR de IP de origem.
  10. Em Protocolos, escolha HTTP e HTTPS.
  11. Em Ação, escolha Permitir.
  12. Escolha Criar grupo de regras.

Defina uma regra de IPS compatível com Suricata para uma política com a avaliação da ordem de ação

Conclua as seguintes etapas:

  1. Crie um firewall.
  2. No painel de navegação do console do Amazon VPC, em Network Firewall, escolha Políticas de Firewall.
  3. Selecione a política de firewall de ordem de ação padrão que você deseja editar.
  4. Em Grupos de regras com estado, escolha Ações e, em seguida, escolha Criar grupo de regras com estado.
  5. Para o formato de grupo de regras com estado, escolha String de regras compatível com Suricata.
    Observação: não é possível alterar a ordem de regra com estado porque ela é herdada da política. A ordem da regra aparece como Ordem de ação.
  6. Insira um nome exclusivo para o grupo de regras.
  7. Em Reserva de capacidade, insira um número estimado de domínios para incluir na lista.
    Observação: depois de criar o grupo de regras, você não poderá alterar o valor.
  8. (Opcional) Defina variáveis de regra personalizada para usar nas assinaturas Suricata.
  9. (Opcional) Defina as referências do conjunto de IPs para usar nas assinaturas Suricata.
  10. Em String de regras compatível com Suricata, insira as seguintes regras:
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;)

Observação: nas regras anteriores, substitua os domínios pelos domínios que você deseja incluir. Escolha Criar grupo de regras.

Observação: regras de domínio geralmente incluem a palavra-chave de fluxo estabelecido, mas pode não cobrir todos os casos de borda de troca de pacotes fora do fluxo. Antes de usar qualquer exemplo de listagem de regras, teste a regra para verificar se ela funciona conforme o esperado.

Configurar um grupo de regras da lista de domínios para uma política com a ordem de avaliação estrita

Conclua as seguintes etapas:

  1. Crie um firewall.
  2. No painel de navegação do console do Amazon VPC, em Network Firewall, escolha Políticas de Firewall.
  3. Selecione a política de firewall de ordem de avaliação estrita que você deseja editar.
  4. Em Grupos de regras com estado, escolha Ações e, em seguida, escolha Criar grupo de regras com estado.
  5. Em Formato de grupo de regras com estado, escolha Lista de domínios.
    Observação: não é possível alterar uma ordem de regra com estado porque ela é herdada da política. A Ordem das regras aparece como Estrita.
  6. Insira um nome exclusivo para o grupo de regras.
  7. Em Reserva de capacidade, insira um número estimado de domínios para incluir na lista.
    Observação: depois de criar o grupo de regras, você não poderá alterar o valor.
  8. Em Lista de domínios, em Origem do nome de domínio, insira os nomes de domínio que você deseja corresponder. É possível definir domínios como uma correspondência exata, como abc.exemplo.com. Também é possível defini-los como curinga, como .exemplo.com.
  9. Para intervalos CIDR, escolha uma das seguintes opções:
    Predefina para um endereço IP de origem que existe na mesma VPC do firewall.
    Personalize para um endereço IP de origem que existe em uma VPC remota. Insira as sub-redes de origem que você deseja que o firewall inspecione em intervalos CIDR de IP de origem.
  10. Em Protocolos, escolha HTTP e HTTPS.
  11. Em Ação, escolha Permitir.
  12. Escolha Criar grupo de regras.
  13. No painel de navegação, em Network Firewall, escolha Políticas de Firewall.
  14. Selecione sua política de ordem estrita.
  15. Em Ordem de avaliação da regra com estado e ações padrão, escolha Editar.
  16. Em Ações padrão, escolha Descartar estabelecido e, em seguida, escolha Salvar.

Defina uma regra de IPS compatível com Suricata para uma política com uma ordem de avaliação estrita

Conclua as seguintes etapas:

  1. Crie um firewall.
  2. No painel de navegação do console do Amazon VPC, em Network Firewall, escolha Políticas de Firewall.
  3. Selecione a política de firewall de ordem de avaliação estrita que você deseja editar.
  4. Em Grupos de regras com estado, escolha Ações e, em seguida, escolha Criar grupo de regras com estado.
  5. Para o formato de grupo de regras com estado, escolha String de regras compatível com Suricata.
    Observação: não é possível alterar a ordem de regra com estado porque ela é herdada da política. A Ordem das regras aparece como Estrita.
  6. Insira um nome exclusivo para o grupo de regras.
  7. Em Reserva de capacidade, insira um número estimado de domínios para incluir na lista.
    Observação: depois de criar o grupo de regras, você não poderá alterar o valor.
  8. (Opcional) Defina variáveis de regra personalizadas para usar nas assinaturas Suricata que você definir.
  9. (Opcional) Defina as referências do conjunto de IPs para usar nas assinaturas Suricata que você definir.
  10. Em String de regras compatível com Suricata, insira as seguintes regras:
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;)

Observação: nas regras anteriores, substitua os domínios pelos domínios que você deseja incluir. Escolha Criar grupo de regras. No painel de navegação, em Network Firewall, escolha Políticas de Firewall. Selecione sua política de ordem estrita. Em Ordem de avaliação da regra com estado e ações padrão, escolha Editar. Em Ações padrão, escolha Descartar estabelecido e, em seguida, escolha Salvar.

Observação: as regras de domínio geralmente incluem a palavra-chave de fluxo estabelecido. Essa palavra-chave pode não captar todos os casos de borda em que os pacotes são trocados fora dos fluxos normais de conexão. Antes de usar qualquer exemplo de listagem de regras, teste a regra para verificar se ela funciona conforme o esperado.

Teste sua configuração

Para testar se suas configurações funcionam, execute comandos curl nos domínios especificados.

O exemplo de comando a seguir testa o acesso HTTPS ao domínio https://exemplo.com:

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

Se o acesso for permitido, você receberá a seguinte saída:

< HTTP/2 200

O exemplo de comando a seguir testa o acesso HTTP a http://www.google.com:

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

O exemplo de saída a seguir mostra que as regras de firewall estão bloqueando o tráfego HTTP porque a conexão é interrompida na solicitação 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: /

O exemplo de comando a seguir testa o acesso HTTPS a https://www.google.com:

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

A saída mostra que o tráfego HTTPS está bloqueado porque a conexão é interrompida durante o handshake 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):

Informações relacionadas

Políticas de Firewall no Network Firewall

Criação de um grupo de regras com estado

Exemplos de regras com estado para o Network Firewall

AWS OFICIALAtualizada há 10 meses