--- /dev/null
+# Test VM firewall configuration
+*filter
+:INPUT DROP [0:0]
+:FORWARD DROP [0:0]
+:OUTPUT DROP [0:0]
+
+# Trust local loopback
+-A INPUT -i lo -j ACCEPT
+
+# Drop invalid packets
+-A INPUT -m conntrack --ctstate INVALID -j DROP
+
+# Accept everything on ICMP
+-4 -A INPUT -p icmp -j ACCEPT
+-6 -A INPUT -p ipv6-icmp -j ACCEPT
+
+# Drop DHCP requests but accept answers
+-4 -A INPUT -p udp -m udp --sport 68 --dport 67 -j DROP
+-4 -A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
+
+-A INPUT -p tcp -m tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT
+-A INPUT -p udp -m udp -m conntrack --ctstate ESTABLISHED -j ACCEPT
+
+# Accept only SSH from eth0 (Vagrant network)
+-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
+-A INPUT -i eth0 -m limit --limit 1/sec --limit-burst 1000 -j LOG --log-prefix "[IN eth0 DROP] "
+-A INPUT -i eth0 -j DROP
+
+# Accept SMTP from the internal network
+-4 -A INPUT -i eth1 -s 192.168.33.0/24 -p tcp -m tcp --dport 25 -j ACCEPT
+
+# Accept DNS, NTP
+-A INPUT -p udp -m multiport --dports 53,123 -j ACCEPT
+
+# Log and drop
+-A INPUT -m limit --limit 1/sec --limit-burst 1000 -j LOG --log-prefix "[IN DROP] "
+-A INPUT -j DROP
+
+# Filter output
+-A OUTPUT -o lo -j ACCEPT
+-4 -A OUTPUT -p icmp -j ACCEPT
+-6 -A OUTPUT -p ipv6-icmp -j ACCEPT
+-4 -A OUTPUT -p udp -m udp --dport 68 --sport 67 -j DROP
+-4 -A OUTPUT -p udp -m udp --dport 67 --sport 68 -j ACCEPT
+-A OUTPUT -p tcp -m tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT
+-A OUTPUT -p udp -m udp -m conntrack --ctstate ESTABLISHED -j ACCEPT
+
+# Do not send anything to eth0 but DNS and established SSH connections (Vagrant network)
+-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT
+-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
+-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
+-A OUTPUT -o eth0 -m limit --limit 1/sec --limit-burst 1000 -j LOG --log-prefix "[OUT eth0 DROP] "
+-A OUTPUT -o eth0 -j DROP
+
+# Accept sending dns, http, https, smtp to eth1
+-4 -A OUTPUT -o eth1 -p tcp -m multiport --dports 25,53,80,443 -j ACCEPT
+-4 -A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT
+
+-A OUTPUT -m limit --limit 1/sec --limit-burst 1000 -j LOG --log-prefix "[OUT DROP] "
+-A OUTPUT -j DROP
+COMMIT