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