menyimpan konfigurasi iptables di ubuntu

Menyimpan konfigurasi iptables di ubuntu
Ketika mulai mengenal linux Ubuntu sekitar pertengahan tahun 2006, waktu itu saya masih menggunakan ubuntu v5.04. Tadinya ubuntu ini hanya saya jadikan sebagai SO untuk desktop saja sehingga aplikasi-aplikasi yang saya install hanya seputar office, web server dan pemutar file mp3.
Setelah merasa sukses menginstall ubuntu desktop, mulailah muncul keinginan saya untuk mencoba menjadikan ubuntu desktop sebagai gateway dengan menerapkan aplikasi firewall menggunakan iptables. Beberapa perintah iptables yang biasa saya gunakan di redhat/fedora saya terapkan dalam ubuntu. Ternyata berhasil dan hampir tidak ada masalah. Namun setelah saya mencoba untuk menyimpan konfigurasi iptables menggunakan perintah iptables-save, hasil simpanan file konfigurasi tersebut tidak di load ketika komputer direstart. Artinya konfigurasi iptables yang berjalan setelah kokmputer direstart kembali seperti ketika iptables belum diutak-atik.
Akhirnya saya coba cari alternatif penyimpanan konfigurasi iptables dan menemukan link ini yang intinya iptables script dibawah ini diadopsi dari iptables script yang digunakan dalam gentoo-linux.
#!/bin/sh
#
#This is a 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.
IPTABLES_SAVE=”/etc/default/iptables-rules”
SAVE_RESTORE_OPTIONS=”-c”
SAVE_ON_STOP=”yes”
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() {
echo “Saving iptables state”
/sbin/iptables-save ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_SAVE}
}
start(){
checkrules || return 1
echo “Loading iptables state and starting firewall”
echo -n “Restoring iptables ruleset”
start-stop-daemon –start –quiet –exec /sbin/iptables-restore — ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_SAVE}
}
case “$1? in
save)
save
echo “.”
;;
start)
start
echo “.”
;;
stop)
if [ "${SAVE_ON_STOP}" = "yes" ]; then
save || exit 1
fi
echo -n “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
start-stop-daemon –stop –quiet –pidfile /var/run/iptables.pid –exec /sbin/iptables
echo “.”
;;
restart)
echo -n “Flushing firewall”
for a in `cat /proc/net/ip_tables_names`; do
/sbin/iptables -F -t $a
/sbin/iptables -X -t $a
done;
start
echo “.”
;;
*)
echo “Usage: /etc/init.d/iptables {start|stop|restart|save}” >&2
exit 1
;;
esac
exit 0
Hanya dengan mengcopy script di atas kedalam file “/etc/init.d/iptables”, kemudian tambahkan kedalam boot run level sebelum aplikasi networking lainnya dijalankan dengan perintah:
sudo update-rc.d iptables start 37 S . stop 37 0 .
Cara menggunakannya:
1.    Masukkan aturan-aturan (rules) ke dalam iptables (“sudo iptables -A INPUT dst…”).
2.    Simpan dengan perintah “sudo /etc/init.d/iptables save”.
Catatan:
Jika menjalankan perintah “sudo /etc/init.d/iptables stop”, perintah ini akan menyimpan aturan iptables yang sedang berlaku ke dalam “/etc/default/iptables-rules” kemudian memperbolehkan semua akses (flushes iptables). Sehingga jika perintah “sudo /etc/init.d/iptables stop” dijalankan 2x akan menjadikan file “/etc/default/iptables-rules” menjadi kosong.
Semoga bermanfaat.

0 komentar:

Posting Komentar