Berdasarkan RFC 2828
(I) An internetwork gateway that restricts data communication
traffic to and from one of the connected networks (the one said to
be "inside" the firewall) and thus protects that network's system
resources against threats from the other network (the one that is
said to be "outside" the firewall). (See: guard, security gateway.)
Terjemahannya dari google translate
(I) Gerbang keluar jaringan lokal yang membatasi lalu lintas komunikasi data ke dan dari
salah satu jaringan yang terhubung (yang dikatakan "di dalam" firewall)
dan dengan demikian melindungi sumber daya sistem jaringan tersebut
terhadap ancaman dari jaringan lain (yang dikatakan menjadi "di luar" firewall).
(Lihat: penjaga, gerbang keamanan.)
Firewall diperlukan karena keamanan, diantara pertimbangan adanya firewall adalah:
- Pencurian data pada jaringan internal
- Pengaksesan data oleh orang yang tidak berhak
- Denial of Service
Gambar 1. Ilustrasi Firewall (sumber: https://www.tunnelsup.com/images/firewall1.png)
Firewall adalah suatu mekanisme untuk melindungi keamanan jaringan komputer dengan mengizinkan lalu lintas jaringan yang dianggap aman untuk melaluinya dan mencegah lalu lintas jaringan yang tidak aman. Pengaturan lalu lintas paket tersebut berupa menyaring paket data yang keluar dan masuk di jaringan. Paket data yang ’baik’ diperbolehkan untuk melewati jaringan dan paket yang dianggap ’jahat’ tidak diperbolehkan melewati jaringan. Firewall dapat berupa perangkat lunak atau perangkat keras yang ditanam perangkat lunak untuk memfilter paket data. Umumnya, sebuah firewall diimplementasikan dalam sebuah mesin terdedikasi, yang berjalan pada pintu gerbang (gateway) antara jaringan lokal (suatu subnet) dan jaringan (subnet) lainnya. Firewall umumnya juga digunakan untuk mengontrol akses terhadap siapa saja yang memiliki akses terhadap jaringan pribadi dari pihak luar.
Cara-cara firewall dalam melindungi jaringan komputer internal, antara lain :
- Menolak dan memblokir paket data yang datang berdasarkan sumber dan tujuan yang tidak diinginkan.
- Menolak dan menyaring paket data yang berasal dari jaringan internal ke internet. Misal, ketika ada pengguna jaringan internet akan mengakses situs yang tidak baik.
- Menolak dan menyaring paket data berdasakan konten yang tidak diinginkan. Misal, firewall yang terintegrasi pada suatu antivirus akan menyaring dan mencegah file yang sudah terjangkit virus memasuki jaringan internal.
- Melaporkan semua aktivitas jaringan dan kegiatan firewall (log).
Firewall mempunyai beberapa tipe untuk melindungi jaringan, antara lain :
-
Packet-Filtering Firewall adalah tipe firewall yang memeriksa dan membandingkan alamat sumber dari paket lewat dengan aturan atau kebijakan yang telah terdaftar pada filtering firewall. Pada firewall tipe ini akan diatur apakah paket data tersebut akan diperbolehkan lewat atau menolaknya. Firewall ini bekerja pada network layer OSI. Pada Linux, packet filtering firewall ditanamkan pada kernel (sebagai modul kernel, atau digabungkan ke dalam kernel) dan dapat diatur menggunakan IPTables yang merupakan paket aplikasi built-in pada Linux. Aturan atau kebijakan pemeriksaan paket data berdasarkan informasi yang dapat ditangkap dari packet header, antara lain :
- IP address sumber dan tujuan.
- Nomor port TCP/UDP sumber dan tujuan.
- Tipe ICMP message.
-
Application Filter Firewall Firewall ini bekerja pada application layer OSI sehingga dapat menyaring aplikasi-aplikasi yang dipakai untuk akses ke Internet. Tipe firewall ini umumnya agak mahal harganya karena lebih kompleks.
-
Proxy Firewall Fasilitas proxy server menggunakan perantara (proxy) sebagai jembatan hubungan antara LAN dan WAN/Inernet. Proxy server umumnya berfungsi pada lapisan aplikasi, oleh sebab itu sering juga disebut application firewall. Jika packet filter hanya berfungsi menyaring paket-paket yang diterima tanpa mengubah paket-paket tersebut, proxy server menerima dan mengubah alamat paket dengan memberikan alamat proxy server. Dengan demikian, menyembunyikan alamat pengirim yang sebenarnya. Untuk itu, proxy server umumnya mempergunakan metode yang dinamakan Network Address Translation (NAT), yang berfungsi untuk menyembunyikan IP address pribadi yang dipakai oleh LAN. Selain memeriksa alamat paket, proxy server juga memeriksa isi paket.
-
Stateful Inspection Firewall Firewall dengan metode stateful inspection ini bekerja di antara lapisan data link dan network referensi model OSI. Jika suatu paket data diterima, langkah pertama yang dilakukan oleh stateful inspection ini adalah memeriksa informasi header paket data dengan tabel state untuk melihat apakah sudah ada jalur yang tersedia untuk paket tersebut. Jika jalur sudah tersedia, maka stateful inspection membuat asumsi bahwa paket boleh diterima dan diteruskan ke tujuannya. Jika jalur belum tersedia, maka stateful inspection mencocokkan paket data dengan peraturan keamanan (security policy) yang telah dibuat untuk menentukan apakah paket mendapat izin untuk diteruskan. Stateful inspection terus-menerus mengawasi setiap koneksi yang terjadi dan membuat catatan pada tabel status yang dimilikinya.
Pada Modul kali ini kita akan mempelajari bagaimana Packet-Filtering Firewall menggunakan command $ iptables
. untuk dokumentasi dan cara penggunaannya bisa dilihat pada $ man iptables
.
Iptables adalah suatu tools dalam sistem operasi linux yang berfungsi sebagai alat untuk melakukan penyaringan (filter) terhadap lalu lintas (traffic) data. Secara sederhana, iptables digambarkan sebagai pengatur lalu lintas data. Aturan-aturan lalu lintas pada iptables, berada dalam sebuah tabel, dimana table adalah sekelompok chain dan chain adalah sekelompok rules. Pada high-level iptables, memungkinkan terdapat multiple tables dengan multiple chains. Secara default, iptables berjalan tanpa rules apapun.
Struktur kerja IPTables,
iptables -> Tables -> Chains -> Rules
dapat digambarkan dengan struktur seperti ini.
Macam-macam table pada iptables
Table ini adalah tabel default pada iptables. Jadi, jika kita tidak mendefinisikan table yang kita gunakan pada iptables, maka secara default menggunakan Filter table. Filter Table memiliki built-in chain, yaitu :
-
INPUT chain – Untuk memfilter paket yang menuju jaringan lokal. Contoh syntax:
$ iptables --append INPUT --source 10.151.36.0/24 --jump DROP $ iptables -A INPUT -s 10.151.36.0/24 -j DROP
Penjelasan:
- DROP semua paket masuk (INPUT) yang berasal dari subnet 10.151.36.0/24
-
OUTPUT chain – Untuk memfilter paket yang dari jaringan lokal ke jaringan luar. Contoh syntax:
$ iptables --append OUTPUT --destination 10.151.36.5 --jump DROP $ iptables -A OUTPUT -d 10.151.36.5 -j DROP
Penjelasan:
- DROP semua paket keluar (OUTPUT) yang menuju 10.151.36.5
-
FORWARD chain – Untuk memfilter paket yang hanya akan diteruskan (melewati) firewall. Contoh syntax:
$ iptables --append FORWARD --source 10.151.36.0/24 --jump ACCEPT $ iptables -A FORWARD -s 10.151.36.0/24 -j ACCEPT
Penjelasan:
- ACCEPT semua paket keluar yang melewati firewall yang berasal dari 10.151.36.0/24
NAT Table berfungsi untuk mentranslasikan jaringan lokal yang melewati firewall menuju jaringan luar. NAT Table memiliki built-in chain, yaitu :
-
PREROUTING chain – pada chain PREROUTING, dijalankan DNAT (Destination NAT) yaitu ketika anda mengubah alamat tujuan dari paket pertama dengan kata lain anda merubah ke mana komunikasi terjadi. Destination NAT selalu dilakukan sebelum routing, ketika paket masuk dari jaringan. Port forwarding, load sharing dan transparent proxy semuanya adalah bentuk dari DNAT. Destination NAT dilakukan pada chain PREROUTING, ketika paket masuk, hal ini berarti semua tools di dalam router akan melihat paket akan pergi ke tujuan yang sebenarnya. Hal ini juga berarti bahwa opsi
-i
(incoming interface) bisa digunakan. Destination NAT dispesifikasikan dengan menggunakan-j DNAT
dan opsi--to-destination
menspesifikasikan sebuah alamat IP, range alamat IP dan range dari port (hanya untuk protokol UDP dan TCP) yang sifatnya optional. Sebagai contoh, kita memiliki jaringan LAN internal yang ingin kita amankan. Pada jaringan tersebut terdapat DMZ sebagai HTTP server yang servernya memiliki IP 10.151.73.98. Kita ingin semua HTTP request yang berasal dari jaringan luar (interface eth0) diarahkan ke DMZ tersebut.$ iptables --table nat --append PREROUTING --in-interface eth0 --protocol tcp --dport 80 --jump DNAT --to-destination 10.151.73.98:80 $ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.151.73.98:80
-
POSTROUTING chain – pada chain POSTROUTING dijalankan SNAT (Source NAT), yaitu ketika anda mengubah alamat asal dari paket pertama dengan kata lain anda mengubah dari mana koneksi terjadi. Source NAT selalu dilakukan setelah routing, sebelum paket keluar ke jaringan. Masquerading adalah contoh dari
SNAT
. Untuk melakukan Source NAT anda harus merubah asal dari koneksi. Hal ini dilakukan di chain POSTROUTING, saat sebelum keluar. Hal ini sangat penting, dikarenakan berarti tools lain yang di dalam router itu (routing, packet filtering) akan melihat paket itu tidak berubah. Hal ini juga berarti opsi-o
(outgoing interface) juga bisa digunakan. Source dispesifikasikan dengan menggunakan-j SNAT
, dan juga opsi--to-source
untuk menspesifikasikan sebuah alamat IP, range alamat IP dan port atau range port (hanya untuk protokol UDP dan TCP) yang sifatnya optional. Sebagai contoh, pada modul pengenalan UML kita telah menjalankan IP masquerading dengan syntax berikut:$ iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE $ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Rule diatas berarti, source address dari setiap paket yang keluar (
-o
) melaluieth0
akan diubah menjadi IP darieth0
(MASQUERADE
).
Mangle Table berfungsi untuk melakukan perubahan pada paket data. Perubahan yang dilakukan pada TCP header untuk memodifikasi QOS (Quality of Service) pada paket tersebut. Mangle Table memiliki built-in chain, yaitu :
- PREROUTING chain
- OUTPUT chain
- FORWARD chain
- INPUT chain
- POSTROUTING chain
3 Table utama pada IPTables dapat digambarkan sebagai berikut.
Hal-hal yang perlu diingat untuk memberlakukan rules pada IPTables, yaitu :
- Rules mempunyai kriteria dan target.
- Jika kriteria sudah sesuai, firewall akan mengeksekusi rule pada target atau suatu nilai (parameter) yang disebutkan pada target.
- Jika kriteria tidak sesuai, firewall akan mengeksekusi rule yang selanjutnya.
Tujuan paket yang dapat di definisikan pada target, beberapa target yang sering digunakan adalah :
- ACCEPT – Firewall akan mengizinkan paket data.
- DROP – Firewall akan menolak paket data.
- RETURN – Firewall akan berhenti mengeksekusi rangkaian rules pada chain untuk paket data tersebut dan aturan pada chain tersebut dieksekusi ulang.
- MASQUERADE – Target yang hanya berlaku pada NAT Table. Digunakan untuk mendefinisikan paket diarahkan ke subnet mana. Biasanya hanya digunakan untuk IP dinamis, jika menggunakan IP statis, maka gunakan SNAT target.
- REJECT – Firewall akan menolak paket dan mengirimkan error message.
- REDIRECT – Target yang hanya berlaku pada NAT Table. Firewall akan mengarahkan paket ke device (mesin) yang digunakannya menggunakan Primary IP address (alamat localhost) interface-nya.
Untuk macam-macam target lebih lengkap, dapat dilihat pada dokumentasi extension dari iptables
$ man iptables-extension
Secara umum, untuk memodifikasi aturan yang berlaku pada IPTables dengan menjalankan
$ iptables [-t table] command chain rules
jika tidak disebutkan tablenya maka defaultnya filter
Beberapa command yang sering digunakan pada iptables :
Command and Syntax | Description | Example |
---|---|---|
-A, --append chain rule-specification |
menambahkan rules pada chain | $ iptables -A INPUT -s 10.151.36.0/24 -j DROP |
-C, --check chain rule-specification |
mengecek rule apa saja yang berlaku pada chain | iptables -C INPUT -s 10.151.36.0/24 -j DROP |
-D, --delete chain {rule-specification \ rulenum} |
menghapus rules pada chain | $ iptables -D INPUT -s 10.151.36.0/24 -j DROP |
-I, --insert chain [rulenum] rule-specification |
menyisipkan rules pada urutan tertentu | $ iptables -I OUTPUT 2 -s 10.151.36.0/24 -j DROP |
-R, --replace chain rulenum rule-specification |
mengganti rules pada chain tertentu | $ iptables -R OUTPUT 2 -s 10.151.36.0/24 -j DROP |
-L, --list [chain] |
melihat daftar rules yang berlaku berdasarkan chain | $ iptables -L INPUT |
-S, --list-rules [chain] |
melihat semua rules yang berlaku pada firewall | $ iptables -S INPUT , iptables -n -L -v --line-numbers |
-F, --flush [chain] |
menghilangkan semua rules pada chain tertentu (semua chain jika chain tidak disebutkan) | $ iptables -F INPUT |
Penjelasan :
rule-specification
=[matches...] [target]
match
=-m matchname [per-match-options]
target
=-j targetname [per-target-options]
[]
= syntax tersebut bersifat opsional
Beberapa parameter yang perlu diketahui :
Parameter | Descripton |
---|---|
[!] -p, --protocol protocolename |
mendefinisikan opsi port yang digunakan paket |
[!] -s, --source address |
mendefinisikan opsi alamat asal dari paket |
[!] -d, --destination address |
mendefinisikan opsi alamat tujuan dari paket |
-m, --match matchname |
mendefinisikan kesesuaian rule untuk tujuannya ke mana |
-j, --jump targetname |
mendefinisikan rule akan menggunakan taeget yang mana |
[!] -i, --in-interface name |
mendefinisikan opsi interface yang dilihat masuk paketnya |
[!] -o, --out-interface name |
mendefinisikan opsi interface yang dilihat keluar paketnya |
Penjelasan :
[!]
= bisa dinegasikan
Untuk opsi command maupun parameter lebih lengkap dapat dilihat pada dokumentasi iptables
,
$ man iptables-extension
$ iptables -L | grep policy
$ iptables --policy {ACCEPT | DROP | REJECT}
Contoh :
$ iptables --policy FORWARD ACCEPT
$ iptables -A INPUT -s 10.151.36.100 -j ACCEPT
Penjelasan :
- ACCEPTS semua koneksi yang berasal dari IP 10.10.36.100
$ iptables -A INPUT -s 10.151.36.0/24 -j DROP
Penjelasan :
- BLOK semua koneksi yang berasal dari subnet 10.151.36.0/24
$ iptables --policy OUTPUT DROP
$ iptables -A OUTPUT -d 192.168.36.5 -j ACCEPT
Penjelasan :
- DROP semua koneksi yang keluar
- ALLOW koneksi yang menuju alamat IP 192.168.1.1
$ iptables -A INPUT -p tcp --dport 80 -j DROP
Penjelasan :
- DROP semua paket yang protocolnya tcp dan menuju port 80 (http)
$ sudo /sbin/iptables-save
$ iptables -F
$ iptables -L
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/ch-fw.html https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Reference_Guide/ch-iptables.html http://www.academia.edu/8133772/Pengertian_Iptables_dan_Command_pada_Linux_Debian
- Komputer di subnet MARIMAS tidak diizinkan mengakses server KATSU
- Komputer di subnet FINTO tidak dapat diakses pada pukul 18.00 - 19.00
- Server PIZZA tidak diperbolehkan menerima koneksi SSH
- Semua paket yang menuju subnet TEH SISRI akan diarahkan ke JASJUS