Contournement d'une limite de règles ACL de réseau AWS

12

Au maximum, une ACL de réseau VPC peut avoir 40 règles appliquées.

J'ai une liste de plus de 50 adresses IP dont j'ai besoin pour bloquer explicitement l'accès à nos systèmes, sur n'importe quel port et n'importe quel protocole. C'est un objectif idéal pour une ACL, mais la limite m'empêche de terminer cette tâche.

Bien sûr, je peux le faire dans IPTables sur chaque hôte, mais je veux bloquer tout le trafic vers tous les composants du VPC (vers les ELB par exemple). De plus, il est beaucoup plus idéal de gérer ces règles en un seul endroit plutôt que sur chaque hôte.

J'espère qu'il y a un moyen que je ne comprends pas de faire cela au niveau du système / de la plate-forme. Les groupes de sécurité sont explicitement autorisés, sans action de refus, ils ne feront donc pas l'affaire.

emmdee
la source
Utilisez un logiciel de provisioning comme Ansible pour la gestion d'iptables et vous avez terminé. Évidemment, cela ne fonctionnera que dans les instances EC2; pas des LB etc.
Kyslik
Oui, je suis d'accord que faire iptables est très bien pour EC2 mais 99% de mon trafic entrant frappe notre structure ELB. Nous paierions pour de nombreux hits de ces escrocs connus avec lesquels nous devons faire face. Merci pour l'entrée
emmdee
1
Le blocage de 50 adresses IP individuelles semble une exigence étrange.
user253751
@immibis Odd pour vous peut-être. Nous recevons beaucoup d'arnaqueurs essayant de baiser avec nos clients légitimes. Nous bloquons leurs comptes mais aussi des interdictions IP complètes pour des fraudeurs russes / nigérians / chinois évidents. Notre produit a beaucoup d'interaction avec les utilisateurs, le chat / etc - totalement étrange pour une plate-forme comme celle-ci.
emmdee
1
... et aucun de vos escrocs n'a d'adresse IP dynamique?
user253751

Réponses:

8

Voici une idée de champ gauche. Vous pouvez "null-route" les 50 IP bloquées, en ajoutant une route "cassée" à la table de routage VPC pour chaque IP.

Cela n'empêcherait pas le trafic des adresses IP de frapper votre infrastructure (seuls les NACL et les SGs empêcheront cela), mais cela empêchera le trafic de retour de chaque retour à la maison.

Pingouin génial
la source
J'ai annulé accidentellement le trafic routé une fois en créant une passerelle de transit, en configurant le routage, puis en supprimant la passerelle de transit. Il peut cependant y avoir un moyen plus simple.
Tim
Pas une mauvaise idée. Très prêt à penser, merci. Je ferai une expérimentation. Peut-être la bonne façon de procéder sans payer pour le WAF
emmdee
0

Il n'y a aucun moyen d'augmenter la limite des NACL, et un nombre élevé de règles NACL affecte les performances du réseau.

Vous pouvez avoir un problème architectural avant tout.

  1. Vos instances doivent-elles être dans des sous-réseaux publics?
  2. Avez-vous configuré des passerelles NAT pour limiter le trafic entrant?
  3. Pour les instances qui doivent se trouver dans des sous-réseaux publics, avez-vous des règles de groupe de sécurité entrantes minimales?
  4. Utilisez-vous des conditions de correspondance IP AWS WAF pour bloquer le trafic indésirable vers CloudFront et vos équilibreurs de charge?

Si vous atteignez la limite de règle NACL, c'est probablement parce que vous n'adoptez pas l'approche recommandée par AWS pour l'architecture VPC et l'utilisation de services comme WAF (et Shield for DDoS) pour bloquer le trafic indésirable et les attaques manifestes.

Si votre préoccupation concerne les attaques DDoS: comment aider à protéger les applications Web dynamiques contre les attaques DDoS à l'aide d'Amazon CloudFront et d'Amazon Route 53

Fo.
la source
Les passerelles NAT sont destinées au trafic sortant plutôt qu'aux communications entrantes.
Tim
Corrigez @Tim, donc placer vos instances dans des sous-réseaux privés derrière des passerelles NAT leur donne une connectivité sortante sans les ouvrir aux attaques entrantes, et pas besoin de bloquer les IP dans les NACL
Fo.
Le WAF est assez cher pour les sites Web à très fort trafic. Essayer de l'éviter pour cette raison. Le fait que les groupes de sécurité ne puissent pas explicitement bloquer et que l'ACL Web ait cette limite semble être une grosse saisie d'argent.
emmdee
Je suppose que cela dépend du cas d'utilisation, qui n'a pas été expliqué. Si la raison du blocage de ces adresses IP est qu'elles ont attaqué un serveur Web, il doit toujours y avoir un accès public aux serveurs, ce qui signifie un équilibreur de charge ou un proxy. Un sous-réseau privé n'aiderait pas dans ce cas.
Tim
Mon cas d'utilisation est l'ELB à 99% qui prend le trafic entrant. Les instances EC2 sont privées derrière les ELB.
emmdee
0

Ce n'est pas exactement ce que vous avez demandé, mais peut faire le travail assez bien.

Configurez CloudFront devant votre infrastructure. Utilisez les conditions de correspondance IP pour bloquer efficacement le trafic. CloudFront fonctionne avec du contenu statique et dynamique, et peut accélérer le contenu dynamique car il utilise la dorsale AWS plutôt que l'Internet public. Voici ce que disent les docs

Si vous souhaitez autoriser certaines demandes Web et en bloquer d'autres en fonction des adresses IP dont proviennent les demandes, créez une condition de correspondance IP pour les adresses IP que vous souhaitez autoriser et une autre condition de correspondance IP pour les adresses IP que vous souhaitez bloquer. .

Lorsque vous utilisez CloudFront, vous devez bloquer l'accès direct à toutes les ressources publiques à l'aide de groupes de sécurité. Les groupes de sécurité AWS Update lambda maintiendront vos groupes de sécurité à jour pour autoriser le trafic CloudFront mais rejeter tout autre trafic. Si vous redirigez http vers https à l'aide de CloudFront, vous pouvez modifier légèrement les scripts pour empêcher http de frapper votre infrastructure. Vous pouvez également ajouter à la liste blanche toutes les adresses IP qui nécessitent un accès administrateur direct.

Alternativement, vous pouvez utiliser un CDN tiers tel que CloudFlare. CloudFlare possède un pare-feu efficace, mais pour le nombre de règles que vous souhaitez, c'est 200 $ par mois. Cela pourrait bien être moins cher que CloudFront, la bande passante AWS est assez chère. Le plan gratuit ne vous donne que 5 règles de pare-feu.

Tim
la source
Nous utilisons déjà le cloud front pour le contenu statique, mais de nombreux sites sont du contenu Web dynamique.
emmdee
CloudFront peut également être utilisé pour le contenu dynamique aws.amazon.com/blogs/networking-and-content-delivery/…
Fo.
CloudFront peut accélérer le contenu dynamique, je pense qu'il utilise la dorsale AWS plutôt que l'Internet public. CloudFront a une bande passante légèrement moins chère que EC2, et je pense avoir vu une annonce il y a quelque temps que la bande passante CloudFront vers EC2 était gratuite.
Tim