Como contornar um limite de regra de ACL de rede da AWS

12

No máximo, uma ACL de rede VPC pode ter 40 regras aplicadas.

Eu tenho uma lista de mais de 50 endereços IP aos quais preciso bloquear explicitamente o acesso em nossos sistemas, em qualquer porta e protocolo. Esse é um objetivo ideal para uma ACL, mas o limite está me impedindo de concluir esta tarefa.

Obviamente, eu posso fazer isso no IPTables em cada host, mas quero bloquear todo e qualquer tráfego para todos os componentes da VPC (para ELBs, por exemplo). Além disso, é muito mais ideal gerenciar essas regras em um só lugar do que em cada host.

Espero que exista alguma maneira de não fazer isso no nível do sistema / plataforma. Grupos de segurança são permissão explícita, sem ação de negação, para que não façam o truque.

emmdee
fonte
Use software de provisionamento como Ansible para gerenciamento de tabelas de ip e pronto. Obviamente, ele funcionará apenas em instâncias do EC2; não LBs etc.
Kyslik
Sim, eu concordo que o iptables é bom para o EC2, mas 99% do meu tráfego de entrada atinge nossa estrutura ELB. Nós estaríamos pagando por muitos hits desses golpistas conhecidos com os quais temos que lidar. Obrigado pela entrada
emmdee 14/04/19
1
Bloquear 50 IPs individuais parece um requisito estranho.
precisa saber é o seguinte
@immibis Estranho para você, talvez. Temos muitos golpistas tentando ferrar com nossos clientes legítimos. Bloqueamos as contas deles, mas também proibimos IP total para golpistas óbvios russos / nigerianos / chineses. Nosso produto tem muita interação do usuário, bate-papo / etc - totalmente diferente de uma plataforma como essa.
emmdee
1
... e nenhum dos seus golpistas tem IPs dinâmicos?
usar o seguinte comando

Respostas:

8

Aqui está uma idéia do campo esquerdo. Você poderia "rotear nulo" os 50 IPs bloqueados, adicionando uma rota "interrompida" à tabela de rotas da VPC para cada IP.

Isso não impediria que o tráfego dos IPs atingisse sua infraestrutura (apenas as NACLs e os SGs impedirão isso), mas impedirá o retorno do tráfego de todos os que o fazem “voltar para casa”.

Funky Penguin
fonte
Eu anulei acidentalmente o tráfego roteado uma vez criando um gateway de trânsito, configurando o roteamento e excluindo o gateway de trânsito. Pode haver uma maneira mais fácil.
Tim
Não é uma má ideia. Muito fora da caixa pensando obrigado. Eu vou fazer algumas experiências. Pode ser o caminho certo para ir sem pagar por WAF
emmdee
0

Não há como aumentar o limite de NACLs, e um número alto de regras da NACL afeta o desempenho da rede.

Você pode ter um problema de arquitetura acima de tudo.

  1. Suas instâncias precisam estar em sub-redes públicas?
  2. Você configurou gateways NAT para limitar o tráfego de entrada?
  3. Para aquelas instâncias que devem estar em sub-redes públicas, você tem regras mínimas de grupo de segurança de entrada?
  4. Você está usando as condições de correspondência do AWS WAF IP para bloquear o tráfego indesejado no CloudFront e nos seus balanceadores de carga?

Se você estiver atingindo o limite da regra NACL, é mais provável que não esteja adotando a abordagem recomendada pela AWS para a arquitetura VPC e o uso de serviços como WAF (e Shield for DDoS) para bloquear tráfego indesejado e ataques abertos.

Se sua preocupação for ataques DDoS: Como ajudar a proteger aplicativos dinâmicos da Web contra ataques DDoS usando o Amazon CloudFront e o Amazon Route 53

Fo.
fonte
Os gateways NAT destinam-se ao tráfego de saída e não à entrada.
Tim
Corrija o @Tim, portanto, colocar suas instâncias em sub-redes privadas atrás de gateways NAT oferece conectividade de saída sem abri-las a ataques de entrada e sem a necessidade de bloquear IPs em NACLs
Fo.
O WAF é bastante caro para sites de tráfego muito alto. Tentando evitá-lo por esse motivo. O fato de os grupos de segurança não poderem bloquear explicitamente e a ACL da web ter esse limite parece uma grande quantia em dinheiro.
emmdee
Eu acho que depende do caso de uso, o que não foi explicado. Se o motivo para bloquear esses IPs é que eles estão atacando um servidor Web, ainda é necessário ter acesso público aos servidores, o que significa um balanceador de carga ou proxy. Uma sub-rede privada não ajudaria nesse caso.
Tim
Meu caso de uso é de 99% de ELBs que recebem o tráfego de entrada. As instâncias do EC2 são privadas atrás dos ELBs.
emmdee
0

Não foi exatamente o que você pediu, mas pode fazer o trabalho bem o suficiente.

Configure o CloudFront na frente da sua infraestrutura. Use as condições de correspondência de IP para bloquear efetivamente o tráfego. O CloudFront trabalha com conteúdo estático e dinâmico e pode acelerar o conteúdo dinâmico, pois usa o backbone da AWS e não a Internet pública. Aqui está o que os documentos dizem

Se você deseja permitir algumas solicitações da Web e bloquear outras com base nos endereços IP dos quais as solicitações se originam, crie uma condição de correspondência IP para os endereços IP que você deseja permitir e outra condição de correspondência IP para os endereços IP que você deseja bloquear. .

Ao usar o CloudFront, você deve bloquear o acesso direto a quaisquer recursos públicos usando grupos de segurança. O AWS Update Security Groups lambda manterá seus grupos de segurança atualizados para permitir o tráfego do CloudFront, mas rejeitará outro tráfego. Se você redirecionar o http para https usando o CloudFront, poderá ajustar um pouco os scripts para impedir que o http atinja sua infraestrutura. Você também pode colocar na lista branca todos os IPs que precisam de acesso direto de administrador.

Como alternativa, você pode usar uma CDN de terceiros, como o CloudFlare. O CloudFlare possui um firewall eficaz, mas o número de regras que você deseja é de US $ 200 por mês. Isso pode muito bem ser mais barato que o CloudFront, a largura de banda da AWS é bastante cara. O plano gratuito fornece apenas 5 regras de firewall.

Tim
fonte
Já usamos o cloud front para conteúdo estático, mas muitos sites são dinâmicos.
emmdee
O CloudFront também pode ser usado para conteúdo dinâmico aws.amazon.com/blogs/networking-and-content-delivery/…
Fo.
O CloudFront pode acelerar o conteúdo dinâmico; acredito que ele usa o backbone da AWS em vez da Internet pública. O CloudFront tem largura de banda um pouco mais barata que o EC2, e acho que vi um anúncio de que a largura de banda do CloudFront de volta ao EC2 é gratuita.
Tim