Here is the script I want to use to setup secure firewall for openvpn tunnel in which all my internet traffic goes through the vpn. I have a couple of questions below:
#!/bin/sh
#
# iptables example configuration script
#
# Flush all current rules from iptables
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
#
# Allow SSH connections on tcp port 22
#
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# Set access for localhost
#
iptables -A INPUT -i lo -j ACCEPT
#
# Accept packets belonging to established and related connections
#
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
#Accept connections on 1194 for vpn access from clients
#
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
#
#Apply forwarding for OpenVPN Tunneling
#
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to-source 100.200.255.256 #Use OpenVPN server's real external IP here
#
#Enable forwarding
#
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Some generally optional rules.
#
# Accept traffic with the ACK flag set
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
# Accept responses to DNS queries
iptables -A INPUT -p udp -m udp --dport 1024:65535 --sport 53 -j ACCEPT
# Accept responses to our pings
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
# Accept notifications of unreachable hosts
iptables -A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT
# Accept notifications to reduce sending speed
iptables -A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT
# Accept notifications of lost packets
iptables -A INPUT -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT
# Accept notifications of protocol problems
iptables -A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT
# Respond to pings
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
# Accept traceroutes
iptables -A INPUT -p udp -m udp --dport 33434:33523 -j ACCEPT
#
# List rules
#
iptables -L -v
My network interfaces:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1051 (1.0 KiB) TX bytes:1051 (1.0 KiB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:95818 errors:0 dropped:0 overruns:0 frame:0
TX packets:60245 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:131291328 (125.2 MiB) TX bytes:7181804 (6.8 MiB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:89.148.244.198 P-t-P:89.148.244.198 Bcast:89.148.244.198 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
venet0:1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:89.148.244.199 P-t-P:89.148.244.199 Bcast:89.148.244.199 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
So question one: Can anyone spot any obvious flaws in this firewall setup? I don't want to lock myself out of the centos vps as it is unmanaged service and will cost money if I ask them to fix it for me. However i want it to be secure as possible. As long as I can still connect via ssh then I guess it won't be a disaster.
Question two: as you might have noticed the vps has 2 public IPs available for use. I have found the ip assigned to venet0:1 to have lower latency from my current location for whatever reason. Therefore I am not sure about this line:
iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to-source 89.148.244.199
As the vps is running in virtuozzo I believe I have to use SNAT to forward traffic from the tun adapter to the adapter connected to internet. However since I want openvpn to use the ip 89.148.244.199 should I change this line to:
iptables -t nat -A POSTROUTING -o **venet0:1** -j SNAT --to-source 89.148.244.199