Posted by : Adam Nazmul
Jumat, 06 Maret 2015
Mungkin banyak orang khususnya mahasiswa ilmu komputer yang sudah akrab dengan istilah ini. Namun pada saat ini saya coba memberi penjelasan singkat mengenai firewall. Firewall atau dalam arti harafiahnya adalah tembok api merupakan sebuah sistem yang memiliki tugas utama menjaga keamanan dari jaringan komputer dan semua perangkat yang ada di dalamnya.
Firewall adalah sebuah sistem pengaman, jadi firewall bisa berupa apapun baik hardware maupun software. Firewall dapat digunakan untuk memfilter paket-paket dari luar dan dalam jaringan di mana ia berada. Jika pada kondisi normal semua orang dari luar jaringan anda dapat bermain-main ke komputer anda, dengan firewall semua itu dapat diatasi dengan mudah.
Firewall merupakan perangkat jaringan yang berada di dalam kategori perangkat Layer 3 (Network layer) dan Layer 4 (Transport layer) dari protocol 7 OSI layer. Seperti diketahui, layer 3 adalah layer yang mengurus masalah pengalamatan IP, dan layer 4 adalah menangani permasalahan port-port komunikasi (TCP/UDP). Pada kebanyakan firewall, filtering belum bisa dilakukan pada level data link layer atau layer 2 pada 7 OSI layer. Jadi dengan demikian, sistem pengalamatan MAC dan frame-frame data belum bisa difilter. Maka dari itu, kebanyakan firewall pada umumnya melakukan filtering dan pembatasan berdasarkan pada alamat IP dan nomor port komunikasi yang ingin dituju atau diterimanya.
Firewall yang sederhana biasanya tidak memiliki kemampuan melakukan filterin terhadap paket berdasarkan isi dari paket tersebut. Sebagai contoh, firewall tidak memiliki kemampuan melakukan filtering terhadap e-mail bervirus yang Anda download atau terhadap halaman web yang tidak pantas untuk dibuka. Yang bisa dilakukan firewall adalah melakukan blokir terhadap alamat IP dari mail server yang mengirimkan virus atau alamat halaman web yang dilarang untuk dibuka. Dengan kata lain, firewall merupakan sistem pertahanan yang paling depan untuk jaringan Anda.
Tetapi, apakah hanya sampai di situ saja fungsi dari perangkat firewall? Ternyata banyak firewall yang memiliki kelebihan lain selain daripada filtering IP address saja. Dengan kemampuannya membaca dan menganalisis paket-paket data yang masuk pada level IP, maka firewall pada umumnya memiliki kemampuan melakukan translasi IP address. Translasi di sini maksudnya adalah proses mengubah sebuah alamat IP dari sebuah alamat yang dikenal oleh jaringan diluar jaringan pribadi Anda, menjadi alamat yang hanya dapat dikenal dan dicapai dari jaringan lokal saja. Kemampuan ini kemudian menjadi sebuah fasilitas standar dari setiap firewall yang ada di dunia ini. Fasilitas ini sering kita kenal dengan istilah Network Address Translation (NAT).
Gambar 1. Firewall.
Firewall bisa Anda dapatkan dengan berbagai
cara. Jika tidak ingin repot-repot membuat dari nol, Anda harus
mengeluarkan uang yang cukup banyak untuk membeli perangkat keras
firewall yang sudah jadi dan tinggal Anda pasang saja di jaringan.
Tetapi perlu diingat, tidak semua perangkat keras firewall dapat bekerja
hebat dalam melakukan IP filtering. Jadi akan percuma saja uang yang
anda keluarkan jika anda membeli firewall yang tidak andal.
Jika anda mau sedikit repot, namun hasilnya
mungkin akan memuaskan anda, buat saja sendiri perangkat firewall anda.
Yang anda perlukan hanyalah sebuah PC dengan processor dan memory yang
lumayan besar dan sebuah aplikasi firewall yang canggih dan lengkap yang
dapat memenuhi semua kebutuhan Anda.
Aplikasi firewall yang lengkap dan canggih
pada umumnya juga mengharuskan Anda mengeluarkan kocek yang tidak
sedikit. Seperti misalnya Checkpoint yang sudah sangat terkenal dalam
aplikasi firewall, untuk memilikinya anda harus merogoh kocek yang
lumayan banyak pula.
Namun jika anda pecinta produk-produk open
source dan sudah sangat familiar dengan lingkungan open source seperti
misalnya operating system Linux, ada satu aplikasi firewall yang sangat
hebat. Aplikasi ini tidak hanya canggih dan banyak fasilitasnya, namun
aplikasi ini juga tidak akan membuat kantong Anda dirogoh dalam-dalam.
Bahkan Anda bisa mendapatkannya gratis karena aplikasi ini pada umumnya
merupakan bawaan default setiap distro Linux. Aplikasi dan system
firewall di sistem open source tersebut dikenal dengan nama IPTables.
Dengan menggunakan IPTables, Anda dapat
membuat firewall yang cukup canggih dengan program open source yang bisa
dengan mudah Anda dapatkan di Internet. Memang perlu diakui, firewall
dengan menggunakan IPTables cukup sulit bagi pemula baik di bidang
networking maupun pemula di bidang operating system Linux. Namun jika
Anda pelajari lebih lanjut, sebenarnya firewall ini memiliki banyak
sekali fitur dan kelebihan yang luar biasa.
IPTables merupakan sebuah fasilitas tambahan
yang tersedia pada setiap perangkat komputer yang diinstali dengan
sistem operasi Linux dan resmi diluncurkan untuk massal pada LINUX 2.4
kernel pada January 2001 (www.netfilter.org).
Anda harus mengaktifkannya terlebih dahulu fitur ini pada saat
melakukan kompilasi kernel untuk dapat menggunakannya. IPTables
merupakan fasilitas tambahan yang memiliki tugas untuk menjaga keamanan
perangkat komputer anda dalam jaringan. Atau dengan kata lain, IPTables
merupakan sebuah firewall atau program IP filter build-in yang
disediakan oleh kernel Linux untuk tetap menjaga agar perangkat anda
aman dalam berkomunikasi.
Mengapa Linux bersusah payah menyediakan
fasilitas ini untuk Anda? Karena dari dulu Linux memang terkenal sebagai
operating system yang unggul dalam segi keamanannya. Mulai dari kernel
Linux versi 2.0, Linux sudah memberikan fasilitas penjaga keamanan
berupa fasilitas bernama ipfwdm. Kemudian pada kernal 2.2, fasilitas
bernama ipchain diimplementasikan di dalamnya dan menawarkan
perkembangan yang sangat signifikan dalam menjaga keamanan.
Sejak kernel Linux memasuki versi 2.4,
sistem firewall yang baru diterapkan di dalamnya. Semua jenis firewall
open source yang ada seperti ipfwadm dan ipchains dapat berjalan di
atasnya. Tidak ketinggalan juga, IPTables yang jauh lebih baru dan
canggih dibandingkan keduanya juga bisa berjalan di atasnya. Maka itu,
IPTables sangatlah perlu untuk dipelajari untuk Anda yang sedang
mempelajari operating system Linux atau bahkan yang sudah
menggunakannya. Karena jika menguasai IPTables, mengamankan jaringan
Anda atau jaringan pribadi orang lain menjadi lebih hebat.
Fitur yang dimiliki IPTables:
1. Connection Tracking Capability yaitu kemampuan unutk inspeksi paket serta bekerja dengan icmp dan udp sebagaimana koneksi TCP.
2. Menyederhanakan perilaku paket-paket dalam melakukan negosiasi built in chain (input,output, dan forward).
3. Rate-Limited connection dan logging capability. Kita dapat membatasi usaha-usaha koneksi sebagai tindakan preventif serangan Syn flooding denial of services(DOS).
4. Kemampuan untuk memfilter flag-flag dan opsi tcp dan address-address MAC.
1. Connection Tracking Capability yaitu kemampuan unutk inspeksi paket serta bekerja dengan icmp dan udp sebagaimana koneksi TCP.
2. Menyederhanakan perilaku paket-paket dalam melakukan negosiasi built in chain (input,output, dan forward).
3. Rate-Limited connection dan logging capability. Kita dapat membatasi usaha-usaha koneksi sebagai tindakan preventif serangan Syn flooding denial of services(DOS).
4. Kemampuan untuk memfilter flag-flag dan opsi tcp dan address-address MAC.
Iptables mengizinkan user untuk mengontrol sepenuhnya jaringan melalui paket IP dengan system LINUX yang diimplementasikan pada kernel Linux. Sebuah kebijakan atau Policy dapat dibuat dengan iptables sebagai polisi lalulintas jaringan. Sebuah policy pada iptables dibuat berdasarkan sekumpulan peraturan yang diberikan pada kernel untuk mengatur setiap paket yang datang. Pada iptable ada istilah yang disebut dengan Ipchain yang merupakan daftar aturan bawaan dalam Iptables. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD.
Gambar 2.Diagram Perjalanan Paket data pada IPTables.
Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan “jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket”. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT.
Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut :
Perjalanan paket yang diforward ke host yang lain
1. Paket berada pada jaringan fisik.
2. Paket masuk ke interface jaringan.
3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk me- mangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain.
4. Paket masuk ke chain PREROUTING pada tabel NAT. Chain ini fungsi utamanya untuk melakukan DNAT (Destination Network Address Translation).
5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain.
6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi.
7. Paket masuk ke chain POSTROUTING pada tabel NAT. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation).
8. Paket keluar menuju interface jaringan.
9. Paket kembali berada pada jaringan fisik.
Perjalanan paket yang ditujukan bagi host lokal
1. Paket berada dalam jaringan fisik.
2. Paket masuk ke interface jaringan.
3. Paket masuk ke chain PREROUTING pada tabel mangle.
4. Paket masuk ke chain PREROUTING pada tabel NAT.
5. Paket mengalami keputusan routing.
6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan.
7. Paket akan diterima oleh aplikasi lokal.
Perjalanan paket yang berasal dari host lokal
1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan.
2. Paket memasuki chain OUTPUT pada tabel mangle.
3. Paket memasuki chain OUTPUT pada tabel NAT.
4. Paket memasuki chain OUTPUT pada tabel filter.
5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana.
6. Paket masuk ke chain POSTROUTING pada tabel NAT.
7. Paket masuk ke interface jaringan
8. Paket berada pada jaringan fisik.
Instalasi IPTables
Untuk Melakukan instalasi IPTABLES di computer Linux, kita akan memerlukan kernel versi 2.4.x atau diatasnya. Distribusi Linux belakangan ini sudah menggunakan kernel 2.4.x (bahkan 2.6.x) sudah mendukung paket filter untuk firewall. Maka dari itu kita tidak perlu repot melakukan kompilasi kernel agar IPTables bekerja dengan baik di computer linux .
Kernel Sendiri terdiri dari dua macam, modularized kernel dan monolithic kernel. Saat linux pertama kali diinstal, model kernel yang dimilikinya adalah modularized, jadi kita bisa mengelurakan modu-modul yang kita butuhkan tanpa harus melakukan kompilasi kernel.Bila kita tetap ingin melakukan kompilasi kernel untuk mengoptimasi server linux kita maka IPTABLES membutuhkan beberapa opsi dalam kernel yang harus dipilih dan ini dapat anda dapatkan di buku tutorial IPtabales dan internet karena pada jurnal ini tidak saya lampirkan.
Syntax Pada IPTables
- Table
- NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
- MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
- FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT
- Command
- Option
- Generic Matches
- Implicit Matches
- TCP matches
- UDP Matches
Ada dua macam match untuk UDP:
–sport atau –source-port
–dport atau –destination-port
- ICMP Matches
- Explicit Matches
Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.
iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01
b. Multiport Matches
Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang bersamaan.
iptables –A INPUT –p tcp –m multiport –source-port 22,53,80,110
c. Owner Matches
Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. Match ini bekerja dalam chain OUTPUT, akan tetapi penggunaan match ini tidak terlalu luas, sebab ada beberapa proses tidak memiliki owner (??).
iptables –A OUTPUT –m owner –uid-owner 500
Kita juga bisa memfilter berdasarkan group ID dengan sintaks –gid-owner. Salah satu penggunannya adalah bisa mencegah user selain yang dikehendaki untuk mengakses internet misalnya.
d. State Matches
Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah tersambung dan paket-paketnya merupakan bagian dari koneki tersebut. RELATED digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan merupakan bagian dari koneksi yang ada.
iptables –A INPUT –m state –state RELATED,ESTABLISHED
- Target/Jump
iptables –A INPUT –p tcp –j tcp_packets
Beberapa target yang lain biasanya memerlukan parameter tambahan:
- LOG Target
iptables –A FORWARD –p tcp –j LOG –log-level debug
iptables –A INPUT –p tcp –j LOG –log-prefix “INPUT Packets”
- REJECT Target
iptables –A FORWARD –p tcp –dport 22 –j REJECT –reject-with icmp-host-unreachable
Ada beberapa tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmp-host-prohibited.
- SNAT Target
iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to-source 194.236.50.155-194.236.50.160:1024-32000
- DNAT Target
iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 –dport 80 –j DNAT –to-destination 192.168.0.2
- MASQUERADE Target
Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
- REDIRECT Target
Thank’s to :
Muhar Syarif. Fakultas Ilmu Komputer. Teknik Informatika. Universitas Sriwijaya. 2008.