Ubuntu AWS'de bağlantı noktası 80'i açma


11

ubuntuAWS örneğinde barındırılan bir makinede tomcat sunucusu çalıştırıyorum . Ben aracılığıyla sunucuya ulaşabilir public_ip:8080ama üzerinde dinleme bağlantı noktasını değiştirmek zaman server.xmlgelen 8080için 80bağlantı uzak ana tarafından reddedilir.

Bağlantı 80noktası numarası etkin AWS firewall.

ufwAracılığıyla kontrol ettim sudo ufw statusama sonuçinactive

ufwaltta yatan duvarı mekanizmasının ön uç?

Nasıl bağlantı noktasını etkinleştirebilirsiniz 80üzerinde firewall?

Şimdiden teşekkürler.

Çıkışı iptables -S:

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

Çıktı 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 \:80Port değiştirmeden önce çıkışı 80:

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

netstat -na |grep \:80Port değiştirildikten sonra çıktı 80:

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN

Bağlantı noktasındaki tarayıcının çıktısı 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)

Bağlantı noktası tanımı parçası server.xml

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

Tomcat'e başlarken Catalina.out'un bir parçası 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 

GÜNCELLEME 2:

Tomcat'i aracılığıyla kurdum, apt-getbu yüzden tomcat'in yeniden paketlenmiş bir versiyonu. Burada tomcat'i root olarak çalıştırmanın sorunu çözeceğini söylüyor ama buradaTomcat should not be run under the root user. yeniden paketlenmiş tomcat örneği ile başa çıkmanın olası bir yolu yok mu?

GÜNCELLEME 3:

Sanırım bu sorumun cevabı


Lütfen server.xml dosyanızın ilgili bölümlerini, iptables -S çıktısını ve ideal olarak tomcat çalışırken netstat -punta'dan ilgili çıktıyı dahil etmeyi düşünün.
Daniel Widrick

Tomcat'i kullanarak yüklediyseniz apt-get, bağlantı server.xmlnoktası 80'in ayrıcalıklı bir bağlantı noktası olduğu için bağlantı noktasını değiştirmenin genellikle yeterli olmadığını belirtmek isterim . Eğer kontrol ettin catalina.outherhangi bir hata iletisi olup olmadığını görmek için?
David Levesque

Server.xml dosyasındaki bağlantı noktasını değiştirmeden önce netstat -na | grep \: 80 çıktısı nedir? Sonra server.xml dosyasındaki bağlantı noktasını değiştirdikten ve iskeleyi yeniden başlattıktan sonra netstat -na | grep \: 80 ? Bu bir güvenlik duvarı sorunu gibi görünmüyor.
meatflag

Debian wheezy kullanıyorum ve /etc/init.d/tomcat7 yerine / etc / default / tomcat7'yi düzenlemem gerektiğini keşfettim
Ruut

Yanıtlar:


11

Evet öyle. Iptables'ın kullanımı kolay bir versiyonu gibidir. İptables güvenlik duvarı kurallarını görmek için yazmaya çalışın:

$ sudo iptables -L

80 numaralı bağlantı noktasını aşağıdakileri kullanarak açabilirsiniz:

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

İhtiyacınız olursa bu satırı sizin için tanımlayabilirim. Söyle bana :-)


çıktısı sudo iptables -Lolan 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 amaçları port Önceden koyulan 80. Teşekkür açmak için bu çizgiyi açıklamak için mükemmel olurdu.
gesus

Komutunu çalıştırıyorum ve bağlantı noktası 80 açık ve web siteme erişebiliyorum. Daha sonra yeniden başlattıktan sonra, bağlantı noktası tekrar kapatılır, her seferinde yeniden açmam gerekir. Kalıcı olarak açmanın bir yolu var mı? Bir VPS üzerinde Ubuntu 14.04 LTS kullanıyorum
KoKo

AWS Server EC2'de (Ubuntu) yeni bir kişi olmak birçok şey için çok zaman harcadı. Özel bir bağlantı noktası açmak için komutunuzu kullandım ve işe yaradı. Bu özelleştirilmiş bağlantı noktasını Güvenlik Grubu'na zaten eklemiş olmama rağmen, gelen bölüm ancak yine de erişemedi. Komutunuzu çalıştırdıktan sonra web sitem, özelleştirilmiş bağlantı noktasındaki uygulamamın gerekli sunucusunda çalışıyor. Gerçekten yardımcı.
Hammad Hassan

6

Bu benim için çalıştı:

Kök olarak çalıştır:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.