2014-11-28 19 views
12

Ich habe eine Reihe ähnlicher Fragen wie this one gesehen, aber keine gibt eine allgemeine Antwort. Ich bin neu in AWS. Ich habe gerade zwei Instanzen in meiner VPC ausgeführt. Ich habe ein ELB-Setup vor ihnen, das funktioniert gut in Routing-Verkehr zu beiden. Problem ist, dass beide Instanzen derzeit auch mit HTTP aus dem gesamten Web angefahren werden können. Ich möchte Dinge ändern, so dass meine Instanzen nur auf HTTP über meine ELB getroffen werden können. Wie kann ich das machen?Erlaube HTTP-Zugriff auf AWS-Instanzen nur über ELB

+1

Kennen Sie Sicherheitsgruppen in AWS? – helloV

Antwort

22

Ich habe gefunden wonach ich gesucht habe. In Sicherheitsgruppen können Sie eine weitere Sicherheitsgruppe als Quelle unter benutzerdefinierter IP-Adresse hinzufügen. Es wäre großartig gewesen, wenn Amazon es deutlicher gemacht hätte, dass dies erlaubt war, da eine Sicherheitsgruppe keine benutzerdefinierte IP ist. Wie auch immer, dies ist, wie Sie es tun: rules

+0

Sie können Ihre EC2-Instances auch in ein privates Subnetz stellen, dh es gibt keine Möglichkeit, über das Internet darauf zuzugreifen. Außerdem müssen sie keine öffentlichen IP-Adressen haben, da der ELB eine interne IP-Adresse für den Zugriff verwendet. –

+0

@Eli - Wo wird diese Sicherheitsgruppe angewendet? Die ELB oder die EC2-Instanz selbst? – hybrid9

+0

@ hybrid9 Sie bearbeiten die Regeln für die Sicherheitsgruppe der EC2-Instanzen, um den HTTP/HTTPS-Zugriff von der Sicherheitsgruppe des ELB zu ermöglichen. – Eli

0

Ich werde den folgenden zusätzlichen Ansatz vorschlagen, der kommt, lange nachdem die ursprüngliche Lösung akzeptiert wurde. Die ursprüngliche Lösung ist vielleicht am besten, aber der folgende Ansatz ist einfach und wenn nichts anderes bei der Fehlersuche helfen könnte.

Zuerst trennen Sie von den Instanzen alle Regeln oder Sicherheitsgruppen, die HTTP aus dem gesamten Web zulassen. Seien Sie besonders misstrauisch gegenüber 0.0.0.0/0, was bedeutet alle IP-Adressen. Weisen Sie dann in der Sicherheitsgruppe, die auf die Instanz angewendet wurde, Port 80/http vom privaten Adressraum der VPC zu. Wenn der private Adressraum Ihrer VPC beispielsweise 172.31.0.0/16 lautet, dann erlauben Sie diesem Bereich den Zugriff auf Ihre Instanz über eine Sicherheitsgruppe, die direkt auf die Instanz angewendet wird. Zu diesem Zeitpunkt meldet sich der httpd-Server an, dass die Instanz Zugriffsversuche von den spezifischen privaten Adressen des Load Balancers anzeigen soll. Unter der Annahme, dass die Zieldatei des Gesundheitschecks existiert und ordnungsgemäß von httpd bedient wird, sollte sich der Status der Statusprüfung der Zielgruppe von "Ungesund" auf "Gesund" ändern. Beachten Sie, dass sich der Load Balancer Health Checker in den httpd-Protokollen eindeutig als ELB-HealthChecker ausweist.

172.31.3.56 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0" 
172.31.20.249 - - [24/Oct/2017:17:02:36 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0" 
172.31.3.56 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0" 
172.31.20.249 - - [24/Oct/2017:17:03:06 +0000] "GET /index.html HTTP/1.1" 200 265 "-" "ELB-HealthChecker/2.0" 

An dieser Stelle können Sie die IP-Adressen, die von der Sicherheitsgruppe nur dann zulässig, einschränken könnten auf die in den httpd-Protokollen zeigen, aber ich würde vorsichtig sein, denn wenn der ELB neu gestartet wird oder wenn die Konfiguration geändert wird oder Nachgeladen, bezweifle ich, dass es garantiert die gleichen privaten Adressen wiederbekommt wie zuvor.

Jetzt, wo der Load Balancer seine Ziele als gesund erkennt, werden sie als einsatzbereit betrachtet und beginnen, den Datenverkehr an sie weiterzuleiten. Und nach den Zielen des Original-Posters ("Problem ist, dass beide Instanzen derzeit auch mit HTTP aus dem gesamten Web erreicht werden können") erlaubt dieser Ansatz keinen Zugriff auf die Instanzen aus dem gesamten Web.

Die meisten Leser werden mit der privaten Adressierung vertraut sein. Für jeden, der nicht the Wikipedia article ist, ist eine so gute Referenz wie jeder.

Verwandte Themen