Ich habe mehr oder weniger folgende Konfiguration in AWS:
Elastischer Lastausgleich mit 3 Maschinen oder 3 verschiedenen Verfügbarkeitszonen. Meine Sicherheitsgruppe erlaubt 0.0.0.0/0:80, da es sich um meine Rails-Anwendung handelt (Nginx, Einhorn).
Ich habe mich gefragt, ob es eine Möglichkeit gibt, den Zugriff auf meine App auf eine bestimmte öffentliche IP-Adresse zu verweigern. Ich habe die AWS-Dokumentation gelesen, aber da SGs "Alle ablehnen" sind, gibt es keine Möglichkeit, nur eine bestimmte IP-Adresse zu verweigern .
Irgendwelche Ideen? iptables auf den 3 Maschinen hinter Load Balancer?
Vielen Dank!
quelle
Eigentlich ist das keine gute Lösung, da die Remote-IP (
$remote_addr
in Nginx) vom Loadbalancer von Amazon stammt. Ein Verbot, das dazu führt, dass der gesamte weitergeleitete Verkehr gesperrt wird.Sie müssen die Pakete überprüfen und den HTTP-
X-Forwarded-For
Header finden. IPtables ist nicht protokollbewusst.Ich entschied mich für die folgende Lösung für 2 ungezogene IPs in Nginx
Einführung einer Variablen
$client_ip
, damit ich diese auch lokal testen kann, wo keinehttp_x_forwarded_for
verfügbar ist.Etwas offtopisch, aber der Einfachheit halber postend, habe ich diese Client-IP auch zu meinen Zugriffsprotokollen hinzugefügt:
Es ist nicht schön, aber ich hoffe, es hilft
quelle