Umgehen eines AWS-Netzwerk-ACL-Regellimits

12

Auf eine VPC-Netzwerk-ACL können maximal 40 Regeln angewendet werden.

Ich habe eine Liste mit über 50 IP-Adressen, auf die ich den Zugriff in unseren Systemen über einen beliebigen Port und ein beliebiges Protokoll explizit blockieren muss. Dies ist ein idealer Zweck für eine ACL, aber das Limit hindert mich daran, diese Aufgabe auszuführen.

Natürlich kann ich dies in IPTables auf jedem Host tun, aber ich möchte jeglichen Datenverkehr zu allen Komponenten in der VPC blockieren (zum Beispiel zu ELBs). Darüber hinaus ist es weitaus idealer, diese Regeln an einem Ort zu verwalten, als auf jedem einzelnen Host.

Ich hoffe, es gibt eine Möglichkeit, die ich auf System- / Plattformebene nicht verstehe. Sicherheitsgruppen sind ausdrücklich erlaubt, ohne Aktion zu verweigern, so dass sie den Trick nicht ausführen.

Emmdee
quelle
Verwenden Sie eine Bereitstellungssoftware wie Ansible für die Verwaltung von iptables, und Sie sind fertig. Offensichtlich wird es nur in EC2-Instanzen funktionieren; Nicht LBs etc.
Kyslik
Ja, ich bin damit einverstanden, dass iptables für EC2 in Ordnung ist, aber 99% meiner eingehenden Zugriffe treffen auf unsere ELB-Struktur. Wir würden für viele Treffer dieser bekannten Betrüger zahlen, mit denen wir zu kämpfen haben. Vielen Dank für die Eingabe
emmdee
1
Das Blockieren von 50 einzelnen IPs scheint eine merkwürdige Anforderung zu sein.
user253751
@immibis Seltsam für dich vielleicht. Wir bekommen eine Menge Betrüger, die versuchen, sich mit unseren legitimen Kunden zu verbünden. Wir sperren ihre Konten, aber auch vollständige IP-Verbote für offensichtlich russisch / nigerianisch / chinesische Betrüger. Unser Produkt hat viel Benutzerinteraktion, Chat / etc - für eine Plattform wie diese absolut nicht ungewöhnlich.
Emmdee
1
... und keiner Ihrer Betrüger hat dynamische IPs?
user253751

Antworten:

8

Hier ist eine Idee im linken Feld. Sie können die 50 blockierten IPs auf Null setzen, indem Sie der VPC-Routentabelle für jede IP eine unterbrochene Route hinzufügen.

Dies würde nicht verhindern, dass der Datenverkehr von den IPs auf Ihre Infrastruktur trifft (dies wird nur von den NACLs und den SGs verhindert), aber es wird verhindert, dass der zurückkommende Datenverkehr jedes Mal wieder "nach Hause" gelangt.

Funky Pinguin
quelle
Ich habe versehentlich den Datenverkehr einmal auf Null gesetzt, indem ich ein Transit-Gateway erstellt, das Routing eingerichtet und dann das Transit-Gateway gelöscht habe. Es kann jedoch einen einfacheren Weg geben.
Tim
Keine schlechte Idee. Sehr out of the box denken danke. Ich werde ein bisschen experimentieren.
Könnte
0

Es gibt keine Möglichkeit, das Limit für NACLs zu erhöhen, und eine hohe Anzahl von NACL-Regeln wirkt sich auf die Netzwerkleistung aus.

Möglicherweise haben Sie vor allem ein architektonisches Problem.

  1. Müssen sich Ihre Instanzen in öffentlichen Subnetzen befinden?
  2. Haben Sie NAT-Gateways eingerichtet, um den eingehenden Datenverkehr zu begrenzen?
  3. Haben Sie für Instanzen, die sich in öffentlichen Subnetzen befinden müssen, minimale Regeln für eingehende Sicherheitsgruppen?
  4. Verwenden Sie AWS WAF IP-Übereinstimmungsbedingungen , um unerwünschten Datenverkehr zu CloudFront und Ihren Load Balancern zu blockieren?

Wenn Sie die NACL-Regelbeschränkung einhalten, liegt dies höchstwahrscheinlich daran, dass Sie nicht den von AWS empfohlenen Ansatz für die VPC-Architektur und die Verwendung von Diensten wie WAF (und Shield for DDoS) verwenden, um unerwünschten Datenverkehr und offene Angriffe zu blockieren.

Wenn es um DDoS-Angriffe geht: So schützen Sie dynamische Webanwendungen mithilfe von Amazon CloudFront und Amazon Route 53 vor DDoS-Angriffen

Fo.
quelle
NAT-Gateways sind eher für ausgehenden als für eingehenden Datenverkehr vorgesehen.
Tim
Korrigieren Sie @Tim, damit Ihre Instanzen in privaten Subnetzen hinter NAT-Gateways ausgehende Konnektivität erhalten, ohne sie für eingehende Angriffe zu öffnen, und IPs in NACLs nicht blockieren müssen
Fo.
WAF ist ziemlich teuer für sehr stark frequentierte Websites. Ich versuche es aus diesem Grund zu vermeiden. Die Tatsache, dass Sicherheitsgruppen diese Beschränkung nicht explizit blockieren können und Web-ACLs diese Beschränkung haben, scheint ein großer Gewinn zu sein.
Emmdee
Ich denke, es hängt vom Anwendungsfall ab, der nicht erklärt wurde. Wenn der Grund für die Blockierung dieser IPs darin besteht, dass sie einen Webserver angegriffen haben, muss weiterhin ein öffentlicher Zugriff auf die Server bestehen, dh ein Load Balancer oder Proxy. Ein privates Subnetz würde in diesem Fall nicht helfen.
Tim
Mein Anwendungsfall ist, dass 99% der ELB den eingehenden Datenverkehr übernehmen. EC2-Instanzen sind hinter ELBs privat.
Emmdee
0

Dies ist nicht genau das, wonach Sie gefragt haben, kann aber die Arbeit gut genug machen.

Richten Sie CloudFront vor Ihrer Infrastruktur ein. Verwenden Sie IP-Übereinstimmungsbedingungen , um den Datenverkehr effektiv zu blockieren. CloudFront funktioniert sowohl mit statischen als auch mit dynamischen Inhalten und kann dynamische Inhalte beschleunigen, da das AWS-Backbone anstelle des öffentlichen Internets verwendet wird. Hier ist, was die Dokumente sagen

Wenn Sie einige Webanforderungen zulassen und andere blockieren möchten, basierend auf den IP-Adressen, von denen die Anforderungen stammen, erstellen Sie eine IP-Übereinstimmungsbedingung für die IP-Adressen, die Sie zulassen möchten, und eine weitere IP-Übereinstimmungsbedingung für die IP-Adressen, die Sie blockieren möchten .

Wenn Sie CloudFront verwenden, sollten Sie den direkten Zugriff auf öffentliche Ressourcen mithilfe von Sicherheitsgruppen blockieren. Das Lambda von AWS Update Security Groups hält Ihre Sicherheitsgruppen auf dem neuesten Stand, um CloudFront-Datenverkehr zuzulassen, aber anderen Datenverkehr abzulehnen. Wenn Sie http mit CloudFront zu https umleiten, können Sie die Skripte ein wenig optimieren, um zu verhindern, dass http auf Ihre Infrastruktur trifft. Sie können auch alle IP-Adressen, die direkten Administratorzugriff benötigen, auf die Whitelist setzen.

Alternativ können Sie ein Drittanbieter-CDN wie CloudFlare verwenden. CloudFlare hat eine effektive Firewall, aber für die Anzahl der gewünschten Regeln sind es 200 US-Dollar pro Monat. Das ist vielleicht billiger als CloudFront, die AWS-Bandbreite ist ziemlich teuer. Der kostenlose Plan enthält nur 5 Firewall-Regeln.

Tim
quelle
Wir verwenden Cloud Front bereits für statische Inhalte, aber viele der Websites sind dynamische Webinhalte.
Emmdee
CloudFront kann auch für dynamische Inhalte verwendet werden. Aws.amazon.com/blogs/networking-and-content-delivery/…
Fo.
CloudFront kann dynamische Inhalte beschleunigen. Ich glaube, es verwendet das AWS-Backbone und nicht das öffentliche Internet. CloudFront hat eine etwas billigere Bandbreite als EC2, und ich glaube, ich habe vor einiger Zeit eine Ankündigung gesehen, dass die Bandbreite von CloudFront zurück zu EC2 frei ist.
Tim