Impossible d'accéder au site sur l'instance EC2 via une IP publique

10

J'ai une micro-instance Amazon EC2 avec un serveur Windows 2008 et j'ai déployé un exemple d'application Web là-bas qui utilise Java et déployé sur le serveur Tomcat 7. Je peux y accéder localement sur l'instance, mais lorsque j'ai essayé d'y accéder en dehors de l'instance AWS, disons depuis mon ordinateur personnel en utilisant le DNS public AWS / l'adresse IP publique / l'adresse IP élastique de l'instance, cela me donne "La page Web est indisponible".

J'ai traversé tellement de questions similaires dans ce forum et je pense avoir fait tout le paramétrage qu'ils demandent, mais toujours pas de succès.

Voici ce que j'ai fait / confirmé.

1. localhost fonctionne, donc l'application écoute sur le port 80.

2. ajouté une règle entrante pour HTTP sur le port 80 pour tout le monde sous le groupe de sécurité que mon instance utilise.

3. vérifié le réglage du pare-feu sur l'instance de Windows, assurez-vous que le port 80 n'est pas bloqué.

4. essayé même avec désactiver le pare-feu, mais sans succès.

J'apprécierais vraiment que quelqu'un puisse m'aider à ce sujet.

Merci, NS

user242725
la source
1
Que vous dit telnet et traceroute?
Pratap

Réponses:

5

J'ai eu un problème frustrant similaire lorsque j'ai installé JetBrains YouTrack sur une instance ec2 de Windows Server 2012. Ce qui a fonctionné pour moi a été d'ouvrir les ports du pare-feu Windows que java utilisait spécifiquement et de désactiver le port de service World Wide Publishing. J'ai également dû exécuter le service YouTrack sous le compte LocalSystem au lieu du compte par défaut.

Essaye ça:

  • Désactiver le site Web par défaut dans IIS s'il est en cours d'utilisation

  • Exécutez un netstat -a -b pour découvrir les ports auxquels java.exe tentait de se lier, par exemple:

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

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

  • Ouvrez le gestionnaire de contrôle des services et faites un clic droit sur votre service et ouvrez la boîte de dialogue des propriétés. Sous l'onglet Connexion en tant que, sélectionnez Compte système local comme compte sous lequel le service s'exécute. Il est important que cet utilisateur soit administrateur

  • Je recommande fortement de réactiver le pare-feu.
  • Ouvrez l'onglet Règles du pare-feu entrant et désactivez la règle des services World Wide Web (HTTP-In)
  • Créez une nouvelle règle pour Tomcat avec le port TCP 80 et tout autre port dont il pourrait avoir besoin.

  • Enregistrez la règle et testez votre URL depuis l'extérieur du serveur.

Terrence Young
la source
4

Vous ne devez pas désactiver complètement les paramètres du pare-feu. Cela compromettrait la sécurité de votre application. Modifiez plutôt les règles de pare-feu entrant du serveur Windows pour autoriser le trafic entrant sur des ports spécifiques.

J'ai eu un problème similaire où j'avais déployé une application sur Tomcat 8 sur un serveur Windows 2012 provisionné via AWS EC2. J'ai pu accéder à l'application déployée sur http: // localhost: 8080 depuis la VM mais pas depuis Internet public après avoir remplacé la chaîne localhost dans l'URL par l'adresse IP publique de la VM.

Cela a bien fonctionné après avoir modifié les règles de pare-feu pour autoriser le trafic entrant sur le port 80 (pour http), le port 443 (pour https) et le port 8080 (c'est le port sur lequel mon application Web a été déployée par défaut sur le serveur tomcat).

J'ai documenté les configurations de pare-feu et de groupe de sécurité sur le lien ci-dessous:

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

Abhi Rampal
la source
1
Génial, vous m'avez sauvé la journée <3
Thamaraiselvam
1

Vous avez probablement mal configuré le serveur Web. Vous pouvez le tester en vous connectant au serveur via:

telnet $IP 80

si vous n'obtenez pas d'erreur, vous pouvez vous connecter. Dans ce cas, vous n'avez pas configuré correctement le serveur Web.

Peter Lamby
la source
Vous avez raison, je ne peux pas me connecter via telnet depuis mon ordinateur local à l'instance aws. Pouvez-vous m'aider, comment puis-je y remédier? J'ai essayé de rechercher IIS sur l'instance aws et il fonctionne.
user242725
Merci. Cela a fonctionné après avoir désactivé le pare-feu de domaine, privé et public par exemple. Mais je ne sais pas, comment puis-je sécuriser l'instance et en même temps accéder à ma webapp en dehors de l'instance.
user242725
1

Il peut être nécessaire de saisir une règle pour le port TCP entrant 80 dans le groupe de sécurité AWS de votre instance.

Jaybro
la source
1

Vous devrez peut-être rendre le port disponible pour écouter tout appel public à partir de la console AWS.

freaksterz
la source
La console AWS possède de nombreuses fonctionnalités, peut-être pourriez-vous être plus précis.
kmarsh
1

Deux choses pour moi:

  1. Modification du groupe de sécurité attaché à mon instance RDS pour autoriser le trafic entrant et sortant

  2. Définition des règles entrantes et sortantes dans le RDS pour le port d'application

Étapes détaillées:

  • Dans la barre supérieure de votre console AWS, cliquez sur Services, sélectionnez EC2

  • Dans le menu de gauche de la fenêtre suivante, sous instances, cliquez sur instances pour afficher vos instances

  • Dans le tableau qui contient l'instance à laquelle vous souhaitez accéder depuis le public, faites défiler vers la droite jusqu'à une colonne nommée Groupes de sécurité. Cliquez sur ce groupe de sécurité.

  • Dans le tableau qui s'affiche, faites défiler vers le bas de celui-ci qui a la description du groupe de sécurité et d'autres onglets comme Inbound, Outbound, Tags
  • Cliquez sur l'onglet entrant. Cliquez sur modifier. Par défaut, il existe une règle (RDP).
  • Ajoutons deux autres
  • Cliquez sur le bouton Ajouter une règle.
  • Sélectionnez Tout le trafic pour le type, Tout pour le protocole
  • Laissez la plage de ports (0 - 65535), sélectionnez la source comme personnalisé.
  • Tout cela s'applique aux deux règles 2) Pour la première règle, dans la zone de texte qui apparaît après la source, mettez 0.0.0.0/0 3) Pour la deuxième règle, mettez :: / 0 4)
  • Appuyez sur Enregistrer

    Connectez-vous maintenant à votre AWS RDS pour définir des règles entrantes et sortantes via le pare-feu

  • Lancez le panneau de configuration. Cliquez sur Système et sécurité (peut-être le premier), puis sur Pare-feu Windows. Cliquez ensuite sur Paramètres avancés

  • Cliquez sur le menu Règles entrantes à gauche.

  • Dans l'onglet Actions (à droite), cliquez sur Nouvelle règle

  • Sélectionnez le port et cliquez sur suivant

  • Sélectionnez TCP (s'il n'est pas sélectionné) et sous Sélectionner des ports locaux spécifiques.

  • Dans le champ entrez le numéro de port de votre application et cliquez sur suivant

  • Sélectionnez Autoriser la connexion et cliquez sur Suivant.

  • Spécifiez le nom de la règle. Quelque chose comme le nom de votre application à des fins de lisibilité et cliquez sur Terminer

Permet ensuite de configurer le trafic sortant

  • Dans le même menu que pour les règles entrantes, sélectionnez les règles sortantes et suivez la même procédure que celle décrite pour les règles entrantes
  • Après ces paramètres, vous devez pouvoir accéder à votre application de l'extérieur
Deo
la source
0

Veuillez vous référer au lien ... Ce serait plus précis.

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

Vous pouvez autoriser la communication entre toutes les instances associées à ce groupe de sécurité, ou entre les instances associées à un autre groupe de sécurité et les instances associées à ce groupe de sécurité. Cliquez sur Ajouter une règle, sélectionnez Tout ICMP, puis commencez à taper l'ID du groupe de sécurité dans Source; cela vous fournit une liste de groupes de sécurité. Sélectionnez le groupe de sécurité dans la liste. Répétez les étapes pour les protocoles TCP et UDP. Cliquez sur Enregistrer lorsque vous avez terminé.

freaksterz
la source
0

C'est surtout le problème avec le pare-feu Windows. J'ai essayé les mêmes étapes que vous, mais cela n'a pas réussi. Au moment où je me suis détourné du pare-feu, tout allait bien. Je pense que la sécurité ne devrait pas être affectée car nous configurons les règles sortantes entrantes.

user408251
la source
-1

Pour l'instance WINDOWS - Cliquez avec le bouton droit sur le nom de l'instance EC-2, recherchez le fichier .pem créé lors de la création de l'instance et cliquez sur Décrypter le mot de passe. Vous obtiendrez le nom d'utilisateur et le mot de passe pour vous connecter via Démarrer -> Exécuter -> mstsc -> IP Windows avec authentification Windows en tant qu'administrateur et son mot de passe

Pour l'instance LINUX -> Télécharger puttygen et cliquez sur le bouton LOAD pour sélectionner le fichier .pem puis cliquez sur le bouton GENERATE pour générer un fichier ppk. Via putty, entrez l'IP et sous Connexions -> SSH -> AUTH -> Parcourir pour sélectionner le fichier .ppk et enregistrer les sessions de putty.

Robertson Bhadrachalam
la source
Ce serait une excellente réponse si la question avait été "comment puis-je me connecter avec ma clé SSH". Mais la question était "comment puis-je accéder à une page Web à partir de mon navigateur".
Jenny D