abrindo a porta 80 no Ubuntu AWS

11

Estou executando um servidor tomcat em uma ubuntumáquina hospedada em uma instância da AWS. Posso acessar o servidor via public_ip:8080mas quando altero a porta de escuta server.xmlde 8080para a 80conexão é recusada pelo host remoto.

O número da porta 80está ativado AWS firewall.

Eu verifiquei ufwvia sudo ufw statusmas o resultado éinactive

O ufwfront-end do mecanismo de firewall subjacente?

Como posso ativar a porta 80em firewall?

Agradeço antecipadamente.

Saída de iptables -S:

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

Saída 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

Saída netstat -na |grep \:80antes de alterar a porta para 80:

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

Saída netstat -na |grep \:80após alterar a porta para 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Saída do navegador na 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 de definição de porta de server.xml

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

parte do Catalina.out ao iniciar o tomcat em 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 

ATUALIZAÇÃO 2:

Eu instalei o tomcat via, apt-getpor isso é uma versão reembalada do tomcat. Aqui , diz que executar o tomcat como root resolverá o problema, mas aqui diz Tomcat should not be run under the root user.: Não há nenhuma maneira possível de lidar com a instância do tomcat reembalada?

ATUALIZAÇÃO 3:

Eu acho que essa é a resposta para minha pergunta

gesus
fonte
Por favor, considere incluir as seções relevantes do seu server.xml, a saída do iptables -S e, idealmente, a saída relevante do netstat -punta com o tomcat em execução.
11118 Daniel Widrick
Se você instalou o Tomcat usando apt-get, apenas quero salientar que alterar a porta server.xmlnormalmente não é suficiente, porque a porta 80 é uma porta privilegiada. Você fez check-in catalina.outpara ver se há alguma mensagem de erro?
David Levesque
Antes de alterar a porta no server.xml, qual é a saída do netstat -na | grep \: 80 ? Depois de alterar a porta no server.xml e reiniciar o jetty, qual é a saída do netstat -na | grep \: 80 ? Isso não parece ser um problema de firewall.
meatflag
Estou executando o debian ofegante e descobri que eu precisava para editar / etc / default / tomcat7 vez de /etc/init.d/tomcat7
Ruut

Respostas:

11

Sim, ele é. É como uma versão fácil de usar do iptables. Tente escrever, para ver as regras de firewall do iptables:

$ sudo iptables -L

Você pode abrir para a porta 80 usando:

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

Eu posso descrever essa linha para você, se você precisar. Apenas me diga :-)

Adionditsak
fonte
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 Seria perfeito descrever a linha que visa abrir a porta 80. Agradecemos antecipadamente.
gesus
Executo seu comando e a porta 80 está aberta e posso acessar meu site. Depois que eu reinicio, a porta é fechada novamente, preciso reabri-la toda vez. Existe uma maneira de abri-lo permanentemente? Estou executando o Ubuntu 14.04 LTS em um VPS
KoKo
Ser uma pessoa nova no AWS Server EC2 (Ubuntu) passava muito tempo com muitas coisas. Eu usei seu comando para abrir uma porta personalizada e funcionou. Embora eu já tenha adicionado essa porta personalizada no Grupo de Segurança, seção de entrada, mas ainda não consegui acessar. Depois de executar seu comando, meu site está sendo executado no servidor necessário do aplicativo na porta personalizada. Realmente util.
Hammad Hassan
6

Isso funcionou para mim:

Executar como root:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Processar
fonte