Tulisan nemu di : http://rotyyu.wordpress.com/2010/10/15/mengelola-firewall-menggunakan-shorewall-di-ubuntu-10-10/

Di GNU+Linux, salah satu metode untuk mengamankan sistem operasi adalah menggunakan packet filter dengan sebuah framework bernama Netfilter yang disuntikkan ke kernel Linux. Konfigurasi Netfilter ini dilakukan menggunakan sebuah perangkat low level bernama iptables, memanfaatkan kolaborasi berbagai filter dengan iptables, seorang sys admin GNU+Linux dapat membuat sistem firewall yang sederhana hingga yang sangat rumit. Shorewall sendiri dikembangkan untuk mempermudah konfigurasi Netfilter karena penggunaan iptables untuk membangun firewall bukanlah sebuah pekerjaan yang mudah (terutama bagi pemula). Bisa dikatakan shorewall merupakan perangkat high level untuk menggantikan iptables. Di Shorewall, kita cukup mendefinisikan aturan-aturan di beberapa berkas konfigurasi Shorewall di /etc/shorewall.

Sebagai contoh kasus, kita akan mencoba mengatur konfigurasi Shorewall untuk keperluan sharing Internet menggunakan satu server gateway yang juga berfungsi sebagai proxy server. Server ini menggunakan satu kartu Ethernet ke luar (Internet) dan satu kartu Ethernet ke dalam (LAN). Skema jaringan ini dapat dilihat pada gambar berikut.

Beberapa konfigurasi yang harus kita atur untuk keperluan berbagi sambungan Internet:

  • interfaces
  • zones
  • policy
  • rules
  • masq
  • shorewall.conf

Sebelumnya pasang dulu paket Shorewall di Ubuntu 10.10 Maverick Meerkat, lalu salin konfigurasi yang kita butuhkan.

sudo apt-get install shorewall

sudo cp /usr/share/doc/shorewall/examples/two-interfaces/{interfaces,zones,polizy,rules,masq} /etc/shorewall/

Ubah juga nilai IP_FORWARDING menjadi On pada berkas/etc/shorewall/shorewall.conf

/etc/shorewall/zones

Di berkas ini kita mendeklarasikan zona untuk jaringan, dalam contoh kasus ini akan ada tiga zona yaitu 1) fw yang merupakan firewall itu sendiri (gateway), 2) loc yang merupakan jaringan lokal (LAN), dan 3) net yang merupakan jaringan luar (Internet). Nama zona ini dapat disesusaikan dengan selera masing-masing.

#ZONE TYPE OPTIONS IN OUT

# OPTIONS OPTIONS

fw firewall

net ipv4

loc ipv4

/etc/shorewall/interfaces

Di berkas ini kita mendefinisikan kartu ethernet mana yang terhubung ke luar (Internet) dan yang terhubung ke dalam (LAN). Contoh berkas konfigurasi milik saya:

#ZONE INTERFACE BROADCAST OPTIONS

net eth3 detect dhcp,tcpflags,nosmurfs,routefilter,logmartians

loc eth4 detect tcpflags,nosmurfs,routefilter,logmartians

Nama zona di berkas ini harus sesuai dengan apa yang terdapat di berkas /etc/shorewall/zones.
/etc/shorewall/policy
Isi berkas ini adalah default policy untuk setiap zona. Berikut cuplikan konfigurasi milik saya:

#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST

fw loc ACCEPT

fw net ACCEPT

loc net ACCEPT

net all DROP info

# THE FOLLOWING POLICY MUST BE LAST

all all REJECT info

Pada konfigarasi ini kita menyatakan bahwa

  • semua koneksi dari zona fw menuju loc selalu diterima (baris 2)
  • semua koneksi dari zona fw ke zona net selalu diterima (baris 3)
  • semua koneksi dari zona loc ke zona net selalu diterima (baris 4)
  • semua koneksi dari zona net ke jaringan lokal (LAN) ditolak (baris 5)
  • semua koneksi apapun selain yang didefinisikan di atas akan ditolak (baris 7)

/etc/shorewall/rules

Berkas ini berisi aturan-aturan tambahan yang lebih spesifik selain aturan yang terdapat pada berkas sebelumnya.

#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK

# PORT PORT(S) DEST LIMIT GROUP

#

# Accept DNS connections from the firewall to the network

#

DNS(ACCEPT) $FW net

#

# Accept SSH connections from the local network for administration

#

SSH(ACCEPT) loc $FW

#

# Allow Ping from the local network

#

Ping(ACCEPT) loc $FW

#

# Drop Ping from the “bad” net zone.. and prevent your log from being flooded..

#

Ping(DROP) net $FW

ACCEPT $FW loc icmp

ACCEPT $FW net icmp

ACCEPT $FW net tcp www

/etc/shorewall/masq

Seperti tergambar dari namanya, kita mengatur masquerading (SNAT) di berkas ini.

#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK

eth3 eth4

Di contoh ini akan dilakukan masquerading dari interface eth4 ke interface eth3 sehingga klien yang terhubung ke eth4 (zona loc) dapat terkoneksi ke Internet.