1.Pengertian
Firewall
Firewall merupakan suatu cara/sistem/mekanisme
yang diterapkan baik terhadap hardware , software ataupun sistem itu sendiri
dengan tujuan untuk melindungi, baik dengan menyaring, membatasi atau bahkan
menolak suatu atau semua hubungan/kegiatan suatu segmen pada jaringan pribadi
dengan jaringan luar yang bukan merupakan ruang lingkupnya. Segmen tersebut
dapat merupakan sebuah workstation, server, router, atau local area network
(LAN) anda.
Ada empat jenis firewall, atau lebih tepatnya
tiga jenis ditambah dengan satu tipe hybrid (campuran). Disini kita tidak akan
membahas setiap jenis secara rinci karena itu membutuhkan pembahasan tersendiri
yang lebih teknis dan umumnya sudah tersedia dalam dokumentasi-dokumentasi
tentang firewall. Keempat jenis tersebut masing-masing adalah:
1.
Packet Filtering: Firewall jenis ini memfilter paket data berdasarkan
alamat dan opsi-opsi yang sudah ditentukan terhadap paket tersebut. Ia bekerja
dalam level IP paket data dan membuat keputusan mengenai tindakan selanjutnya
(diteruskan atau tidak diteruskan) berdasarkan kondisi dari paket tersebut.
Firewall jenis ini terbagi lagi menjadi tiga
subtipe:
·
Static
Filtering: Jenis filter yang diiplementasikan
pada kebanyakan router, dimana
modifikasi terhadap aturan-aturan filter harus dilakukan secara manual.
modifikasi terhadap aturan-aturan filter harus dilakukan secara manual.
·
Dynamic
Filtering: Apabila proses-proses tertentu di
sisi luar jaringan dapat
merubah aturan filer secara dinamis berdasarkan even-even tertentu yang diobservasi oleh router (sebagai contoh, paket FTP dari sisi luar dapat diijinkan apabila seseorang dari sisi dalam me-request sesi FTP).
merubah aturan filer secara dinamis berdasarkan even-even tertentu yang diobservasi oleh router (sebagai contoh, paket FTP dari sisi luar dapat diijinkan apabila seseorang dari sisi dalam me-request sesi FTP).
·
Stateful
Inspection: Dikembangkan berdasarkan teknologi
yang sama dengan
dynamic filtering dengan tambahan fungsi eksaminasi secara bertingkat berdasarkan
muatan data yang terkandung dalam paket IP.
Baik dynamic maupun stateful filtering menggunakan tabel status (state table) dinamis yang akan membuat aturan-aturan filter sesuai dengan even yang tengah berlangsung.
dynamic filtering dengan tambahan fungsi eksaminasi secara bertingkat berdasarkan
muatan data yang terkandung dalam paket IP.
Baik dynamic maupun stateful filtering menggunakan tabel status (state table) dinamis yang akan membuat aturan-aturan filter sesuai dengan even yang tengah berlangsung.
2.
Circuit
Gateways: Firewall jenis ini beroperasi pada
layer (lapisan) transpor pada network,dimana koneksi juga diautorisasi
berdasarkan alamat. Sebagaimana halnya Packet Filtering,Circuit Gateway
(biasanya) tidak dapat memonitor trafik data yang mengalir antara satu network
dengan network lainnya, tetapi ia mencegah koneksi langsung antar network.
3.
Application
Gateways: Firewall tipe ini juga disebut sebagai
firewall berbasis proxy. Ia beroperasi di level aplikasi dan dapat mempelajari
informasi pada level data aplikasi (yang dimaksudkan disini adalah isi [content]
dari paket data karena proxy pada dasarnya tidak beroperasi pada paket data).
Filterisasi dilakukan berdasarkan data aplikasi, seperti perintah-perintah FTP
atau URL yang diakses lewat HTTP. Dapat dikatakan bahwa firewall jenis ini
“memecah model client-server”.
“memecah model client-server”.
4.
Hybrid Firewalls: Firewall jenis ini menggunakan elemen-elemen
dari satu atau lebih tipe
firewall. Hybrid firewall sebenarnya bukan sesuatu yang baru. Firewall komersial yang
pertama, DEC SEAL, adalah firewall berjenis hybrid, dengan menggunakan proxy pada
sebuah bastion hosts (mesin yang dilabeli sebagai “gatekeeper” pada gambar 1) dan packet
filtering pada gateway (“gate”). Sistem hybrid seringkali digunakan untuk menambahkan
layanan baru secara cepat pada sistem firewall yang sudah tersedia. Kita bisa saja
menambahkan sebuah circuit gateway atau packet filtering pada firewall berjenis
application gateway, karena untuk itu hanya diperlukan kode proxy yang baru yang ditulis
untuk setiap service baru yang akan disediakan. Kita juga dapat memberikan autentifikasi
pengguna yang lebih ketat pada Stateful Packet Filer dengan menambahkan proxy untuk
tiap service. Apapun basis teknologi yang digunakan, sebuah firewall pada dasarnya berlaku sebagai sebuahgateway yang terkontrol di antara dua atau lebih network dimana setiap trafik harus melewatinya.Sebuah firewall menjalankan aturan sekuriti dan meninggalkan jejak yang dapat ditelusuri.
firewall. Hybrid firewall sebenarnya bukan sesuatu yang baru. Firewall komersial yang
pertama, DEC SEAL, adalah firewall berjenis hybrid, dengan menggunakan proxy pada
sebuah bastion hosts (mesin yang dilabeli sebagai “gatekeeper” pada gambar 1) dan packet
filtering pada gateway (“gate”). Sistem hybrid seringkali digunakan untuk menambahkan
layanan baru secara cepat pada sistem firewall yang sudah tersedia. Kita bisa saja
menambahkan sebuah circuit gateway atau packet filtering pada firewall berjenis
application gateway, karena untuk itu hanya diperlukan kode proxy yang baru yang ditulis
untuk setiap service baru yang akan disediakan. Kita juga dapat memberikan autentifikasi
pengguna yang lebih ketat pada Stateful Packet Filer dengan menambahkan proxy untuk
tiap service. Apapun basis teknologi yang digunakan, sebuah firewall pada dasarnya berlaku sebagai sebuahgateway yang terkontrol di antara dua atau lebih network dimana setiap trafik harus melewatinya.Sebuah firewall menjalankan aturan sekuriti dan meninggalkan jejak yang dapat ditelusuri.
2. Pengertian
IP Tables
Iptables
merupakan aplikasi yang dibuat oleh proyek the netfilter.org. Sebelum membuat
iptables yang berjalan mulai dari linux kernel 2.4.x sampai sekarang, proyek
tersebut sudah membuat aplikasi ipchains untuk kernel 2.2.x dan aplikasi
ipfwadm untuk kernel 2.0.x. Saat ini, banyak distro-distro besar sudah
memaketkan firewall di dalam distro mereka sehingga memudahkan kita untuk
menginstal iptables ke dalam sistem kita. Pada tutorial kali ini kita akan
menggunakan distro Centos 5.4. Tutorial iptables pada artikel ini hanya
menjelaskan tentang dasar-dasar iptables saja dan aplikasi iptables pada
jaringan lokal saja.IPTables memiliki tiga macam daftar aturan bawaan
dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall
chain) atau sering disebut chain saja. Ketiga chain tersebut adalah
INPUT, OUTPUT dan FORWARD.
·
Perintah-Perintah Iptables
Untuk
melihat apakah di dalam sistem kita sudah terinstal paket-paket iptables,
ketikkan perintah berikut:
# rpm -qa
| grep iptables
Jika
memang belum terinstal, ketikkan perintah berikut:
# yum -y
install iptables*
Agar
iptables dapat berjalan otomatis setelah restart, gunakan perintah:
#
chkconfig iptables on
Untuk
melihat status iptables, gunakan perintah:
# service
iptables status
Untuk
menyalakan iptables, gunakan perintah:
#
/etc/init.d/iptables start
Untuk
mematikan iptables, gunakan perintah:
#
/etc/init.d/iptables stop
Untuk
merestart iptables, gunakan perintah:
#
/etc/init.d/iptables restart
Sebelum
melangkah lebih lanjut, pastikan firewall di sistem kita di enable yaitu dengan
cara ketik setup lalu pilih Firewall configuration. Setelah itu,
pada bagian Security Level beri tanda bintang pada
item Enabled lalu pilih tombol OK.
·
Sintaks Iptables
Secara
umum, sintaks iptables dapat dituliskan seperti berikut:
# iptables [-t table] command [match] [target/jump]
Penjelasan
dari sintaks di atas dapat dijelaskan di bawah ini:
·
1. Table
IPTables memiliki beberapa buah tabel yaitu NAT,
MANGLE, dan FILTER. Penjelasannya adalah:
a. Table Mangle: tabel yang
bertanggung jawab untuk melakukan penghalusan (mangle) paket seperti merubah
quality of service (QOS), TTL, dan MARK di header TCP. Biasanya tabel ini
jarang digunakan di lingkungan SOHO.
b. Table Filter: yaitu tabel
yang bertanggung jawab untuk pemfilteran paket. Tabel ini mempunyai 3 rantai (chain) yaitu:
1. Rantai Forward yaitu
rantai yang memfilter paket-paket yang akan ke server yang dilindungi oleh firewall. Rantai ini digunakan ketika
paket-paket datang dari IP Publik dan bukan dari IP lokal.
2. Rantai
Input: yaitu rantai yang memfilter paket-paket yang ditujukan ke
firewall.
3. Rantai
Output: yaitu rantai yang memfilter paket-paket yang berasal dari firewall.
c. Tabel NAT: yaitu rantai
yang bertanggung jawab untuk melakukan Network Address Translation (NAT).
NAT yaitu mengganti field asal atau alamat tujuan dari sebuah paket. Pada tabel
ini terdapat 2 rantai, yaitu:
1. Rantai Pre-Routing: Merubah
paket-paket NAT dimana alamat tujuan dari paket-paket tersebut terjadi
perubahan. Biasanya dikenal dengan destination NAT atau DNAT.
2. Rantai Post-Routing: Merubah paket-paket NAT dimana alamat sumber dari paket-paket tersebut terjadi perubahan. Biasanya dikenal dengan source NAT atau SNAT.
2. Rantai Post-Routing: Merubah paket-paket NAT dimana alamat sumber dari paket-paket tersebut terjadi perubahan. Biasanya dikenal dengan source NAT atau SNAT.
2.
command
command pada baris perintah iptables yang akan
memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah. Berikut
adalah beberapa command pada iptables:
command
|
Deskripsi
|
-A (–append)
|
Menambah aturan pada akhir rantai
sehingga akan dieksekusi terakhir
|
-D (–delete)
|
Menghapus sebuah aturan pada rantai yang
dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus
atau dengan menyebutkan nomor baris dimana perintah akan dihapus
|
-I (–insert)
|
Memasukkan aturan pada sebuah baris
rantai. Berbeda dengan perintah append, perintah insert akan menempati baris
yang dimaksud dan aturan awal yang menempati baris tersebut akan digeser ke
bawah
|
-L (–list)
|
Menampilkan semua aturan pada sebuah
tabel. Perintah ini akan dikombinasikan dengan opsi -v (verbose), -n
(numeric), -x (exact), dan –line-number
|
-F (–flush)
|
Mengosongkan aturan pada sebuah chain
|
-N (–new-chain)
|
Membuat rantai baru
|
-X (–delete-chain)
|
Menghapus rantai yang disebutkan
|
-E (–rename-chain)
|
Merubah suatu nama rantai
|
-P (–policy)
|
Membuat kebijakan default pada sebuah
rantai
|
-p (–protocol)
|
Mengecek tipe protokol tertentu. Tanda
inverse(!) berarti kecuali. Misalnya protocol ! tcp berarti kecuali tcp
|
-s (–source)
|
Mencocokkan paket berdasarkan alamat IP
asal. Bisa berbentuk alamat tunggal (mis:192.168.0.1) atau alamat network
(mis:192.168.0.0/255.255.255.0 atau 192.168.0.0/24)
|
-d (–destination)
|
Mencocokkan paket berdasarkan alamat
tujuan
|
-i (–in-interface)
|
Mencocokkan paket berdasarkan interface
dimana paket datang dan berlaku pada rantai INPUT, FORWARD, dan PREROUTING
|
-o (–out-interface)
|
Mencocokkan paket berdasarkan interface
dimana paket keluar dan berlaku pada rantai OUTPUT, FORWARD, dan POSTROUTING
|
–sport (–source-port)
|
Mencocokkan paket berdasarkan port
asal(bisa dilihat di /etc/services). Perintah ini bisa digunakan untuk range
port tertentu. Misal range antara port 22 sampai 80 bisa ditulis –sport
22-80. Jika –sport :80 berarti paket dengan port 0-80. Jika –sport 1024:
berarti paket dengan port asal 1024-65535
|
–dport (–destination-port)
|
Mencocokkan paket berdasarkan port
tujuan. Penggunaannya sama dengan –sport
|
–syn
|
Memeriksa apakah flag SYN di set dan ACK
dan FIN tidak di set. Perintah ini sama dengan kita menggunakan match –tcp-flags
SYN,ACK,FIN SYN. Paket dengan perintah tersebut digunakan untuk melakukan
request koneksi TCP yang baru terhadap server
|
-m mac -mac-source
|
Melakukan pencocokan paket berdasarkan
MAC source address
|
-m multiport –source-port
|
Mendefinisikan port atau port range
lebih dari satu
|
-j (–jump)
|
Perlakuan yang diberikan terhadap paket-paket yang
memenuhi kriteria. Setelah perintah ini ada beberapa opsi yaitu:
ACCEPT:akan mengijinkan paket DROP: akan menolak paket REJECT: akan menolak paket. Berbeda dengan DROP, REJECT akan memberitahukan error kesalahan kepada user pengirim sedangkan DROP tidak memberitahukan error kesalahan. Opsi untuk REJECT adalah icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, dan icmp-host-prohibited. Namun untuk menggunakan opsi-opsi tersebut harus diawali dengan –reject-with RETURN: akan membuat paket berhenti melintasi aturan-aturan pada rantai dimana paket tersebut menemui target RETURN MIRROR: fungsi utamanya adalah membalik source address dan destination address. Misalnya PC A menjalankan target RETURN kemudian komputer B melakukan koneksi http ke komputer A, maka yang muncul adalah pada browser adalah website komputer B itu sendiri LOG: digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice,warning, err, crit, alert dan emerg. perintah -j LOG –log-prefix digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut. SNAT Target: Berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel NAT pada rantai POSTROUTING, dan hanya disinilah rantai POSTROUTING. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama DNAT Target: Digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya bekerja untuk tabel NAT pada rantai PREROUTING dan OUTPUT atau rantai buatan yang dipanggil oleh kedua rantai tersebut MASQUARADE Target: Target ini bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option –to-source. Target ini memang ini didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah. Target ini hanya bekerja untuk tabel NAT pada rantai POSTROUTING REDIRECT Target: Digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel NAT pada rantai PREROUTING dan OUTPUT atau pada rantai buatan yang dipanggil dari kedua rantai tersebut. |
Memang banyak sekali dan bisa menjadi
sangat sangat kompleks teknik konfigurasi iptables. Pada kesempatan ini kita
hanya mencoba melakukan konfigurasi firewall / iptables yang sederhana saja.
Membahas prinsip dasar
firewall iptables, mengelola akses internet berdasarkan alamat IP,port aplikasi
dan MAC address. Firewall IPTables packet filtering memiliki tiga aturan
(policy), yaitu:
·
INPUT
Mengatur paket data yang memasuki firewall dari arah intranet maupun internet. kita bisa mengelola komputer mana saja yang bisa mengakses firewall. misal: hanya komputer IP 192.168.1.100 yang bisa SSHke firewall dan yang lain tidak boleh.
Mengatur paket data yang memasuki firewall dari arah intranet maupun internet. kita bisa mengelola komputer mana saja yang bisa mengakses firewall. misal: hanya komputer IP 192.168.1.100 yang bisa SSHke firewall dan yang lain tidak boleh.
·
OUTPUT
Mengatur paket data yang keluar dari firewall ke arah intranet maupun internet. Biasanya output tidak diset,karena bisa membatasi kemampuan firewall itu sendiri.
Mengatur paket data yang keluar dari firewall ke arah intranet maupun internet. Biasanya output tidak diset,karena bisa membatasi kemampuan firewall itu sendiri.
·
FORWARD
Mengatur paket data yang melintasi firewall dari arah internet ke intranet maupun sebaliknya. Policy forward paling banyak dipakai saat ini untuk mengatur koneksi internet berdasarkan port, mac address dan alamat IP Selain aturan (policy) firewall iptables juga mempunyai parameter yang disebut dengan TARGET, yaitu status yang menentukkan koneksi di iptables diizinkan lewat atau tidak.
Mengatur paket data yang melintasi firewall dari arah internet ke intranet maupun sebaliknya. Policy forward paling banyak dipakai saat ini untuk mengatur koneksi internet berdasarkan port, mac address dan alamat IP Selain aturan (policy) firewall iptables juga mempunyai parameter yang disebut dengan TARGET, yaitu status yang menentukkan koneksi di iptables diizinkan lewat atau tidak.
Ø TARGET ada tiga
macam yaitu:
·
ACCEPT
Akses diterima dan diizinkan melewati firewall
Akses diterima dan diizinkan melewati firewall
·
REJECT
Akses ditolak, koneksi dari komputer klien yang melewati firewall langsung terputus, biasanya terdapatpesan “Connection Refused”. Target Reject tidak menghabiskan bandwidth internet karena akses langsung ditolak, hal ini berbeda dengan DROP.
Akses ditolak, koneksi dari komputer klien yang melewati firewall langsung terputus, biasanya terdapatpesan “Connection Refused”. Target Reject tidak menghabiskan bandwidth internet karena akses langsung ditolak, hal ini berbeda dengan DROP.
·
DROP
Akses diterima tetapi paket data langsung dibuang oleh kernel, sehingga pengguna tidak mengetahui kalau koneksinya dibatasi oleh firewall, pengguna melihat seakan – akan server yang dihubungi mengalami permasalahan teknis. Pada koneksi internet yang sibuk dengan trafik tinggi Target Drop sebaiknya jangan digunakan.
Akses diterima tetapi paket data langsung dibuang oleh kernel, sehingga pengguna tidak mengetahui kalau koneksinya dibatasi oleh firewall, pengguna melihat seakan – akan server yang dihubungi mengalami permasalahan teknis. Pada koneksi internet yang sibuk dengan trafik tinggi Target Drop sebaiknya jangan digunakan.
Ø
Berikut ini contoh penggunaan firewall iptables untuk
mengelolak akses internet.
Policy INPUT
IP Firewall = 192.168.1.1
IP Administrator = 192.168.1.100
IP Umum = 192.168.1.200
Policy INPUT
IP Firewall = 192.168.1.1
IP Administrator = 192.168.1.100
IP Umum = 192.168.1.200
- Membatasi port number
iptables -A
INPUT -i eth1 -s 192.168.1.200 -d 192.168.1.1 -p tcp -dport 22-j REJECT
Contoh di atas melarang komputer klien dengan IP 192.168.1.200 mengakses port 22 (ssh) firewall yang memiliki IP 192.168.1.1 Policy FORWARD
Contoh di atas melarang komputer klien dengan IP 192.168.1.200 mengakses port 22 (ssh) firewall yang memiliki IP 192.168.1.1 Policy FORWARD
- Membatasi orang mengakses port aplikasi P2P (Limewire, GnuTella & Bearshare)
iptables -A FORWARD -p tcp -dport 6340:6350 -j REJECT
iptables
-A FORWARD -p -dport 6340:6350 -j REJECT<
-p tcp
(koneksi menggunakan protokol TCP)
-p udp (koneksi menggunakan protokol UDP)
-dport 6340:6350 (melarang akses port 6340 sampai dengan 6350)
-p udp (koneksi menggunakan protokol UDP)
-dport 6340:6350 (melarang akses port 6340 sampai dengan 6350)
-Membatasi
koneksi satu alamat IP
iptables -A FORWARD -s 192.168.1.99 -d 0/0 -j
REJECT<
-d 0/0 berarti ke semua tujuan
- Membatasi koneksi berdasarkan range IP
- Membatasi koneksi berdasarkan range IP
iptables -A FORWARD -m iprange -src-range
192.168.1.100-192.168.1.150 -d 0/0 -j
REJECT
- Membatasi koneksi internet berdasarkan MAC Address
- Membatasi koneksi internet berdasarkan MAC Address
iptables -A FORWARD -m mac -mac-source
00:30:18:AC:14:41 -d 0/0 -j REJECT