web-dev-qa-db-fra.com

Port d'ouverture 80 sur Ubuntu AWS

Je gère un serveur Tomcat sur une machine ubuntu hébergé dans une instance AWS. Je peux atteindre le serveur via public_ip:8080 Mais quand je change le port d'écoute sur server.xml de 8080 à 80 La connexion est refusée par l'hôte distant.

Numéro de port 80 est activé sur AWS firewall.

J'ai vérifié ufw via Sudo ufw status mais le résultat est inactive

ufw front-end du mécanisme de pare-feu sous-jacent?

Comment puis-je activer le port 80 sur firewall?

Merci d'avance.

Output 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 de netstat -na |grep \:80 Avant de changer de port sur 80:

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

Sortie de netstat -na |grep \:80 Après avoir changé de port sur 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 du 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ébut 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-get C'est donc une version reconditionnée de Tomcat. ICI Il dit que fonctionnant Tomcat alors que la racine résoudra le problème mais ici Il dit Tomcat should not be run under the root user. N'y a-t-il aucune façon possible de le gérer avec l'instance Tomcat reconditionnée?

Mise à jour 3:

Je suppose - this est la réponse à ma question

11
gesus

Oui c'est le cas. C'est comme une version facile à utiliser des iptables. Essayez d'écrire, pour voir les règles de pare-feu IPTABLES:

$ Sudo iptables -L

Vous pouvez ouvrir le port 80 en utilisant:

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

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

11
Adionditsak

Cela a fonctionné pour moi:

Courir en tant que root:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
6
Sue