Rastreamento de conexão do grupo de segurança - Amazon Elastic Compute Cloud

Rastreamento de conexão do grupo de segurança

Os grupos de segurança usam o acompanhamento da conexão para acompanhar as informações sobre o tráfego de entrada e saída da instância. As regras são aplicadas com base no estado da conexão do tráfego para determinar se o tráfego é permitido ou negado. Com essa abordagem, os grupos de segurança são tipo com estado. Isso significa que as respostas ao tráfego de entrada têm permissão para sair da instância independentemente das regras do grupo de segurança de saída e vice-versa.

Por exemplo, suponha que você inicie um comando como netcat ou similar para instâncias de seu computador doméstico, e as regras de grupo de segurança de entrada permitam tráfego ICMP. As informações sobre a conexão (inclusive as informações da porta) são rastreadas. O tráfego de resposta da instância para o comando não é monitorado como uma nova solicitação, mas sim como uma conexão estabelecida e tem permissão para sair da instância, mesmo que as regras de seu grupo de segurança restrinjam o tráfego de saída ICMP.

Para protocolos diferentes de TCP, UDP ou ICMP, somente o endereço IP e o número do protocolo são acompanhados. Se a instância enviar tráfego para outro host e esse host iniciar o mesmo tipo de tráfego para a instância em 600 segundos, o grupo de segurança para a instância o aceitará independentemente das regras de entrada do grupo de segurança. O grupo de segurança aceitará isso, pois será considerado como tráfego de resposta para o tráfego original.

Quando você altera uma regra do grupo de segurança, suas conexões monitoradas não são imediatamente interrompidas. O grupo de segurança continua a permitir pacotes até o tempo limite das conexões existentes. Para garantir que o tráfego seja interrompido imediatamente, ou que todo o tráfego esteja sujeito às regras do firewall, independentemente do estado de monitoramento, será possível usar uma Network ACL para a sub-rede. As Network ACLs são stateless e, portanto, não permitem automaticamente o tráfego de resposta. A adição de uma ACL de rede que bloqueia o tráfego em qualquer direção quebra as conexões existentes. Para obter mais informações, consulte Network ACLs no Guia do usuário da Amazon VPC.

nota

Os grupos de segurança não têm efeito sobre o tráfego de DNS de ou para o Route 53 Resolver, às vezes chamadas de “endereço IP VPC+2” (consulte O que é o Amazon Route 53 Resolver? no Guia do desenvolvedor do Amazon Route 53) ou o “AmazonProvidedDNS” (consulte Trabalhar com conjuntos de opções de DHCP no Guia do usuário do Amazon Virtual Private Cloud). Se você quiser filtrar solicitações de DNS por meio do Route 53 Resolver, é possível habilitar o Route 53 Resolver DNS Firewall (consulte Route 53 Resolver DNS Firewall no Guia do desenvolvedor do Amazon Route 53).

Conexões não rastreadas

Nem todos os fluxos de tráfego são acompanhados. Se uma regra do grupo de segurança permitir fluxos TCP ou UDP para todo o tráfego (0.0.0.0/0 ou ::/0) e houver uma regra correspondente na outra direção que permita todo o tráfego de resposta (0.0.0.0/0 ou ::/0) para qualquer porta (0-65535), esse fluxo de tráfego não será monitorado, a menos que faça parte de uma conexão monitorada automaticamente. O tráfego de resposta para um fluxo não monitorado é permitido com base na regra de entrada ou de saída que permite o tráfego de resposta, e não é baseado nas informações de monitoramento.

Um fluxo de tráfego não acompanhado será interrompido imediatamente se a regra que permite o fluxo for removida ou alterada. Por exemplo, se você tiver uma regra de saída aberta (0.0.0.0/0) e remover uma regra que permita todo tráfego (porta TCP 22) SSH de entrada (0.0.0.0/0) para a instância (ou modificá-la de forma que a conexão não seja mais permitida), suas conexões SSH existentes na instância serão imediatamente descartadas. A conexão não estava sendo rastreada anteriormente, então a alteração interromperá a conexão. Por outro lado, se você tiver uma regra de entrada mais restrita que inicialmente permita uma conexão SSH (o que significa que a conexão foi monitorada), mas altere essa regra para não permitir mais novas conexões do endereço do cliente SSH atual, a conexão existente não será interrompida pela alteração da regra.

Conexões rastreadas automaticamente

As conexões feitas a seguir são monitoradas automaticamente, mesmo que a configuração do grupo de segurança não exija monitoramento:

  • Gateways da Internet apenas de saída

  • Aceleradoras do Global Accelerator

  • Gateways NAT

  • Endpoints do Network Firewall

  • Network Load Balancers

  • AWS PrivateLink (endpoints da VPC de interface)

  • AWS Lambda (Interfaces de rede elástica hiperplanas)

Subsídios para monitoramento de conexão

O Amazon EC2 define um número máximo de conexões que podem ser rastreadas por instância. Depois que o máximo é atingido, todos os pacotes enviados ou recebidos são descartados, porque não é possível estabelecer uma nova conexão. Quando isso acontece, as aplicações que enviam e recebem pacotes não podem se comunicar corretamente. Use a métrica de desempenho da rede conntrack_allowance_available para determinar o número de conexões rastreadas ainda disponíveis para esse tipo de instância.

Para determinar se os pacotes foram descartados porque o tráfego de rede para sua instância excedeu o número máximo de conexões que podem ser rastreadas, use a métrica conntrack_allowance_exceeded de performance de rede. Para ter mais informações, consulte Monitorar a performance de rede de sua instância do EC2.

Com o Elastic Load Balancing, se você exceder o número máximo de conexões que podem ser rastreadas por instância, recomendamos que escale o número de instâncias registradas com o balanceador de carga ou o tamanho das instâncias registradas com o balanceador de carga.

Considerações sobre a performance do monitoramento de conexão

O roteamento assimétrico, em que o tráfego entra em uma instância por meio de uma interface de rede e sai por meio de uma interface de rede diferente, pode reduzir a performance máxima que uma instância poderá alcançar se os fluxos forem rastreados.

Para manter a performance máxima quando o monitoramento de conexão estiver habilitado para os grupos de segurança, recomendamos a seguinte configuração:

  • Evite topologias de roteamento assimétrico, se possível.

  • Em vez de usar grupos de segurança para filtragem, use ACLs de rede.

  • Se você precisar usar grupos de segurança com rastreamento de conexão, configure o menor tempo limite de conexão possível.

Para obter mais informações sobre a performance do ajuste no sistema Nitro, consulte Considerações sobre o Nitro System para ajuste de performance.

Tempo limite de rastreamento de conexão ociosa

O grupo de segurança monitora cada conexão estabelecida para garantir que os pacotes de retorno sejam entregues como esperado. Há um número máximo de conexões que podem ser rastreadas por instância. As conexões que permanecem ociosas podem levar à exaustão do rastreamento da conexão e fazer com que as conexões não sejam rastreadas e os pacotes sejam descartados. Você pode definir o tempo limite de rastreamento de conexões em uma interface de rede do Elastic.

nota

Esse recurso está disponível somente para instâncias desenvolvidas no AWS Nitro System.

Há três tempos limite configuráveis:

  • Tempo limite para TCP estabelecido: tempo limite (em segundos) para conexões TCP ociosas em um estado estabelecido. Mín: 60 segundos. Máx: 432.000 segundos (5 dias) Padrão: 432.000 segundos. Recomendado: menos de 432.000 segundos.

  • Tempo limite de UDP: tempo limite (em segundos) para fluxos UDP ociosos que só tiverem tráfego em uma única direção ou uma única transação de solicitação-resposta. Mín: 30 segundos. Máx: 60 segundos. Padrão: 30 segundos.

  • Tempo limite de fluxo UDP: tempo limite (em segundos) para fluxos UDP ociosos classificados como fluxos que tiveram mais de uma transação de solicitação-resposta. Mín: 60 segundos. Máx: 180 segundos (3 minutos). Padrão: 180 segundos.

Talvez você queira modificar os tempos limite padrão para algum dos seguintes casos:

  • Se você estiver monitorando conexões rastreadas usando as métricas de performance de rede do Amazon EC2, as métricas conntrack_allowance_exceeded e conntrack_allowance_available permitem monitorar os pacotes descartados e a utilização da conexão rastreada para gerenciar proativamente a capacidade da instância do EC2 com ações de aumento ou redução de escala para ajudar a atender à demanda de conexões de rede antes de descartar pacotes. Se você estiver observando quedas de conntrack_allowance_exceeded nas instâncias do EC2, pode ser benéfico definir um tempo limite de TCP estabelecido mais baixo para levar em conta sessões TCP/UDP paralisadas devido a clientes ou caixas intermediárias de rede inadequados.

  • Normalmente, os balanceadores de carga ou os firewalls têm um tempo limite de ociosidade de TCP estabelecido na faixa de 60 a 90 minutos. Se você estiver executando workloads que devem lidar com um número muito alto de conexões (mais de 100 mil) de dispositivos como firewalls de rede, é recomendável configurar um tempo limite semelhante em uma interface de rede do EC2.

  • Se você estiver executando uma workload que utiliza uma topologia de roteamento assimétrico, recomendamos que você configure um tempo limite de inatividade estabelecido por TCP de 60 segundos.

  • Se você estiver executando workloads com um grande número de conexões, como DNS, SIP, SNMP, Syslog, Radius e outros serviços que usam principalmente UDP para atender a solicitações, definir o tempo limite do ‘fluxo UDP’ como 60 segundos proporciona maior escala/performance para a capacidade existente e evita falhas cinzentas.

  • Para conexões TCP/UDP por meio de network load balancers (NLBs) e elastic load balancing (ELB), todas as conexões são rastreadas. O valor do tempo limite de ociosidade para fluxos TCP é de 350 segundos e para fluxos UDP é de 120 segundos e difere dos valores de tempo limite do nível da interface. Talvez você queira configurar tempos limite no nível da interface de rede para permitir maior flexibilidade de tempo limite do que os padrões para ELB/NLB.

Você tem a opção de configurar os tempos limite de rastreamento de conexão ao fazer o seguinte:

Exemplo

No exemplo a seguir, o grupo de segurança tem regras de entrada específicas para tráfego TCP e ICMP, e uma regra de saída que permite todo o tráfego de saída.

Entrada
Tipo de protocolo Número da porta Origem
TCP 22 (SSH) 203.0.113.1/32
TCP 80 (HTTP) 0.0.0.0/0
TCP 80 (HTTP) ::/0
ICMP Todos 0.0.0.0/0
Saída
Tipo de protocolo Número da porta Destino
Todos Tudo 0.0.0.0/0
Tudo Tudo ::/0

Com uma conexão de rede direta com a instância ou interface de rede, o comportamento de rastreamento é o seguinte:

  • O tráfego TCP de entrada e saída na porta 22 (SSH) é monitorado porque a regra de entrada permite o tráfego somente de 203.0.113.1/32, e não de todos os endereços IP (0.0.0.0/0).

  • O tráfego TCP de entrada e de saída na porta 80 (HTTP) não é monitorado porque as regras de entrada e saída permitem o tráfego de todos os endereços IP.

  • O tráfego ICMP é sempre monitorado.

Se você remover a regra de saída para o tráfego IPv4, todo o tráfego IPv4 de entrada e saída será monitorado, incluindo o tráfego na porta 80 (HTTP). O mesmo se aplica ao tráfego IPv6 se você remover a regra de saída para o tráfego IPv6.