Scenario / Questions

I’m running a tomcat server on an ubuntu machine hosted in an AWS instance.
I can reach the server via public_ip:8080 but when i change the listening port on server.xml from 8080 to 80 connection is refused by remote host.

Port number 80 is enabled on AWS firewall.

I checked ufw via sudo ufw status but result is inactive

Is ufw front-end of the underlying firewall mechanism?

How can i enable port 80 on firewall?

Thank in advance.

Ouptut of iptables -S:


Output of netstat -punta

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0  *               LISTEN      785/mysqld
tcp        0      0    *               LISTEN      613/sshd
tcp        0      0       ESTABLISHED 5825/sshd: ubuntu [
tcp        0      0      ESTABLISHED 7320/sshd: ubuntu [
tcp        0      0      ESTABLISHED 6901/sshd: ubuntu [
tcp        0    272       ESTABLISHED 7428/sshd: ubuntu [
tcp        0      0       ESTABLISHED 7034/sshd: ubuntu [
tcp        0      0         ESTABLISHED 785/mysqld
tcp6       0      0          :::*                    LISTEN      7275/java
tcp6       0      0 :::8080                 :::*                    LISTEN      7275/java
tcp6       0      0 :::22                   :::*                    LISTEN      613/sshd
tcp6       0      0          ESTABLISHED 7275/java
udp        0      0    *                           538/dhclient3

Output of netstat -na |grep \:80 before changing port to 80 :

tcp6       0      0          :::*                    LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Output of netstat -na |grep \:80 after changing port to 80 :

tcp6       0      0          :::*                    LISTEN

Output of browser on port 80:


The requested URL could not be retrieved

The following error was encountered while trying to retrieve the URL:

Connection to 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)

Port definition part of server.xml

<Connector port="8080" protocol="HTTP/1.1"
           redirectPort="8443" />

part of Catalina.out when starting tomcat on 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"] Permission denied <null>:80
  at org.apache.coyote.AbstractProtocol.init(
  at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(
  at org.apache.catalina.connector.Connector.initInternal(
  at org.apache.catalina.util.LifecycleBase.init(
  at org.apache.catalina.core.StandardService.initInternal(
  at org.apache.catalina.util.LifecycleBase.init(
  at org.apache.catalina.core.StandardServer.initInternal(
  at org.apache.catalina.util.LifecycleBase.init(
  at org.apache.catalina.startup.Catalina.load(
  at org.apache.catalina.startup.Catalina.load(
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(
  at java.lang.reflect.Method.invoke(
  at org.apache.catalina.startup.Bootstrap.load(
  at org.apache.catalina.startup.Bootstrap.main(
Caused by: Permission denied
  at Method)
... 17 more 


I installed tomcat via apt-get so it’s a repackaged version of tomcat. Here it says that running tomcat as root will solve the problem but here it says Tomcat should not be run under the root user. Isn’t there any possible way to handle it with the repackaged tomcat instance?


I guessthis is the answer to my question

Find below all possible solutions or suggestions for the above questions..

Suggestion: 1

Yes it is. It is like an easy-to-use version of iptables. Try to write, to see iptables firewall rules:

$ sudo iptables -L

You can open for port 80 by using:

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

I can describe this line for your, if you need it. Just tell me 🙂

Suggestion: 2

This worked for me:

Run as root:

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