Nie można uzyskać dostępu do witryny w instancji EC2 za pośrednictwem publicznego adresu IP

10

Mam mikro instancję Amazon EC2 z serwerem Windows 2008 i wdrożyłem tam jedną przykładową aplikację internetową, która używa java i wdrożoną na serwerze tomcat 7. Jestem w stanie uzyskać do niego dostęp lokalnie na instancji, ale kiedy próbowałem uzyskać do niego dostęp poza instancją AWS, powiedzmy z mojego komputera domowego, używając publicznego AWS / publicznego adresu IP / elastycznego adresu IP instancji, daje mi „strona internetowa jest niedostępne".

Przeszedłem przez tak wiele podobnych pytań na tym forum i myślę, że wykonałem wszystkie ustawienia, o które proszą, ale nadal nie udało mi się.

Oto co zrobiłem / potwierdziłem.

1. localhost działa, więc aplikacja nasłuchuje na porcie 80.

2. dodano regułę ruchu przychodzącego dla HTTP na porcie 80 dla wszystkich w grupie zabezpieczeń, z której korzysta moja instancja.

3. sprawdził ustawienia zapory w instancji Windows, upewnił się, że port 80 nie jest zablokowany.

4. próbował nawet z wyłączoną zaporą ogniową, ale bez powodzenia.

Byłbym bardzo wdzięczny, gdyby ktoś mógł mi w tym pomóc.

Dzięki, NS

użytkownik242725
źródło
1
Co mówi ci telnet i traceroute?
Pratap

Odpowiedzi:

5

Miałem podobny frustrujący problem, gdy zainstalowałem JetBrains YouTrack w instancji Windows Server 2012 ec2. Dla mnie zadziałało otwarcie portów zapory systemu Windows, których konkretnie używała Java, i wyłączenie portu usługi World Wide Publishing. Musiałem także uruchomić usługę YouTrack na koncie LocalSystem zamiast konta domyślnego.

Spróbuj tego:

  • Wyłącz domyślną stronę internetową w IIS, jeśli jest używana

  • Uruchom komendę netstat -a -b, aby odkryć porty, które java.exe próbował powiązać np. 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]

  • Otwórz menedżera kontroli usług i kliknij prawym przyciskiem myszy swoją usługę i otwórz okno właściwości. Na karcie Zaloguj się jako wybierz Lokalne konto systemowe jako konto, na którym działa usługa. Ważne jest, aby ten użytkownik był administratorem

  • Zdecydowanie zalecam ponowne włączenie zapory.
  • Otwórz kartę Reguły przychodzące zapory i wyłącz regułę World Wide Web Services (HTTP-In)
  • Utwórz nową regułę dla Tomcat z TCP Port 80 i każdym innym portem, którego może potrzebować.

  • Zapisz regułę i przetestuj swój adres URL spoza serwera.

Terrence Young
źródło
4

Nie powinieneś całkowicie wyłączać ustawień zapory. Zagrażałoby to bezpieczeństwu Twojej aplikacji. Zamiast tego zmodyfikuj reguły zapory dla serwera Windows dla ruchu przychodzącego na określonych portach.

Miałem podobny problem, gdy wdrożyłem aplikację na Tomcat 8 na serwerze Windows 2012 udostępnianym za pośrednictwem AWS EC2. Mogłem uzyskać dostęp do wdrożonej aplikacji na http: // localhost: 8080 z poziomu maszyny wirtualnej, ale nie z publicznego Internetu po zamianie ciągu localhost w adresie URL na publiczny adres IP maszyny wirtualnej.

Działa dobrze po zmianie reguł zapory, aby zezwolić na ruch przychodzący na porcie 80 (dla http), porcie 443 (dla https) i porcie 8080 (jest to port, przy którym moja aplikacja internetowa została domyślnie wdrożona na serwerze tomcat.

Udokumentowałem konfigurację zapory sieciowej i grupy zabezpieczeń pod linkiem poniżej:

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

Abhi Rampal
źródło
1
Wspaniale, Uratowałeś mi dzień <3
Thamaraiselvam,
1

Prawdopodobnie źle skonfigurowałeś serwer WWW. Możesz to sprawdzić, łącząc się z serwerem poprzez:

telnet $IP 80

jeśli nie pojawia się błąd, możesz się połączyć. W takim przypadku serwer WWW nie został poprawnie skonfigurowany.

Peter Lamby
źródło
Masz rację, nie jestem w stanie połączyć się przez telnet z mojego komputera lokalnego do instancji aws. Czy możesz mi pomóc, jak to naprawić? Próbowałem wyszukać IIS na instancji aws i działa.
user242725,
Dzięki. Działało to na przykład po wyłączeniu zapory domenowej, prywatnej i publicznej zapory ogniowej. Ale nie jestem pewien, jak mogę zabezpieczyć instancję i jednocześnie uzyskać dostęp do mojej aplikacji internetowej poza instancją.
user242725
1

Reguła dla przychodzącego portu TCP 80 może wymagać wprowadzenia w grupie bezpieczeństwa AWS dla twojej instancji.

jaybro
źródło
1

Konieczne może być udostępnienie portu, aby można było słuchać publicznych połączeń z konsoli AWS.

freaksterz
źródło
Konsola AWS ma wiele funkcji, być może możesz być bardziej szczegółowy.
kmarsh
1

Dwie rzeczy dla mnie:

  1. Modyfikacja grupy zabezpieczeń dołączonej do mojej instancji RDS w celu umożliwienia ruchu do i z powrotem

  2. Ustawianie reguł przychodzących i wychodzących w RDS dla portu aplikacji

Szczegółowe kroki:

  • Na górnym pasku konsoli AWS kliknij Usługi, wybierz EC2

  • W menu po lewej stronie następnego okna, w instancjach kliknij instancje, aby wyświetlić instancje

  • W tabeli zawierającej instancję, do której chcesz uzyskać dostęp publicznie, przewiń w prawo do kolumny o nazwie Grupy zabezpieczeń. Kliknij tę grupę zabezpieczeń.

  • W wyświetlonej tabeli przewiń na dół z opisem grupy zabezpieczeń i innych kart, takich jak Przychodzące, Wychodzące, Tagi
  • Kliknij kartę przychodzącą. Kliknij edytuj. Domyślnie istnieje jedna reguła (RDP).
  • Dodajmy jeszcze dwa
  • Kliknij przycisk Dodaj regułę.
  • Wybierz Cały ruch dla Typu, Cały dla Protokołu
  • Opuść zakres portów (0 - 65535), wybierz źródło jako Niestandardowe.
  • Wszystkie te dotyczą obu reguł 2) W przypadku pierwszej reguły w polu tekstowym wyświetlonym po źródle wpisz 0.0.0.0/0 3) W przypadku drugiej reguły wpisz :: / 0 4)
  • Hit Save

    Teraz zaloguj się do systemu AWS RDS, aby ustawić reguły ruchu przychodzącego i wychodzącego przez ścianę ogniową

  • Uruchom panel sterowania. Kliknij System and Security (może być pierwszy) i kliknij Windows Fire wall. Następnie kliknij Ustawienia zaawansowane

  • Kliknij menu Reguły ruchu przychodzącego po lewej stronie.

  • Na karcie Działania (po prawej) kliknij opcję Nowa reguła

  • Wybierz Port i kliknij Dalej

  • Wybierz TCP (jeśli nie wybrano), a poniżej Wybierz określone porty lokalne.

  • W polu wpisz numer portu aplikacji i kliknij przycisk Dalej

  • Wybierz Zezwalaj na połączenie i kliknij przycisk Dalej.

  • Podaj nazwę reguły. Coś w rodzaju nazwy aplikacji do celów czytelności i kliknij przycisk Zakończ

Następnie skonfiguruj bieżący ruch

  • W tym samym menu, co w przypadku reguł przychodzących, wybierz Reguły wychodzące i postępuj zgodnie z tą samą procedurą, jak opisano dla reguł przychodzących
  • Po wprowadzeniu tych ustawień musisz mieć dostęp do aplikacji z zewnątrz
Deo
źródło
0

Proszę odnieść się do linku .. To byłoby bardziej szczegółowe.

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

Można zezwolić na komunikację między wszystkimi instancjami powiązanymi z tą grupą zabezpieczeń lub między instancjami powiązanymi z inną grupą zabezpieczeń a instancjami powiązanymi z tą grupą zabezpieczeń. Kliknij opcję Dodaj regułę, wybierz opcję Wszystkie ICMP, a następnie zacznij wpisywać identyfikator grupy zabezpieczeń w polu Źródło; zapewnia to listę grup zabezpieczeń. Wybierz grupę zabezpieczeń z listy. Powtórz kroki dla protokołów TCP i UDP. Po zakończeniu kliknij Zapisz.

freaksterz
źródło
0

Jest to głównie problem z Zaporą systemu Windows. Próbowałem tych samych kroków, co Ty, ale nie powiodło się. W momencie, gdy wyłączyłem zaporę, było dobrze. Myślę, że nie powinno to mieć wpływu na bezpieczeństwo, ponieważ konfigurujemy reguły ruchu wychodzącego.

użytkownik408251
źródło
-1

W przypadku wystąpienia WINDOWS - kliknij prawym przyciskiem myszy nazwę wystąpienia EC-2, przejdź do pliku .pem utworzonego podczas tworzenia wystąpienia i kliknij opcję Odszyfruj hasło. Otrzymasz nazwę użytkownika i hasło do połączenia za pomocą Start -> Uruchom -> mstsc -> Windows IP z uwierzytelnianiem Windows jako Administrator i jego hasło

W przypadku wystąpienia LINUX -> Pobierz puttygen i kliknij przycisk LOAD, aby wybrać plik .pem, a następnie kliknij przycisk GENERATE, aby wygenerować plik ppk. Za pomocą putty wprowadź adres IP i w obszarze Połączenia -> SSH -> AUTH -> Przeglądaj, aby wybrać plik .ppk i zapisać sesje putty.

Robertson Bhadrachalam
źródło
Byłaby to świetna odpowiedź, gdyby pytanie brzmiało „jak zalogować się za pomocą mojego klucza SSH”. Pytanie brzmiało jednak: „jak uzyskać dostęp do strony internetowej z mojej przeglądarki”.
Jenny D,