No se puede acceder al sitio en la instancia EC2 a través de una IP pública

10

Tengo una micro instancia de Amazon EC2 con el servidor Windows 2008 e implementé una aplicación web de muestra que usa Java y se implementó en el servidor Tomcat 7. Puedo acceder a él localmente en la instancia, pero cuando intenté acceder a él fuera de la instancia de AWS, digamos desde la computadora de mi casa usando DNS público / dirección IP pública / dirección IP elástica de la instancia de AWS, me da "La página web es no disponible".

He pasado por tantas preguntas similares en este foro y creo que he hecho todo lo que piden, pero todavía no he tenido éxito.

Aquí está lo que he hecho / confirmado.

1. localhost funciona, por lo que la aplicación escucha en el puerto 80.

2. Se agregó una regla de entrada para HTTP en el puerto 80 para todos los miembros del grupo de seguridad que usa mi instancia.

3. comprobó la configuración del firewall en la instancia de Windows, se aseguró de que el puerto 80 no esté bloqueado.

4. intentado incluso con apagar el firewall, pero no tuvo éxito.

Realmente agradecería si alguien me puede ayudar en esto.

Gracias NS

usuario242725
fuente
1
¿Qué te dice telnet y traceroute?
Pratap

Respuestas:

5

Tuve un problema frustrante similar cuando instalé JetBrains YouTrack en una instancia de Windows Server 2012 ec2. Lo que funcionó para mí fue abrir los puertos de firewall de Windows que Java usaba específicamente e inhabilitar el puerto del servicio World Wide Publishing. También tuve que ejecutar el servicio YouTrack con la cuenta LocalSystem en lugar de la cuenta predeterminada.

Prueba esto:

  • Apague el sitio web predeterminado en IIS si está en uso

  • Ejecute un netstat -a -b para descubrir los puertos a los que java.exe intentaba vincularse, por ejemplo:

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

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

  • Abra el administrador de control de servicios y haga clic derecho en su servicio y abra el cuadro de diálogo de propiedades. En la pestaña Iniciar sesión como, seleccione Cuenta del sistema local como la cuenta con la que se ejecuta el servicio. Es importante que este usuario sea administrador

  • Recomiendo volver a activar el firewall.
  • Abra la pestaña Reglas de entrada del cortafuegos y desactive la Regla de Servicios de World Wide Web (HTTP-In)
  • Cree una nueva regla para Tomcat con el puerto TCP 80 y cualquier otro puerto que pueda necesitar.

  • Guarde la regla y pruebe su url desde fuera del servidor.

Terrence Young
fuente
4

No deberías desactivar la configuración del firewall por completo. Esto comprometería la seguridad de su aplicación. En su lugar, modifique las reglas de firewall de entrada del servidor de Windows para permitir el tráfico entrante en puertos específicos.

Tuve un problema similar cuando implementé una aplicación en Tomcat 8 en el servidor de Windows 2012 aprovisionado a través de AWS EC2. Pude acceder a la aplicación implementada en http: // localhost: 8080 desde la VM pero no desde Internet público después de reemplazar la cadena localhost en la URL con la dirección IP pública de la VM.

Funcionó bien después de cambiar las reglas del firewall para permitir el tráfico entrante en el puerto 80 (para http), el puerto 443 (para https) y el puerto 8080 (este es el puerto en el que se implementó mi aplicación web de forma predeterminada en el servidor Tomcat.

He documentado las configuraciones del firewall y del grupo de seguridad en el siguiente enlace:

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

Abhi Rampal
fuente
1
Impresionante, me salvaste el día <3
Thamaraiselvam
1

Probablemente haya configurado mal el servidor web. Puede probar eso conectándose al servidor a través de:

telnet $IP 80

Si no recibe un error, puede conectarse. En este caso, no configuró el servidor web correctamente.

Peter Lamby
fuente
Tiene razón, no puedo conectarme a través de telnet desde mi computadora local a una instancia de aws. ¿Pueden ayudarme, por favor, cómo puedo solucionarlo? Intenté buscar IIS en una instancia de aws y se está ejecutando.
user242725
Gracias. Funcionó después de desactivar el dominio, el firewall privado y público, por ejemplo. Pero no estoy seguro, ¿cómo puedo asegurar la instancia y al mismo tiempo acceder a mi aplicación web fuera de la instancia?
user242725
1

Es posible que sea necesario ingresar una regla para el puerto TCP entrante 80 en el grupo de seguridad de AWS para su instancia.

jaybro
fuente
1

Es posible que deba hacer que el puerto esté disponible para escuchar cualquier llamada pública desde la consola de AWS.

freaksterz
fuente
La consola de AWS tiene muchas características, quizás podría ser más específico.
kmarsh
1

Dos cosas para mi:

  1. Modificación del grupo de seguridad adjunto a mi instancia de RDS para permitir la entrada y salida de tráfico

  2. Establecer reglas entrantes y salientes en el RDS para el puerto de la aplicación

Pasos detallados:

  • En la barra superior de su consola de AWS, haga clic en Servicios, seleccione EC2

  • En el menú izquierdo de la siguiente ventana, en instancias, haga clic en instancias para ver sus instancias

  • En la tabla que contiene la instancia a la que desea acceder desde el público, desplácese hacia la derecha a una columna denominada Grupos de seguridad. Haga clic en este grupo de seguridad.

  • En la tabla que se muestra, desplácese hasta la parte inferior que tiene una descripción del grupo de seguridad y otras pestañas como Entrante, Saliente, Etiquetas
  • Haga clic en la pestaña de entrada. Haga clic en editar. Por defecto hay una regla (RDP).
  • Agreguemos dos más
  • Haga clic en el botón Agregar regla.
  • Seleccione Todo el tráfico para Tipo, Todo para Protocolo
  • Deje el rango de puertos (0 - 65535), seleccione la fuente como Personalizada.
  • Todo esto se aplica a ambas reglas 2) Para la primera regla, en el cuadro de texto que aparece después de la fuente, ingrese 0.0.0.0/0 3) Para la segunda regla, ingrese :: / 0 4)
  • Presiona Guardar

    Ahora inicie sesión en su AWS RDS para establecer reglas de entrada y salida a través del cortafuegos

  • Inicia el panel de control. Haga clic en Sistema y seguridad (puede ser el primero) y haga clic en Firewall de Windows. Luego haga clic en Configuración avanzada

  • Haga clic en el menú Reglas de entrada a la izquierda.

  • En la pestaña Acciones (a la derecha), haga clic en Nueva regla

  • Seleccione Puerto y haga clic en Siguiente

  • Seleccione TCP (si no está seleccionado) y debajo Seleccione Puertos locales específicos.

  • En el campo, ingrese el número de puerto de su aplicación y haga clic en Siguiente

  • Seleccione Permitir la conexión y haga clic en siguiente.

  • Especifique el nombre de la regla. Algo así como el nombre de su aplicación para fines de legibilidad y haga clic en finalizar

Luego, configuremos el tráfico saliente

  • En el mismo menú que para Reglas de entrada, seleccione Reglas de salida y siga el mismo procedimiento descrito para las reglas de entrada
  • Después de esta configuración, debe poder acceder a su aplicación desde afuera
Deo
fuente
0

Consulte el enlace ... Sería más específico.

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

Puede permitir la comunicación entre todas las instancias asociadas con este grupo de seguridad, o entre instancias asociadas con otro grupo de seguridad e instancias asociadas con este grupo de seguridad. Haga clic en Agregar regla, seleccione Todos ICMP, luego comience a escribir la ID del grupo de seguridad en Fuente; Esto le proporciona una lista de grupos de seguridad. Seleccione el grupo de seguridad de la lista. Repita los pasos para los protocolos TCP y UDP. Haga clic en Guardar cuando haya terminado.

freaksterz
fuente
0

Es principalmente el problema con el Firewall de Windows. Intenté los mismos pasos que tú, pero no fue exitoso. En el momento en que apagué el cortafuegos, estaba bien. Creo que la seguridad no debería verse afectada ya que estamos configurando reglas entrantes y salientes.

usuario408251
fuente
-1

Para la instancia de WINDOWS: haga clic con el botón derecho en el nombre de la instancia EC-2, busque el archivo .pem creado durante la creación de la instancia y haga clic en Descifrar contraseña. Obtendrá el nombre de usuario y la contraseña para conectarse a través de Inicio -> Ejecutar -> mstsc -> IP de Windows con autenticación de Windows como administrador y su contraseña

Para la instancia de LINUX -> Descargue puttygen y haga clic en el botón CARGAR para seleccionar el archivo .pem y luego haga clic en el botón GENERAR para generar un archivo ppk. A través de masilla, ingrese la IP y en Conexiones -> SSH -> AUTH -> Examinar para seleccionar el archivo .ppk y guardar las sesiones de masilla.

Robertson Bhadrachalam
fuente
Esta sería una gran respuesta si la pregunta hubiera sido "¿cómo inicio sesión con mi clave SSH"? Pero la pregunta era "¿cómo accedo a una página web desde mi navegador".
Jenny D