# {{ ansible_managed }} *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # allow ping and traceroute -A INPUT -p icmp -j ACCEPT # localhost is fine -A INPUT -i lo -j ACCEPT # Established connections allowed -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # if the blocked_ips is defined - drop them {% if blocked_ips is defined %} {% for ip in blocked_ips %} -A INPUT -s {{ ip }} -j DROP {% endfor %} {% endif %} # allow ssh - always -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 22 -j ACCEPT # if the host/group defines incoming tcp_ports - allow them {% if tcp_ports is defined %} {% for port in tcp_ports %} -A INPUT -p tcp -m tcp --dport {{ port }} -j ACCEPT {% endfor %} {% endif %} # if the host/group defines incoming udp_ports - allow them {% if udp_ports is defined %} {% for port in udp_ports %} -A INPUT -p udp -m udp --dport {{ port }} -j ACCEPT {% endfor %} {% endif %} # if there are custom rules - put them in as-is {% if custom_rules is defined %} {% for rule in custom_rules %} {{ rule }} {% endfor %} {% endif %} # otherwise kick everything out -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT