3. Buat file konfigurasi firewall-nya.
Keluarga *NIX memiliki sebuah program yang mampu melakukan packet filtering dengan sangat baik dan cocok untuk membangun sebuah personal firewall, ialah iptables. Informasi lengkap tentang iptables dapat Anda temukan di netfilter.org.
Pertama, tentukan di mana Anda akan menyimpan file tersebut. Dalam contoh ini kita akan menyimpannya di etc/firewallku.bash.
sudo gedit /etc/firewallku.bash
Agar file ini mudah diubah nantinya, kita akan memakai variabel untuk beberapa hal.
#! /bin/sh
# SET VARIABLES
INTERNET_IP="192.168.1.2"
INTERNAL_IP="192.168.0.1"
INTERNAL_NETWORK="192.168.0.0/24"
INTERNET_IFACE="eth1"
INTERNAL_IFACE="eth0"
SQUID_PORT="8888"Berikutnya, cegah IP spoofing dan tolak icmp
# No spoofing !!!
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# No icmp
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsKemudian, load semua modul yang dibutuhkan
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
modprobe iptable_filter
modprobe iptable_natFlush dan hapus semua chain iptables.
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -XSet default behaviour, yakni DROP ALL untuk keamanan.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROPBuat chain baru untuk firewall kita.
iptables -N FIREWALL
iptables -N TRUSTED
iptables -N FIRE_FWDBuat log untuk packet yang di-DROP.
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : 'Di sinilah DROP benar-benar dilakukan.
iptables -A LOG_DROP -j DROPIzinkan ESTABLISHED dan RELATED connections.
iptables -A FIREWALL -i $INTERNET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPTIzinkan self-communication.
iptables -A FIREWALL -i lo -j ACCEPT
iptables -A FIREWALL -o lo -j ACCEPTSemua packet akan disaring oleh TRUSTED chain.
iptables -A FIREWALL -j TRUSTEDLOG, kemudian DROP semua packet lainnya.
iptables -A FIREWALL -j LOG_DROPKirim semua packet melalui FIREWALL (dan kemudian ke TRUSTED).
iptables -A INPUT -j FIREWALL
iptables -A OUTPUT -j FIREWALLSampai di sini, semua packet kecuali yang berstatus RELATED dan ESTABLISHED akan di DROP. Untuk mengizinkan paket-paket tertentu, kita perlu melakukannya satu-persatu.
## ALLOWED LIST ##
# Allow dns
iptables -A TRUSTED -o $INTERNET_IFACE -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A TRUSTED -o $INTERNET_IFACE -p udp -m udp --dport 53 -j ACCEPT
# Allow http
iptables -A TRUSTED -o $INTERNET_IFACE -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j ACCEPT
# Allow https
iptables -A TRUSTED -o $INTERNET_IFACE -p udp -m udp --dport 443 -j ACCEPT
iptables -A TRUSTED -o $INTERNET_IFACE -p tcp -m tcp --dport 443 -j ACCEPT
# allow SQUID
# allow INPUT FROM LAN to SQUID
iptables -A TRUSTED -i $INTERNAL_IFACE -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport $SQUID_PORT -j ACCEPT
iptables -A TRUSTED -o $INTERNAL_IFACE -m state --state ESTABLISHED,RELATED -p tcp -m tcp --sport $SQUID_PORT -j ACCEPT
Kode di atas adalah konfigurasi minimal. Anda mungkin perlu membuka port untuk aplikasi lain seperti SSH dan Messenger. Daftar port terdapat di http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers. Anda dapat juga mencarinya di Google dengan keyword 'nama_aplikasi iptables'.
Berikutnya merupakan bagian terpenting yang memastikan Internet Connection Sharing Anda berjalan dengan baik.
Prerouting semua web traffic (yakni port 80) ke squid server.
iptables -t nat -A PREROUTING -i $INTERNAL_IFACE -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORTICS untuk semua selain web traffic. FIRE_FWD adalah chain filter khusus untuk FORWARD chain.
iptables -A FORWARD -i $INTERNAL_IFACE -o $INTERNET_IFACE -s $INTERNAL_NETWORK -m state --state NEW -j FIRE_FWD
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADEFirewall untuk ICS sebaiknya berbeda dengan firewall untuk gateway.
#izinkan Yahoo Messenger
iptables -A FIRE_FWD -p tcp -m tcp --dport 5050 -j ACCEPT
#smtp
iptables -A FIRE_FWD -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A FIRE_FWD -p tcp -m tcp --dport 465 -j ACCEPT
#pop3
iptables -A FIRE_FWD -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A FIRE_FWD -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A FIRE_FWD -p tcp -m udp --dport 110 -j ACCEPT
iptables -A FIRE_FWD -p tcp -m udp --dport 995 -j ACCEPT
#ftp
iptables -A FIRE_FWD -p tcp -m tcp --dport 21 -j ACCEPT
DROP packet lainnya yang berada di FORWARD chain.
iptables -A FIRE_FWD -j LOG --log-prefix '[FWD_DROP]: '
iptables -A FIRE_FWD -j DROP,,bersambung,,
references:
Great thanks to frodon at ubuntuforums.org: http://ubuntuforums.org/showthread.php?t=668148


No comments:
Post a Comment