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.
Berbeda dengan ufw yang mengelola firewall langsung menggunakan
command line, di shorewall Anda akan menggunakan berkas konfigurasi
untuk mengelola firewall.
PeringatanSebelum 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 ShorewallInstal 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/interfacesPeriksa 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/zonesUntuk 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/policyUntuk 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/rulesLihat 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 ShorewallSunting 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