Configuring IPtables on private network

December 29, 2013 2.6k views
Hi, I have a Wordpress web app on a droplet in nyc2 and a MySQL server in the same DC. Both have private networking enabled and the web app works great with the backend DB server. I know the DB server can't be reached from outside the DC, but I want to make sure that internally only my web app can access the MySQL instance on port 3306 and that I can access the VPS from my local machine. I'm not sure if I have setup the iptables 100% correctly, so I'm looking for confirmation. Below is my current iptables config where xxx is the external IP address of my local machine and yyy is the private network address of the MySQL instance. If someone could cast an eye over that config I'd be very grateful. Many thanks in advance. :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [113:20356] -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -s --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp -s yyy.yyy.yyy.yyy/32 --dport 3306 -j ACCEPT -A INPUT -j DROP COMMIT
4 Answers
Sorry, mistake in the above. yyy is the IP address of the Wordpress web app instance and not the database server.
Looks fine to me.

One thing I would suggest is deleting the rule -A INPUT -j DROP :
iptables -D INPUT -j DROP

And setting INPUT's default policy to DROP instead:
iptables -P INPUT DROP
Thanks Kamal, will do. I've added a few more rules too.

# Generated by iptables-save v1.4.12 on Mon Dec 30 00:33:13 2013
:OUTPUT ACCEPT [29:5272]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -$
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,$
-A INPUT -i lo -j ACCEPT
-A INPUT -s -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s yyy.yyy.yyy.yyy/32 -p tcp -m tcp --dport 3306 -j ACCEPT
Have another answer? Share your knowledge.