ouverture du port 80 sur Ubuntu AWS

11

J'exécute un serveur tomcat sur une ubuntumachine hébergée dans une instance AWS. Je peux atteindre le serveur via public_ip:8080mais lorsque je change le port d'écoute server.xmlde 8080à la 80connexion est refusée par l'hôte distant.

Le numéro de port 80est activé AWS firewall.

J'ai vérifié ufwvia sudo ufw statusmais le résultat estinactive

Le ufwfront-end du mécanisme de pare-feu sous-jacent?

Comment puis - je activer le port 80sur firewall?

Merci d'avance.

Sortie de iptables -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

Sortie de netstat -punta

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      785/mysqld
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      613/sshd
tcp        0      0 172.31.1.56:22          92.45.23.114:3913       ESTABLISHED 5825/sshd: ubuntu [
tcp        0      0 172.31.1.56:22          92.45.23.114:19374      ESTABLISHED 7320/sshd: ubuntu [
tcp        0      0 172.31.1.56:22          92.45.23.114:28051      ESTABLISHED 6901/sshd: ubuntu [
tcp        0    272 172.31.1.56:22          92.45.23.114:9327       ESTABLISHED 7428/sshd: ubuntu [
tcp        0      0 172.31.1.56:22          92.45.23.114:7597       ESTABLISHED 7034/sshd: ubuntu [
tcp        0      0 127.0.0.1:3306          127.0.0.1:45655         ESTABLISHED 785/mysqld
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      7275/java
tcp6       0      0 :::8080                 :::*                    LISTEN      7275/java
tcp6       0      0 :::22                   :::*                    LISTEN      613/sshd
tcp6       0      0 127.0.0.1:45655         127.0.0.1:3306          ESTABLISHED 7275/java
udp        0      0 0.0.0.0:68              0.0.0.0:*                           538/dhclient3

Sortie netstat -na |grep \:80avant de changer de port 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Sortie netstat -na |grep \:80après avoir changé de port 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Sortie du navigateur sur le port 80:

ERROR

The requested URL could not be retrieved

The following error was encountered while trying to retrieve the URL: http://54.194.236.229/TransportationAutomation/personnel.xhtml

Connection to 54.194.236.229 failed.

The system returned: (111) Connection refused

The remote host or network may be down. Please try the request again.

Your cache administrator is webmaster.


Generated Fri, 14 Feb 2014 15:01:06 GMT by proxy (squid/2.7.STABLE7)

Définition de port partie de server.xml

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

partie de Catalina.out lors du démarrage de tomcat sur port 80:

Feb 14, 2014 3:04:25 PM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]
java.net.BindException: Permission denied <null>:80
  at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:391)
  at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:554)
  at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:409)
  at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
  at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)
  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:815)
  at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:594)
  at org.apache.catalina.startup.Catalina.load(Catalina.java:619)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449)
Caused by: java.net.BindException: Permission denied
  at java.net.PlainSocketImpl.socketBind(Native Method)
  at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
  at java.net.ServerSocket.bind(ServerSocket.java:376)
  at java.net.ServerSocket.<init>(ServerSocket.java:237)
  at java.net.ServerSocket.<init>(ServerSocket.java:181)
  at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
  at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:378)
... 17 more 

MISE À JOUR 2:

J'ai installé tomcat via apt-getc'est donc une version reconditionnée de tomcat. Ici, il est dit que l'exécution de tomcat en tant que root résoudra le problème, mais ici, il Tomcat should not be run under the root user.est dit qu'il n'y a pas de moyen possible de le gérer avec l'instance tomcat reconditionnée?

MISE À JOUR 3:

Je suppose que c'est la réponse à ma question

gesus
la source
Veuillez envisager d'inclure les sections pertinentes de votre server.xml, la sortie d'iptables -S, et idéalement la sortie pertinente de netstat -punta avec tomcat en cours d'exécution.
Daniel Widrick
Si vous avez installé Tomcat à l'aide de apt-get, je tiens à souligner que le changement de port server.xmln'est généralement pas suffisant, car le port 80 est un port privilégié. Avez-vous vérifié catalina.outpour voir si vous avez un message d'erreur?
David Levesque
Avant de modifier le port dans server.xml, quelle est la sortie de netstat -na | grep \: 80 ? Ensuite, après avoir modifié le port dans server.xml et redémarré jetty, quelle est la sortie de netstat -na | grep \: 80 ? Cela ne semble pas être un problème de pare-feu.
meatflag
J'utilise debian wheezy et j'ai découvert que je devais éditer / etc / default / tomcat7 au lieu de /etc/init.d/tomcat7
Ruut

Réponses:

11

Oui, ça l'est. C'est comme une version facile à utiliser d'iptables. Essayez d'écrire, pour voir les règles du pare-feu iptables:

$ sudo iptables -L

Vous pouvez ouvrir pour le port 80 en utilisant:

$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Je peux décrire cette ligne pour vous, si vous en avez besoin. Dis-moi :-)

Adionditsak
la source
sortie de sudo iptables -Lis Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Il serait parfait de décrire la ligne qui vise à ouvrir le port 80. Merci d'avance.
gesus
J'exécute votre commande et le port 80 est ouvert et je peux accéder à mon site Web. Ensuite, après avoir redémarré, le port est à nouveau fermé, je dois le rouvrir à chaque fois. Existe-t-il un moyen de l'ouvrir définitivement? J'utilise Ubuntu 14.04 LTS sur un VPS
KoKo
Être une nouvelle personne sur AWS Server EC2 (Ubuntu) a passé beaucoup de temps sur beaucoup de choses. J'ai utilisé votre commande pour ouvrir un port personnalisé et cela a fonctionné. Bien que j'aie déjà ajouté ce port personnalisé dans le groupe de sécurité, la section entrante mais n'a toujours pas pu accéder. Après avoir exécuté votre commande, mon site Web s'exécute sur le serveur dont mon application a besoin sur un port personnalisé. Très utile.
Hammad Hassan
6

Cela a fonctionné pour moi:

Exécuter en tant que root:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
poursuivre en justice
la source