apertura della porta 80 su Ubuntu AWS


11

Sto eseguendo un server Tomcat su una ubuntumacchina ospitata in un'istanza AWS. Posso raggiungere il server tramite public_ip:8080ma quando cambio la porta di ascolto server.xmlda 8080alla 80connessione viene rifiutato dall'host remoto.

Il numero di porta 80è abilitato su AWS firewall.

Ho controllato ufwtramite sudo ufw statusma il risultato èinactive

Il ufwfront-end del meccanismo firewall sottostante è?

Come posso abilitare la porta 80su firewall?

Grazie in anticipo.

Risultato di iptables -S:

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

Uscita di 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

Uscita netstat -na |grep \:80prima di cambiare porta in 80:

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

Uscita di netstat -na |grep \:80dopo aver cambiato porta in 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Uscita del browser sulla porta 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)

Parte della definizione della porta di server.xml

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

parte di Catalina.out all'avvio di tomcat su 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 

AGGIORNAMENTO 2:

Ho installato Tomcat tramite apt-getquindi è una versione riconfezionata di Tomcat. Qui dice che l'esecuzione di Tomcat come root risolverà il problema, ma qui dice Tomcat should not be run under the root user.Non c'è modo di gestirlo con l'istanza di Tomcat riconfezionata?

AGGIORNAMENTO 3:

Immagino che questa sia la risposta alla mia domanda


Si prega di considerare di includere le sezioni pertinenti di server.xml, l'output di iptables -S e idealmente l'output rilevante di netstat -punta con tomcat in esecuzione.
Daniel Widrick,

Se hai installato Tomcat usando apt-get, voglio solo sottolineare che cambiare la porta in di server.xmlsolito non è sufficiente, perché la porta 80 è una porta privilegiata. Hai effettuato il check-in catalina.outper vedere se hai qualche messaggio di errore?
David Levesque,

Prima di cambiare la porta in server.xml, qual è l'output di netstat -na | grep \: 80 ? Quindi dopo aver modificato la porta in server.xml e aver riavviato il molo qual è l'output di netstat -na | grep \: 80 ? Questo non sembra essere un problema di firewall.
bandiera della carne

Sto eseguendo debian wheezy e ho scoperto che dovevo modificare / etc / default / tomcat7 invece di /etc/init.d/tomcat7
Ruut

Risposte:


11

Sì. È come una versione facile da usare di iptables. Prova a scrivere, per vedere le regole del firewall iptables:

$ sudo iptables -L

È possibile aprire per la porta 80 utilizzando:

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

Posso descrivere questa riga per te, se ne hai bisogno. Dimmi :-)


output of 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 Sarebbe perfetto per descrivere la linea che mira ad aprire la porta 80. Grazie in anticipo.
Gesù

Eseguo il comando e la porta 80 è aperta e posso accedere al mio sito Web. Quindi dopo il riavvio, la porta viene chiusa di nuovo, devo riaprirla ogni volta. C'è un modo per aprirlo permanentemente? Sto eseguendo Ubuntu 14.04 LTS su un VPS
KoKo

Essere una nuova persona su AWS Server EC2 (Ubuntu) ha trascorso molto tempo su molte cose. Ho usato il tuo comando per aprire una porta personalizzata e ha funzionato. Anche se ho già aggiunto quella porta personalizzata nel gruppo di sicurezza, nella sezione in entrata ma non riesco ancora ad accedere. Dopo aver eseguito il comando, il mio sito Web è in esecuzione sul server necessario per l'app sulla porta personalizzata. Davvero utile.
Hammad Hassan,

6

Questo ha funzionato per me:

Esegui come root:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.