Post Pic

Standalone Firewall di Ubuntu dengan Shorewall

Mengaktifkan firewall di server Ubuntu menggunakan bantuan shorewall. Shorewall adalah command line frontend untuk iptables. Dengan menggunakan shorewall Anda bisa mengelola rules firewall dengan lebih mudah.


Sebelumnya saya sudah pernah memperkenalkan ufw di Ubuntu. Sekarang saya ingin memperkenalkan aplikasi lain untuk mengelola firewall di Ubuntu, yaitu shorewall.

Berbeda dengan ufw yang mengelola firewall langsung menggunakan command line, di shorewall Anda akan menggunakan berkas konfigurasi untuk mengelola firewall.

Peringatan

Sebelum kita berkenalan dengan shorewall, perlu saya sampaikan disini, jika Anda ingin mencoba-coba mengkonfigurasi firewall, pastikan mesin yang Anda gunakan tidak berada di posisi yang jauh (susah Anda jangkau secara fisik). Kesalahan dalam mengkonfigurasi firewall bisa menyebabkan sistem Anda terkunci, dan tidak bisa diremote login dari jauh.

Instalasi Shorewall

Instal shorewall dari repositori ubuntu.

sudo apt-get install shorewall

Sekarang Anda masuk ke folder /etc/shorewall, tempat dimana konfigurasi shorewall akan disimpan.

Konfigurasi default ada di /usr/share/doc/shorewall-common/default-config. Untuk contoh lainnya tersedia di /usr/share/doc/shorewall-common/examples.

Karena tutorial kali ini adalah menginstal firewall di server yang memiliki satu interface maka kita akan menggunakan konfigurasi dari folder examples/one-interface/.

sudo cp /usr/share/doc/shorewall-common/examples/one-interface/* /etc/shorewall/

Mengkonfigurasi Shorewall

/etc/shorewall/interfaces

Periksa nama interface yang aktif.

ifconfig -a

Hasilnya kira-kira seperti di bawah ini:

eth0      Link encap:Ethernet  HWaddr 00:0c:29:43:d8:28
          inet addr:192.168.175.128  Bcast:192.168.175.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe43:d828/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1557 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1012 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:416891 (407.1 KB)  TX bytes:134693 (131.5 KB)
          Interrupt:17 Base address:0x2000 
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Maka konfigurasi di berkas /etc/shorewall/interfaces adalah sebagai berikut:

###############################################################################
#ZONE	INTERFACE	BROADCAST	OPTIONS
net     eth0            detect          dhcp,tcpflags,logmartians,nosmurfs
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Opsi dhcp perlu ditambahkan jika memenuhi kriteria sebagai berikut:

  • IP server di set dari dhcp server
  • interface digunakan oleh dhcp server yang dijalankan di firewall
  • interface menggunakan IP statik, tapi berada di LAN yang sebagian besar menggunakan IP dari dhcp server

Penjelasan untuk opsi lainnya, bisa Anda lihat di dokumentasi shorewall-interfaces.

/etc/shorewall/zones

Untuk zones, kita akan menggunakan konfigurasi seperti di bawah ini (default dari contoh).

###############################################################################
#ZONE	TYPE	OPTIONS			IN			OUT
#					OPTIONS			OPTIONS
fw	firewall
net	ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE

Dimana fw adalah server firewall yang kita konfigurasi sekarang, dan net adalah zona lain diluar firewall.

/etc/shorewall/policy

Untuk mempermudah pengelolaan firewall, kita harus tentukan aturan global (policy). Yang sekarang akan kita tentukan adalah defaultnya memblok semua koneksi dari network ke server, dan membolehkan semua akses dari server ke network.

###############################################################################
#SOURCE		DEST		POLICY		LOG LEVEL	LIMIT:BURST
$FW		net		ACCEPT
net		$FW		DROP		info
net		all		DROP		info
# The FOLLOWING POLICY MUST BE LAST
all		all		REJECT		info
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE

/etc/shorewall/rules

Lihat contoh berikut

#############################################################################################################
#ACTION         SOURCE               DEST               PROTO   DEST    SOURCE          ORIGINAL        RATE            USER/   MARK
#                                                               PORT    PORT(S)         DEST            LIMIT           GROUP
 
# Perbolehkan akses ping dari network
#
Ping/ACCEPT     net                  $FW
 
# Perbolehkan akses ke port SMTP di server
#
SMTP/ACCEPT     net                  $FW
 
# Perbolehkan akses ke port SSH di server
# hanya dari LAN 192.168.175.0/24
#
SSH/ACCEPT      net:192.168.175.0    $FW
 
# Perbolehkan akses ke port SNMP di server
# hanya dari server cacti, ip 192.168.175.2
#
ACCEPT          net:192.168.175.2    $FW        tcp     161
ACCEPT          net:192.168.175.2    $FW        udp     161
 
# dari komputer admin punya akses penuh ke server
# ip komputer admin 192.168.175.13
#
ACCEPT          net:192.168.175.13   $FW
 
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Anda bisa menggunakan macro seperti SSH/ACCEPT atau PING/ACCEPT untuk membuat sebuah rules. Atau Anda bisa membuat rules sendiri dengan menentukan konfigurasi sendiri, seperti yang saya contohkan untuk akses SNMP hanya dari server cacti.

Untuk daftar macro yang bisa Anda gunakan, Anda bisa lihat di /usr/share/shorewall/.

Untuk informasi lengkap seputar cara membuat rules di shorewall, silakan kunjungi manual shorewall-rules.

Mengaktifkan Shorewall

Sunting berkas /etc/default/shorewall. Cari baris berikut:

startup=0

Ganti menjadi

startup=1

Setelah itu aktifkan shorewall.

sudo /etc/init.d/shorewall start

Dan setiap Anda melakukan perubahan di berkas /etc/shorewall/rules, Anda harus melakukan restart shorewall.

sudo shorewall restart

3 Komentar

Junaidy
26 November 2009

Kalo saya ada pertanyaan email ke mana?

27 November 2009

Untuk sementara ini, saya tidak melayani pertanyaan via email.

Jika ada pertanyaan via email, bisa coba kirim ke milist seperti tanya-jawab@linux.or.id. Disana ada banyak anggota yang bisa membantu, kalau lagi sempat saya juga biasa ikut berdiskusi disana.