открытие порта 80 на Ubuntu AWS

11

Я использую сервер Tomcat на ubuntuмашине, размещенной в экземпляре AWS. Я могу связаться с сервером через, public_ip:8080но когда я меняю порт прослушивания server.xmlс 8080на 80соединение, удаленный хост отказывается.

Номер порта 80включен AWS firewall.

Я проверил ufwчерез, sudo ufw statusно результатinactive

Является ли ufwинтерфейс базового механизма брандмауэра?

Как я могу включить порт 80на firewall?

Заранее спасибо.

Выход из iptables -S:

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

Выход из 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

Вывод netstat -na |grep \:80перед сменой порта на 80:

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

Вывод netstat -na |grep \:80после изменения порта на 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Вывод браузера на порт 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)

Часть определения порта server.xml

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

часть Catalina.out при запуске tomcat на 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 

ОБНОВЛЕНИЕ 2:

Я установил Tomcat через, apt-getтак что это перепакованная версия Tomcat. Здесь говорится, что запуск tomcat от имени root решит проблему, но здесь говорится, что Tomcat should not be run under the root user.нет ли способа справиться с перепакованным экземпляром tomcat?

ОБНОВЛЕНИЕ 3:

Я думаю, это ответ на мой вопрос

gesus
источник
Пожалуйста, рассмотрите возможность включения соответствующих разделов вашего server.xml, вывода iptables -S и, в идеале, соответствующего вывода netstat -punta при запущенном tomcat.
Даниэль Видрик
Если вы установили Tomcat с использованием apt-get, я просто хочу отметить, что изменение порта server.xmlобычно недостаточно, поскольку порт 80 является привилегированным портом. Вы проверяли, есть catalina.outли у вас сообщение об ошибке?
Дэвид Левеск
Прежде чем изменить порт в файле server.xml, что выдает команда netstat -na | grep \: 80 ? Затем после того, как вы измените порт в server.xml и перезапустите jetty, что выдаст netstat -na | grep \: 80 ? Это не похоже на проблему с брандмауэром.
мясной флаг
Я запускаю debian wheezy и обнаружил, что мне нужно отредактировать / etc / default / tomcat7 вместо /etc/init.d/tomcat7
Ruut

Ответы:

11

Да, это так. Это как простая в использовании версия iptables. Попробуйте написать, чтобы увидеть правила брандмауэра iptables:

$ sudo iptables -L

Вы можете открыть порт 80, используя:

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

Я могу описать эту строку для вас, если вам это нужно. Просто скажи мне :-)

Adionditsak
источник
Вывод 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 Было бы замечательно описать линию, которая направлена ​​на открытие порта 80. Спасибо в адвенсе.
gesus
Я запускаю вашу команду, и порт 80 открыт, и я могу получить доступ к своему веб-сайту. Затем после перезагрузки порт снова закрывается, мне приходится каждый раз открывать его заново. Есть ли способ открыть его навсегда? Я использую Ubuntu 14.04 LTS на VPS
KoKo
Будучи новым человеком на AWS Server EC2 (Ubuntu), я потратил много времени на многие вещи. Я использовал вашу команду, чтобы открыть настроенный порт, и это сработало. Хотя я уже добавил этот настраиваемый порт в группу безопасности, входящий раздел, но все равно не смог получить доступ. После выполнения вашей команды мой веб-сайт работает на нужном сервере моего приложения в настроенном порту. Действительно полезно.
Хаммад Хасан
6

Это сработало для меня:

Запустите с правами root:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Сью
источник