Zugriff auf Site auf EC2-Instanz über öffentliche IP nicht möglich

10

Ich habe eine Amazon EC2-Mikroinstanz mit Windows 2008-Server und dort eine Beispielwebanwendung bereitgestellt, die Java verwendet und auf einem Tomcat 7-Server bereitgestellt wird. Ich kann lokal auf eine Instanz zugreifen, aber wenn ich versucht habe, außerhalb der AWS-Instanz darauf zuzugreifen, z. B. von meinem Heimcomputer aus mit AWS Public DNS / Public IP-Adresse / Elastic IP-Adresse der Instanz, wird mir "Webseite ist" angezeigt Nicht verfügbar".

Ich habe in diesem Forum so viele ähnliche Fragen durchlaufen und ich glaube, ich habe alle Einstellungen vorgenommen, die sie verlangen, aber immer noch keinen Erfolg.

Folgendes habe ich getan / bestätigt.

1. localhost funktioniert, daher lauscht die Anwendung auf Port 80.

2. Eingehende Regel für HTTP an Port 80 für alle Mitglieder der Sicherheitsgruppe hinzugefügt, die meine Instanz verwendet.

3. Überprüfen Sie die Firewall-Einstellung auf der Windows-Instanz und stellen Sie sicher, dass Port 80 nicht blockiert ist.

4. versuchte es auch mit ausgeschalteter Firewall, aber kein Erfolg.

Ich würde mich sehr freuen, wenn mir jemand dabei helfen kann.

Danke, NS

user242725
quelle
1
Was sagt Ihnen Telnet und Traceroute?
Pratap

Antworten:

5

Ich hatte ein ähnliches frustrierendes Problem, als ich JetBrains YouTrack auf einer Windows Server 2012 ec2-Instanz installierte. Was für mich funktionierte, war das Öffnen der Windows-Firewall-Ports, die Java speziell verwendete, und das Deaktivieren des World Wide Publishing-Service-Ports. Ich musste auch den YouTrack-Dienst unter dem LocalSystem-Konto anstelle des Standardkontos ausführen.

Versuche dies:

  • Deaktivieren Sie die Standardwebsite in IIS, wenn sie verwendet wird

  • Führen Sie ein netstat -a -b aus , um die Ports zu ermitteln, an die die java.exe binden wollte, z.

    TCP 0.0.0.0:80 WIN-9NFIG6IEPT6: 0 LISTENING [java.exe]

    TCP 127.0.0.1:49306 WIN-9NFIG6IEPT6: 49307 ESTABLISHED [java.exe]

  • Öffnen Sie den Service Control Manager, klicken Sie mit der rechten Maustaste auf Ihren Service und öffnen Sie den Eigenschaftendialog. Wählen Sie auf der Registerkarte Anmelden als Lokales Systemkonto als Konto aus, unter dem der Dienst ausgeführt wird. Es ist wichtig, dass dieser Benutzer Administrator ist

  • Ich empfehle dringend, die Firewall wieder einzuschalten.
  • Öffnen Sie die Registerkarte Eingehende Firewall-Regeln und deaktivieren Sie die HTTP-In-Regel (World Wide Web Services)
  • Erstellen Sie eine neue Regel für Tomcat mit TCP-Port 80 und jedem anderen Port, den es möglicherweise benötigt.

  • Speichern Sie die Regel und testen Sie Ihre URL von außerhalb des Servers.

Terrence Young
quelle
4

Sie sollten die Firewall-Einstellung nicht vollständig deaktivieren. Dies würde die Sicherheit Ihrer App gefährden. Ändern Sie stattdessen die eingehenden Firewall-Regeln des Windows-Servers, um eingehenden Datenverkehr an bestimmten Ports zuzulassen.

Ich hatte ein ähnliches Problem, bei dem ich eine App auf Tomcat 8 auf einem Windows 2012-Server bereitgestellt hatte, der über AWS EC2 bereitgestellt wurde. Ich konnte auf die bereitgestellte App unter http: // localhost: 8080 innerhalb der VM zugreifen, jedoch nicht über das öffentliche Internet, nachdem ich die Zeichenfolge localhost in der URL durch die öffentliche IP-Adresse der VM ersetzt hatte.

Es hat einwandfrei funktioniert, nachdem ich die Firewall-Regeln geändert habe, um eingehenden Datenverkehr auf Port 80 (für http), Port 443 (für https) und Port 8080 (dies ist der Port, an dem meine Webanwendung standardmäßig auf dem Tomcat-Server bereitgestellt wurde) zuzulassen.

Ich habe die Firewall- und Sicherheitsgruppenkonfigurationen unter dem folgenden Link dokumentiert:

http://abhirampal.com/2015/08/04/firewall-config-for-java-web-app-hosted-on-aws-ec2-windows-2012-server/

Abhi Rampal
quelle
1
Genial, du hast meinen Tag gerettet <3
Thamaraiselvam
1

Sie haben den Webserver wahrscheinlich falsch konfiguriert. Sie können dies testen, indem Sie eine Verbindung zum Server herstellen über:

telnet $IP 80

Wenn Sie keine Fehlermeldung erhalten, können Sie eine Verbindung herstellen. In diesem Fall haben Sie den Webserver nicht richtig eingerichtet.

Peter Lamby
quelle
Sie haben Recht, ich kann keine Verbindung über Telnet von meinem lokalen Computer zur aws-Instanz herstellen. Können Sie mir bitte helfen, wie ich das Problem beheben kann? Ich habe versucht, IIS auf einer aws-Instanz nachzuschlagen, und es wird ausgeführt.
user242725
Vielen Dank. Es funktionierte nach dem Deaktivieren der Domain, der privaten und der öffentlichen Firewall. Aber nicht sicher, wie ich die Instanz sichern und gleichzeitig außerhalb der Instanz auf meine Webanwendung zugreifen kann.
user242725
1

Möglicherweise muss eine Regel für den eingehenden TCP-Port 80 in die AWS-Sicherheitsgruppe für Ihre Instanz eingegeben werden.

Jaybro
quelle
1

Möglicherweise müssen Sie den Port verfügbar machen, um öffentliche Anrufe von der AWS-Konsole abzuhören.

freaksterz
quelle
Die AWS-Konsole verfügt über viele Funktionen, möglicherweise können Sie genauer sein.
kmarsh
1

Zwei Dinge für mich:

  1. Änderung der Sicherheitsgruppe, die an meine RDS-Instanz angehängt ist, um Datenverkehr ein- und auszulassen

  2. Festlegen eingehender und ausgehender Regeln im RDS für den Anwendungsport

Detaillierte Schritte:

  • Klicken Sie in der oberen Leiste Ihrer AWS-Konsole auf Dienste und wählen Sie EC2 aus

  • Klicken Sie im linken Menü des nächsten Fensters unter Instanzen auf Instanzen, um Ihre Instanzen anzuzeigen

  • Scrollen Sie in der Tabelle, die die Instanz enthält, auf die Sie von der Öffentlichkeit aus zugreifen möchten, nach rechts zu einer Spalte mit dem Namen Sicherheitsgruppen. Klicken Sie auf diese Sicherheitsgruppe.

  • Scrollen Sie in der angezeigten Tabelle zum Ende der Tabelle mit der Beschreibung der Sicherheitsgruppe und anderen Registerkarten wie "Eingehend", "Ausgehend" und "Tags"
  • Klicken Sie auf die Registerkarte Eingehend. Klicken Sie auf Bearbeiten. Standardmäßig gibt es eine Regel (RDP).
  • Fügen wir noch zwei hinzu
  • Klicken Sie auf die Schaltfläche Regel hinzufügen.
  • Wählen Sie Alle Datenverkehr für Typ, Alle für Protokoll
  • Verlassen Sie den Portbereich (0 - 65535) und wählen Sie die Quelle als Benutzerdefiniert aus.
  • All dies gilt für beide Regeln. 2) Geben Sie für die erste Regel in das Textfeld, das nach der Quelle angezeigt wird, 0.0.0.0/0 ein. 3) Geben Sie für die zweite Regel :: / 0 4) ein.
  • Klicken Sie auf Speichern

    Melden Sie sich jetzt bei Ihrem AWS RDS an, um eingehende und ausgehende Regeln über die Brandmauer festzulegen

  • Starten Sie das Bedienfeld. Klicken Sie auf System und Sicherheit (möglicherweise die erste) und dann auf Windows Fire-Wand. Klicken Sie dann auf Erweiterte Einstellungen

  • Klicken Sie links auf das Menü Eingehende Regeln.

  • Klicken Sie auf der Registerkarte Aktionen (rechts) auf Neue Regel

  • Wählen Sie Port und klicken Sie auf Weiter

  • Wählen Sie TCP (falls nicht ausgewählt) und unten Spezifische lokale Ports auswählen.

  • Geben Sie in das Feld die Portnummer Ihrer Anwendung ein und klicken Sie auf Weiter

  • Wählen Sie Verbindung zulassen und klicken Sie auf Weiter.

  • Geben Sie den Regelnamen an. So etwas wie der Name Ihrer App aus Gründen der Lesbarkeit und klicken Sie auf Fertig stellen

Dann konfigurieren wir den laufenden Verkehr

  • Wählen Sie im selben Menü wie für eingehende Regeln die Option Ausgehende Regeln aus und gehen Sie wie bei eingehenden Regeln beschrieben vor
  • Nach diesen Einstellungen müssen Sie von außen auf Ihre Anwendung zugreifen können
Deo
quelle
0

Bitte beziehen Sie sich auf den Link. Es wäre genauer.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

Sie können die Kommunikation zwischen allen dieser Sicherheitsgruppe zugeordneten Instanzen oder zwischen Instanzen, die einer anderen Sicherheitsgruppe zugeordnet sind, und Instanzen, die dieser Sicherheitsgruppe zugeordnet sind, zulassen. Klicken Sie auf Regel hinzufügen, wählen Sie Alle ICMP aus und geben Sie die ID der Sicherheitsgruppe in Quelle ein. Dadurch erhalten Sie eine Liste der Sicherheitsgruppen. Wählen Sie die Sicherheitsgruppe aus der Liste aus. Wiederholen Sie die Schritte für die TCP- und UDP-Protokolle. Klicken Sie auf Speichern, wenn Sie fertig sind.

freaksterz
quelle
0

Es ist hauptsächlich das Problem mit der Windows-Firewall. Ich habe die gleichen Schritte wie Sie versucht, es war nicht erfolgreich. In dem Moment, als ich die Firewall ausschaltete, war alles in Ordnung. Ich denke, die Sicherheit sollte nicht beeinträchtigt werden, da wir Regeln für eingehende ausgehende Nachrichten konfigurieren.

user408251
quelle
-1

Für WINDOWS-Instanz - Klicken Sie mit der rechten Maustaste auf den Namen der EC-2-Instanz, navigieren Sie zu der PEM-Datei, die während der Instanzerstellung erstellt wurde, und klicken Sie auf Kennwort entschlüsseln. Sie erhalten den Benutzernamen und das Kennwort für die Verbindung über Start -> Ausführen -> mstsc -> Windows IP mit Windows-Authentifizierung als Administrator und dessen Kennwort

Für die LINUX-Instanz -> puttygen herunterladen und auf die Schaltfläche LOAD klicken, um die PEM-Datei auszuwählen, und dann auf die Schaltfläche GENERATE klicken, um eine ppk-Datei zu generieren. Geben Sie über Putty die IP ein und wählen Sie unter Verbindungen -> SSH -> AUTH -> Durchsuchen die PPK-Datei aus und speichern Sie die Putty-Sitzungen.

Robertson Bhadrachalam
quelle
Dies wäre eine gute Antwort, wenn die Frage lautete: "Wie melde ich mich mit meinem SSH-Schlüssel an?". Die Frage war jedoch "Wie greife ich über meinen Browser auf eine Webseite zu?".
Jenny D