O controle de acesso do ALB oferece filtragem granular para requisições de clientes por meio de whitelists e blacklists de IP nos listeners. Crie uma lista de controle de acesso (ACL), adicione entradas de IP e associe a ACL a um listener para permitir ou negar tráfego de origens específicas.
ACLs versus grupos de segurança
O ALB disponibiliza dois métodos de controle de acesso: listas de controle de acesso (ACLs) e grupos de segurança.
|
Item |
ACL |
Grupo de segurança do ALB |
|
Granularidade de controle |
Baseada no IP de origem. Aplica-se a listeners individuais. |
Baseada em IP de origem, protocolo e porta. Aplica-se a toda a instância do ALB. |
|
Suporte a IPv6 |
Não suportado. Apenas entradas IPv4 são permitidas. |
Suporta endereços IPv4 e IPv6. |
|
Comportamento padrão |
No modo whitelist, requisições de IPs fora da ACL são negadas. No modo blacklist, requisições de IPs fora da ACL são permitidas. |
Permite todo o tráfego por padrão. Adicione explicitamente uma regra de negação para 0.0.0.0/0 para restringir o acesso. |
|
Casos de uso |
Ideal para whitelists e blacklists simples de IP. Configuração fácil, sem necessidade de entender prioridade de regras. |
Cenários que exigem controle no nível de porta, suporte a IPv6 ou controle de ICMP. |
Pré-requisitos
Você já criou uma instância de ALB e configurou um listener.
Criar uma ACL
Uma lista de controle de acesso (ACL) é um conjunto de entradas de IP. Após criar uma ACL e adicionar entradas, associe-a a um listener para implementar controle de acesso via whitelist ou blacklist.
Console
Acesse a página Access Control no console do ALB. Na barra de navegação superior, selecione a região onde a instância alvo está implantada e clique em Create ACL.
Na caixa de diálogo Create ACL, insira um nome para a ACL e clique em OK.
-
Após a criação da ACL, na página Access Control, clique no ID da ACL desejada para abrir sua página de detalhes. Na aba Entry, adicione entradas de IP de uma das seguintes formas:
Adicionar uma única entrada: Clique em Add Entry. Na caixa de diálogo, insira um IP/CIDR Block e Remarks, depois clique em Add.
-
Adicionar entradas em lote: Clique em Add ACL Entries. Insira as entradas no seguinte formato:
Insira uma entrada por linha.
Use uma barra vertical (|) para separar o endereço IP ou bloco CIDR das observações, como em 192.168.1.0/24|test-remark.
É possível adicionar até 20 entradas por vez.
Se o lote contiver uma entrada já existente na ACL, a operação em lote falhará. Remova as entradas duplicadas e envie o lote novamente.
Após adicionar entradas, você pode excluí-las ou exportá-las na lista de entradas.
API
Chame a API CreateAcl para criar uma ACL.
Chame a API AddEntriesToAcl para adicionar entradas de IP.
Chame a API RemoveEntriesFromAcl para remover entradas de IP.
Ativar ou desativar o controle de acesso
Configure uma whitelist ou blacklist para um listener:
Whitelist: Permite acesso apenas de endereços IP presentes na ACL e nega todas as outras requisições.
Blacklist: Nega acesso de endereços IP listados na ACL e permite todas as demais requisições.
Independentemente de configurar uma whitelist ou blacklist, se a ACL associada não contiver entradas de IP, o controle de acesso não terá efeito e o listener encaminhará todas as requisições. Antes de configurar uma whitelist, certifique-se de que a ACL contenha os endereços IP que você deseja permitir para evitar interrupções no serviço.
Console
Acesse a página Instances no console do ALB. Na barra de navegação superior, selecione a região onde a instância alvo está implantada e clique no ID da instância.
-
Na aba Listener, localize o listener desejado. Na coluna Access Control, clique em Enable ou Close.
Enable: Na caixa de diálogo, selecione um Access Control Mode (Whitelist ou Blacklist) e uma ACL, depois clique em Save.
Close: Na caixa de diálogo de confirmação, clique em OK.
Também é possível ativar ou desativar o controle de acesso na seção Access Control da página de detalhes do listener.
API
Chame a API AssociateAclsWithListener para associar uma ACL a um listener.
Chame a API DissociateAclsFromListener para desassociar uma ACL de um listener.
Perguntas frequentes
Whitelist sem efeito
Causa: A ACL não está associada ao listener ou não possui entradas de IP. Uma ACL vazia permite todo o tráfego.
Solução: Na aba Listener da instância ALB, verifique se a coluna Access Control do listener alvo exibe Enabled. Confirme também se a ACL associada contém entradas de IP.
Impossível adicionar 0.0.0.0/0 à whitelist
Causa: ACLs não suportam a entrada 0.0.0.0/0. O console reportará um erro de formato.
Solução: O método correto consiste em desativar o controle de acesso e reativá-lo quando necessário.
Blacklist sem efeito
Causa: As requisições chegam ao ALB através de um CDN ou WAF. O IP de origem visível para o ALB é o IP do CDN ou WAF, e não o endereço IP real do cliente.
Solução: O controle de acesso do ALB opera na Camada 4 e corresponde ao endereço IP de origem no pacote de requisição. Quando as requisições são encaminhadas por um proxy como CDN ou WAF, o IP de origem é o do proxy. Portanto, uma blacklist do ALB não consegue bloquear o endereço IP do cliente. Configure a blacklist na camada do WAF ou CDN.
Blacklist não bloqueia o IP do X-Forwarded-For
Causa: O controle de acesso do ALB opera na Camada 4 e corresponde apenas ao endereço IP de origem no pacote de requisição. Ele não analisa o cabeçalho HTTP X-Forwarded-For da Camada 7.
Solução: Implemente isso usando uma regra personalizada no WAF. Defina Match Field como X-Forwarded-For, Logical Operator como Contains, Match Content como o endereço IP alvo e Rule Action como Block. Para mais informações, consulte Configurar condições de correspondência para uma regra personalizada.
Regras allow/deny do NGINX backend sem efeito
Causa: Após o tráfego passar pelo proxy do ALB, o servidor backend recebe o IP local da instância ALB (um endereço IP privado atribuído pelo vSwitch onde a instância reside) como IP de origem. As regras allow/deny do NGINX baseiam-se nesse IP de origem e, portanto, não conseguem corresponder ao endereço IP do cliente.
Soluções:
(Recomendado) Utilize o recurso de controle de acesso do ALB para configurar uma whitelist ou blacklist de IP diretamente na camada do ALB.
No NGINX, obtenha o endereço IP real do cliente a partir do cabeçalho de requisição
X-Forwarded-Fore configure as regras allow/deny com base no IP real.
Restringir acesso por domínio ou caminho
Descrição: As ACLs operam no nível do listener e não diferenciam por nome de domínio ou caminho. Quando ativada, uma ACL afeta todos os domínios associados ao listener.
Solução alternativa: Para instâncias ALB Standard ou com WAF habilitado, utilize regras de encaminhamento. Na condição de encaminhamento, configure as condições Domain Name/Path e SourceIp para Return Fixed Responses (como 403) nas requisições correspondentes. A condição SourceIp de uma única regra de encaminhamento suporta até cinco endereços IP ou blocos CIDR e não aceita o formato 0.0.0.0/x. Caso possua muitos endereços IP ou utilize uma instância ALB Basic, recomendamos o uso do WAF. Crie uma regra personalizada no WAF para combinar condições de host/caminho e IP para controle de acesso.
Bloquear endereços IP de outros países
Descrição: O controle de acesso do ALB não oferece recurso de bloqueio geográfico e não identifica automaticamente o país de um endereço IP.
Solução alternativa: Adicione manualmente faixas de IP estrangeiras conhecidas a uma blacklist, mas esse método não é atualizado automaticamente e está sujeito a limites de entradas. Recomendamos utilizar o recurso de bloqueio geográfico do WAF.
Controle de acesso em cenários de proxy multicamada
Quando um proxy de Camada 7 é implantado à frente de uma instância ALB, o recurso de controle de acesso do ALB, que opera na Camada 4, enxerga apenas o endereço IP de origem do proxy do salto anterior e não identifica o IP real do cliente. Por isso, configure o controle de acesso na camada correta. Considere um cenário onde o WAF está conectado via registro CNAME (Cliente → CDN → WAF → ALB → ECS). O endereço IP de origem e as recomendações de controle de acesso para cada camada são descritos abaixo.
Instâncias ALB com WAF habilitado usam um SDK para proteção. O WAF não participa do encaminhamento de tráfego, logo, não há salto de IP de origem do WAF. Se nenhum proxy de Camada 7, como um CDN, estiver implantado à frente da instância ALB, o problema descrito nesta seção não se aplica.
|
Camada |
IP de origem visível |
Recomendação de controle de acesso |
|
WAF |
|
Configure whitelists e blacklists de IP nesta camada. Quando configurado corretamente, o WAF bloqueia requisições com base no endereço IP real do cliente e também suporta bloqueio geográfico. |
|
ALB |
O IP de origem do WAF. |
Configure uma whitelist na instância ALB para permitir acesso apenas das faixas de IP de origem do WAF. Isso impede que atacantes contornem o WAF e acessem diretamente o endereço IP público da instância ALB. Visualize as faixas de IP de origem do WAF na página Access Management no console do WAF. |
|
ECS Backend |
O endereço IP local da instância ALB (um endereço IP privado atribuído pelo vSwitch onde a instância reside). |
Garanta que o bloco CIDR do IP local da instância ALB não esteja bloqueado pelo iptables ou outro software de segurança de terceiros nas instâncias ECS de backend. Caso contrário, tanto as verificações de integridade quanto o encaminhamento de requisições falharão. |
Faturamento
O recurso de controle de acesso é gratuito. Para mais informações sobre o faturamento de instâncias ALB, consulte Faturamento do ALB.
Cotas
|
Item |
Edição |
Cota |
|
Número de listeners que podem ser associados a uma ACL |
Basic/Standard/WAF-enabled |
50 |
|
Número de ACLs que podem ser associadas a um listener |
Basic/Standard/WAF-enabled |
3 |
|
Número de ACLs que podem ser criadas em uma região |
Basic/Standard/WAF-enabled |
1000 |
|
Número de entradas que podem ser adicionadas a uma ACL |
Basic/Standard/WAF-enabled |
500 |
|
Número de entradas de ACL que podem ser associadas a uma instância ALB |
Basic/Standard/WAF-enabled |
800 |
|
Número de entradas de ACL que podem ser associadas a um listener |
Basic |
300 |
|
Standard/WAF-enabled |
500 |
Essas cotas são limites rígidos e não podem ser aumentados. Para mais informações, consulte Cotas e limites do ALB.