відкриття порту 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:

Я думаю, це відповідь на моє запитання


Будь ласка, врахуйте включення відповідних розділів вашого 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 ? Це, здається, не є проблемою брандмауера.
meatflag

Я запускаю 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

Я можу описати цей рядок для вашого, якщо він вам потрібен. Просто скажіть мені :-)


Вихід з sudo iptables -Lнього 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

Це працювало для мене:

Запустити як корінь:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.