{% if proto == "ipv4" %} *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] {% for chain in nat %} {{ chain.compile|safe }} {% endfor %} COMMIT {% endif %} *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] # initialize logging -N LOG_DROP # windows port scan are silently dropped -A LOG_DROP -p tcp --dport 445 -j DROP -A LOG_DROP -p udp --dport 137 -j DROP -A LOG_DROP -j LOG --log-level 7 --log-prefix "[ipt][drop]" -A LOG_DROP -j DROP -N LOG_ACC -A LOG_ACC -j LOG --log-level 7 --log-prefix "[ipt][isok]" -A LOG_ACC -j ACCEPT # initialize FORWARD chain {% if proto == "ipv4" %} -A FORWARD -m set --match-set blacklist src,dst -j DROP {% endif %} -A FORWARD -m state --state INVALID -g LOG_DROP -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT {% if proto == "ipv4" %} -A FORWARD -p icmp --icmp-type echo-request -g LOG_ACC {% else %} -A FORWARD -p icmpv6 -g LOG_ACC {% endif %} # initialize INPUT chain {% if proto == "ipv4" %} -A INPUT -m set --match-set blacklist src -j DROP {% endif %} -A INPUT -m state --state INVALID -g LOG_DROP -A INPUT -i lo -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT {% if proto == "ipv4" %} -A INPUT -p icmp --icmp-type echo-request -g LOG_ACC {% else %} -A INPUT -p icmpv6 -g LOG_ACC {% endif %} # initialize OUTPUT chain -A OUTPUT -m state --state INVALID -g LOG_DROP -A OUTPUT -o lo -j ACCEPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT {% for chain in filter %} {% if chain.name not in chain.builtin_chains %}-N {{ chain.name }}{% endif %} {% if proto == "ipv4" %} {{ chain.compile|safe }} {% else %} {{ chain.compile_v6|safe }} {% endif %} {% endfor %} # close all chains -A FORWARD -g LOG_DROP -A INPUT -g LOG_DROP -A OUTPUT -g LOG_DROP COMMIT