From LedHed's Wiki
Jump to: navigation, search
Line 16: Line 16:
  
 
For more info on adding IPTable Rules see [IPTable Basics]<br>
 
For more info on adding IPTable Rules see [IPTable Basics]<br>
 +
  
 
== Saving the Rulesets ==
 
== Saving the Rulesets ==
 
  iptables-save > /etc/default/iptables-rules
 
  iptables-save > /etc/default/iptables-rules
 +
This takes your currently applied rulesets and exports them to a file which the init script will use later.
 +
 +
 +
== The Script ==
  
 +
#! /bin/sh
 +
 +
#This is an Ubuntu adapted iptables script from gentoo
 +
#(http://www.gentoo.org) which was originally distributed
 +
#under the terms of the GNU General Public License v2
 +
#and was Copyrighted 1999-2004 by the Gentoo Foundation
 +
#
 +
#This adapted version was intended for and ad-hoc personal
 +
#situation and as such no warranty is provided.
 +
 +
. /lib/lsb/init-functions
 +
 +
 +
IPTABLES_SAVE="/etc/default/iptables-rules"
 +
SAVE_RESTORE_OPTIONS="-c"
 +
 +
 +
checkrules() {
 +
if [ ! -f ${IPTABLES_SAVE} ]
 +
then
 +
echo "Not starting iptables. First create some rules then run"
 +
echo "\"/etc/init.d/iptables save\""
 +
return 1
 +
fi
 +
}
 +
 +
save() {
 +
/sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}
 +
return $?
 +
}
 +
 +
start(){
 +
checkrules || return 1
 +
/sbin/iptables-restore ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_SAVE}
 +
return $?
 +
}
 +
 +
 +
case "$1" in
 +
save)
 +
echo -n "Saving iptables state..."
 +
save
 +
if [ $? -eq 0 ] ; then
 +
echo " ok"
 +
else
 +
echo " error !"
 +
fi
 +
;;
 +
 +
start)
 +
log_begin_msg "Loading iptables state and starting firewall..."
 +
start
 +
log_end_msg $?
 +
;;
 +
stop)
 +
log_begin_msg "Stopping firewall..."
 +
for a in `cat /proc/net/ip_tables_names`; do
 +
/sbin/iptables -F -t $a
 +
/sbin/iptables -X -t $a
 +
 +
if [ $a == nat ]; then
 +
/sbin/iptables -t nat -P PREROUTING ACCEPT
 +
/sbin/iptables -t nat -P POSTROUTING ACCEPT
 +
/sbin/iptables -t nat -P OUTPUT ACCEPT
 +
elif [ $a == mangle ]; then
 +
/sbin/iptables -t mangle -P PREROUTING ACCEPT
 +
/sbin/iptables -t mangle -P INPUT ACCEPT
 +
/sbin/iptables -t mangle -P FORWARD ACCEPT
 +
/sbin/iptables -t mangle -P OUTPUT ACCEPT
 +
/sbin/iptables -t mangle -P POSTROUTING ACCEPT
 +
elif [ $a == filter ]; then
 +
/sbin/iptables -t filter -P INPUT ACCEPT
 +
/sbin/iptables -t filter -P FORWARD ACCEPT
 +
/sbin/iptables -t filter -P OUTPUT ACCEPT
 +
fi
 +
done
 +
log_end_msg 0
 +
;;
 +
 +
restart)
 +
log_begin_msg "Restarting firewall..."
 +
for a in `cat /proc/net/ip_tables_names`; do
 +
/sbin/iptables -F -t $a
 +
/sbin/iptables -X -t $a
 +
done;
 +
start
 +
log_end_msg $?
 +
;;
 +
 +
*)
 +
echo "Usage: /etc/init.d/iptables {start|stop|restart|save}" >&2
 +
exit 1
 +
    ;;
 +
esac
 +
 +
exit 0
  
  

Revision as of 08:25, 29 December 2007

Reference: http://ubuntuforums.org/showthread.php?t=57111


By default Ubuntu & Debian don't come with an IPTables init script (Bitch Moan ....)

There are many ways to load your IPTables rulesets.
This is one approach.

Overview

Add rules to your iptables via the command line.
Save the rulesets to a file for later use (To survive a reboot).
Launch an init script which loads the previously saved rulesets at given run-levels.


Adding Rules

For more info on adding IPTable Rules see [IPTable Basics]


Saving the Rulesets

iptables-save > /etc/default/iptables-rules

This takes your currently applied rulesets and exports them to a file which the init script will use later.


The Script

#! /bin/sh

#This is an Ubuntu adapted iptables script from gentoo
#(http://www.gentoo.org) which was originally distributed
#under the terms of the GNU General Public License v2
#and was Copyrighted 1999-2004 by the Gentoo Foundation
#
#This adapted version was intended for and ad-hoc personal
#situation and as such no warranty is provided.

. /lib/lsb/init-functions


IPTABLES_SAVE="/etc/default/iptables-rules"
SAVE_RESTORE_OPTIONS="-c"


checkrules() {
	if [ ! -f ${IPTABLES_SAVE} ]
	then
		echo "Not starting iptables. First create some rules then run"
		echo "\"/etc/init.d/iptables save\""
		return 1
	fi
}

save() {
	/sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}
	return $?
}

start(){
	checkrules || return 1
	/sbin/iptables-restore ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_SAVE}
	return $?
}


case "$1" in
	save)
		echo -n "Saving iptables state..."
		save
		if [ $? -eq 0 ] ; then
			echo " ok"
		else
			echo " error !"
		fi
	;;

	start)
		log_begin_msg "Loading iptables state and starting firewall..."
		start
		log_end_msg $?
	;;
	stop)
		log_begin_msg "Stopping firewall..."
		for a in `cat /proc/net/ip_tables_names`; do
			/sbin/iptables -F -t $a
			/sbin/iptables -X -t $a

			if [ $a == nat ]; then
				/sbin/iptables -t nat -P PREROUTING ACCEPT
				/sbin/iptables -t nat -P POSTROUTING ACCEPT
				/sbin/iptables -t nat -P OUTPUT ACCEPT
			elif [ $a == mangle ]; then
				/sbin/iptables -t mangle -P PREROUTING ACCEPT
				/sbin/iptables -t mangle -P INPUT ACCEPT
				/sbin/iptables -t mangle -P FORWARD ACCEPT
				/sbin/iptables -t mangle -P OUTPUT ACCEPT
				/sbin/iptables -t mangle -P POSTROUTING ACCEPT
			elif [ $a == filter ]; then
				/sbin/iptables -t filter -P INPUT ACCEPT
				/sbin/iptables -t filter -P FORWARD ACCEPT
				/sbin/iptables -t filter -P OUTPUT ACCEPT
			fi
		done
		log_end_msg 0
	;;

	restart)
		log_begin_msg "Restarting firewall..."
		for a in `cat /proc/net/ip_tables_names`; do
			/sbin/iptables -F -t $a
			/sbin/iptables -X -t $a
		done;
		start
		log_end_msg $?
	;;

	*)
		echo "Usage: /etc/init.d/iptables {start|stop|restart|save}" >&2
		exit 1
    	;;
esac

exit 0



More to Come