#!/bin/bash # Start/stop the diod firewall start(){ /sbin/modprobe ip_tables /sbin/modprobe iptable_filter /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ipt_state /sbin/modprobe ip_conntrack_ftp # Anti-spoofing if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then for flag in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $flag done fi if [ -e /etc/netfilter/policy.netfilter ]; then # Load the saved policy /usr/sbin/iptables-restore < /etc/netfilter/policy.netfilter else # Diod policy ;) /usr/sbin/iptables -t filter -D INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -D OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -D FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /usr/sbin/iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT /usr/sbin/iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT /usr/sbin/iptables -t filter -D INPUT -i lo -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT /usr/sbin/iptables -t filter -D OUTPUT -o lo -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT # INPUT #################################################### /usr/sbin/iptables -t filter -D INPUT -j DROP 1>&2 2>/dev/null /usr/sbin/iptables -t filter -A INPUT -j DROP # OUTPUT #################################################### /usr/sbin/iptables -t filter -D OUTPUT -j ACCEPT 1>&2 2>/dev/null /usr/sbin/iptables -t filter -A OUTPUT -j ACCEPT # We save the policy ######################################## mkdir -p /etc/netfilter 1>&2 2>/dev/null /usr/sbin/iptables-save > /etc/netfilter/policy.netfilter fi } stop(){ # Flush and delete rules for TABLE in filter nat mangle; do iptables -t $TABLE -F 1>&2 2>/dev/null iptables -t $TABLE -X 1>&2 2>/dev/null done for CHAIN in INPUT OUTPUT FORWARD; do iptables -t filter -P $CHAIN ACCEPT 1>&2 2>/dev/null done # Disable anti-spoofing if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then for flag in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 0 > $flag done fi } case $1 in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: rc.firewall {start|stop|restart}" exit 1 ;; esac