Öffnen von Port 80 unter Ubuntu AWS


11

Ich verwende einen Tomcat-Server auf einem ubuntuComputer, der in einer AWS-Instanz gehostet wird. Ich kann den Server über erreichen, public_ip:8080aber wenn ich den Überwachungsport server.xmlvon 8080auf auf 80Verbindung ändere , wird dies vom Remote-Host abgelehnt.

Portnummer 80ist aktiviert AWS firewall.

Ich habe ufwüber überprüft, sudo ufw statusaber das Ergebnis istinactive

Ist das ufwFront-End des zugrunde liegenden Firewall-Mechanismus?

Wie kann ich aktivieren Port 80auf firewall?

Danke im Voraus.

Ouptut von iptables -S:

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

Ausgabe von 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

Ausgabe von netstat -na |grep \:80vor dem Portwechsel auf 80:

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

Ausgabe von netstat -na |grep \:80nach dem Portwechsel auf 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Ausgabe des Browsers am 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)

Port Definition Teil von server.xml

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

Teil von Catalina.out beim Starten von Tomcat am 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 

UPDATE 2:

Ich habe Tomcat über installiert apt-get, es ist also eine neu gepackte Version von Tomcat. Hier heißt es, dass das Ausführen von Tomcat als Root das Problem lösen wird, aber hier heißt es: Tomcat should not be run under the root user.Gibt es keine Möglichkeit, mit der neu gepackten Tomcat-Instanz damit umzugehen?

UPDATE 3:

Ich denke, das ist die Antwort auf meine Frage


Bitte berücksichtigen Sie die relevanten Abschnitte Ihrer server.xml, die Ausgabe von iptables -S und im Idealfall die relevante Ausgabe von netstat -punta bei laufendem Tomcat.
Daniel Widrick

Wenn Sie Tomcat mit installiert haben apt-get, möchte ich nur darauf hinweisen, dass das Ändern des Ports server.xmlnormalerweise nicht ausreicht, da Port 80 ein privilegierter Port ist. Haben Sie eingecheckt, catalina.outum festzustellen, ob Sie eine Fehlermeldung haben?
David Levesque

Was ist die Ausgabe von netstat -na | grep \: 80, bevor Sie den Port in server.xml ändern ? Nachdem Sie den Port in server.xml geändert und den Steg neu gestartet haben, wie lautet die Ausgabe von netstat -na | grep \: 80 ? Dies scheint kein Firewall-Problem zu sein.
Fleischflagge

Ich verwende debian wheezy und habe festgestellt, dass ich / etc / default / tomcat7 anstelle von /etc/init.d/tomcat7
Ruut

Antworten:


11

Ja ist es. Es ist wie eine benutzerfreundliche Version von iptables. Versuchen Sie zu schreiben, um die Firewall-Regeln von iptables anzuzeigen:

$ sudo iptables -L

Sie können für Port 80 öffnen, indem Sie Folgendes verwenden:

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

Ich kann diese Zeile für Sie beschreiben, wenn Sie sie brauchen. Sag's mir einfach :-)


Ausgabe von 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 Es wäre perfekt, die Leitung zu beschreiben, die den Port 80 öffnen soll. Vielen Dank im Voraus.
Gesus

Ich führe Ihren Befehl aus und Port 80 ist geöffnet und ich kann auf meine Website zugreifen. Dann, nachdem ich neu gestartet habe, wird der Port wieder geschlossen, ich muss ihn jedes Mal neu öffnen. Gibt es eine Möglichkeit, es dauerhaft zu öffnen? Ich verwende Ubuntu 14.04 LTS auf einem VPS
KoKo

Als neue Person auf AWS Server EC2 (Ubuntu) hat man viel Zeit mit vielen Dingen verbracht. Ich habe Ihren Befehl verwendet, um einen benutzerdefinierten Port zu öffnen, und es hat funktioniert. Obwohl ich diesen benutzerdefinierten Port bereits in der Sicherheitsgruppe hinzugefügt habe, konnte der eingehende Abschnitt dennoch nicht darauf zugreifen. Nachdem Sie Ihren Befehl ausgeführt haben, wird meine Website auf dem von meiner App benötigten Server am benutzerdefinierten Port ausgeführt. Wirklich hilfreich.
Hammad Hassan

6

Das hat bei mir funktioniert:

Als root ausführen:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.