Malem-malem gini kebetulan lagi iseng belajar firewall, mau sambil sharing aja ah. Saya punya script sederhana Firewall buat router pake Debian 6 Squeeze nih. Topologi jaringannya adalah seperti ini :
internet----{etho + tun0(vpn)}router(eth1)----lokal
Di router itu cuma ada 3 service yang berjalan, yaitu VPN, Proxy, dan SSH. Nah, rule yang saya buat disini adalah :
1. Semua akses dari lokal ke internet diperbolehkan
2. VPN boleh diakses dari luar.
3. Akses SSH dari luar hanya boleh dari mac address tertentu
4. Akses proxy tidak boleh dari luar, hanya bisa dari dalam saja.
Nah, kira-kira rule lengkapnya adalah seperti ini :
# Generated by iptables-save v1.4.8 on Fri Nov 9 19:26:07 2012
*nat
:PREROUTING ACCEPT [660398:44170912]
:POSTROUTING ACCEPT [187:14280]
:OUTPUT ACCEPT [55814:3357369]
#redirect seluruh akses http LAN ke proxy
-A PREROUTING -s 192.168.100.0/22 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
#Nat vpn
-A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
#Nat
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Nov 9 19:26:07 2012
# Generated by iptables-save v1.4.8 on Fri Nov 9 19:26:07 2012
*filter
:INPUT DROP [419:60785]
:FORWARD ACCEPT [18077452:13924732564]
:OUTPUT DROP [473:26093]
#Reject akses squid dari luar
-A INPUT -i eth0 -p tcp -m tcp --dport 3128 -j DROP
#Accept akses yang related,established
-A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# REJECT connections with an invalid state
-A INPUT -m state --state INVALID -j REJECT
#Ping cuma bisa 1/sec
-A INPUT -p icmp -m limit --limit 1/sec -j ACCEPT
# 10 minute lockout if trying to bruteforce baru setelah itu accept ssh
-A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
-A INPUT -m recent --update --seconds 600 --hitcount 4 --rttl --name SSH --rsource -j REJECT
# Akses ssh dari luar cuma bisa dari mac address gue
-A INPUT -i eth0 -p tcp --dport 22 -m mac --mac-source 7s:fg:92:ad:d8:c5 -j ACCEPT
-A INPUT -i tun0 -p tcp --dport 22 -m mac --mac-source 7s:fg:92:ad:d8:c5 -j ACCEPT
#Akses ssh dari dalem lokal bisa semua
-A INPUT -i eth1 -s 192.168.100.0/22 -p tcp --dport 22 -j ACCEPT
#Accept loopback
-A INPUT -i lo -j ACCEPT
#Accept Openvpn
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
#Accept HTTPS
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#Perbolehkan semua akses dari lan keluar
-A OUTPUT -s 192.168.100.0/22 -o eth0 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Fri Nov 9 19:26:07 2012
Atau bisa unduh filenya langsung disini
Kira-kira baru segitulah script firewall untuk router debian saya. Masih banyak kekurangan disana-sini. Tapi semoga tetap dapat menambah referensi bagi kalian yang membacanya. Atau ada yang bisa menambahkan? Monggo silahkan komentar dibawah kalau memang ada yang ingin mengoreksi atau ingin menambah sesuatu pada script tersebut :D
Semoga bermanfaat :)
No comments:
Post a Comment