Linux memiliki firewall yang sangat kuat di dalamnya, biasanya disebut sebagai iptables, lebih tepatnya iptables / Netfilter. Iptables adalah modul userspace, dengan demikian kita dapat , berinteraksi dengannya pada commandline untuk memasukkan aturan firewall ke tabel standar. Netfilter adalah modul kernel, yang dibangun dalam kernel, yang benar-benar menyaring. Kita akan mempelajari iptables di command line.
Sebelum kita dapat benar-benar bisa menguasai iptables, kita perlu memiliki setidaknya pemahaman dasar dari cara kerjanya. Iptables menggunakan konsep alamat ip, protokol (tcp, udp icmp) dan port. Kita tidak perlu menjadi ahli dalam hal ini untuk memulai, tetapi hal ini membantu untuk memiliki pemahaman umum.
Iptables menempat aturan ke dalam tabel (INPUT, OUTPUT dan FORWARD) yang memeriksa lalu lintas jaringan (paket IP) yang relevan table dan membuat sebuah keputusan mengenai apa yang harus dilakukan pada setiap paket berdasarkan hasil dari aturan-aturan tersebut, yaitu menerima atau menjatuhkan paket. Tindakan-tindakan ini disebut sebagai target, ada dua kemungkinan yang akan ditetapkan DROP untuk menjatuhkan paket atau ACCEPT menerima paket.
chain
Ada 3 chain standar yang digunakan oleh iptables yang kita dapat menambahkan aturan untuk memproses paket IP melewati tabel, yaitu :
INPUT – Semua paket yang ditujukan untuk host komputer.
OUTPUT – Semua paket yang berasal dari host komputer.
FORWARD – Semua paket yang bukan dari atau untuk komputer host, tetapi melalui komputer host. Tabel ini digunakan jika komputer sebagai router.
Sebagian besar, kita akan berurusan dengan tabel INPUT untuk menyaring paket yang memasuki komputer kita.
Aturan ditambahkan dalam daftar untuk setiap tabel. Sebuah paket diperiksa terhadap setiap aturan secara bergiliran, dimulai di bagian atas, dan jika sesuai dengan aturan itu, maka diambil tindakan seperti menerima (ACCEPT) atau jatuh (DROP) paket. Sekali aturan tersebut sesuai, dan tindakan diambil, maka paket akan diproses sesuai dengan hasil dan tidak diproses oleh aturan lebih lanjut dalam tabel. Jika sebuah paket lewat turun melalui semua aturan dalam tabel dan mencapai bagian bawah dicocokkan tanpa aturan apa pun, maka diambil tindakan standar untuk tabel itu. Hal ini disebut sebagai kebijakan default.
Konsep kebijakan standar dalam tabel menimbulkan dua kemungkinan mendasar bahwa kita harus terlebih dahulu mempertimbangkannya sebelum kita memutuskan bagaimana kita akan mengatur firewall kita.
1. Kita dapat menetapkan kebijakan default DROP semua paket dan kemudian tambahkan aturan untuk secara khusus membiarkan (ACCEPT) paket yang dipercaya mungkin dari alamat IP, atau untuk port tertentu pada layanan yang telah kita jalankan seperti bittorrent, server FTP, Web Server, Samba file server dll
atau sebaliknya,
2. Kita dapat menetapkan kebijakan default ACCEPT semua paket dan kemudian tambahkan aturan untuk secara khusus blok (DROP) paket yang mungkin dari alamat IP tertentu, atau untuk port tertentu di mana kita tidak menjalankan servicenya.
Umumnya, pilihan 1 di atas adalah untuk tabel INPUT, digunakan untuk mengontrol apa yang diperbolehkan untuk mengakses komputer kita dan opsi 2 akan digunakan untuk tabel OUTPUT .
Persiapan :
Bekerja dengan iptables di command line membutuhkan hak istimewa root, jadi kita perlu menjadi untuk root untuk hal hal yang akan kita lakukan.
Catatan : Sebelum mulai, kita perlu mereset iptables dan aturan-aturan firewall yang ada
Sayangnya, berbagai distro Linux menggunakan berbagai comands untuk memulai, menghentikan dan menyimpan aturan-aturan firewall, sehingga kita mungkin perlu memeriksa dokumentasi untuk mengetahui cara untuk melakukan ini pada distro Linux kita. Coba ketik iptables –help di command line
# iptables --help
iptables v1.2.9
Usage: iptables -[AD] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
Dan untuk melihat apakah iptables sudah benar benar berjalan di komputer kita, kita dapat menggunakan option –L, untuk meload running iptables
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- barney anywhere MAC 00:50:8D:6D:EF:23
DROP all -- wilma anywhere
ACCEPT all -- bart anywhere MAC 00:50:8D:FD:D6:32
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- ict anywhere state NEW tcp dpt:ssh
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Jika iptables berjalan, kita akan melihat beberapa aturan umum seperti diatas, jika tidak, kita coba mengecek modul iptables dengan lsmod
# lsmod |grep ip
ipt_mac 2113 2
ipt_state 2113 2
ip_conntrack 40949 1 ipt_state
iptable_filter 3777 1
ip_tables 16577 3 ipt_mac,ipt_state,iptable_filter
Baik, kita asumsikan iptables berjalan baik, mari kita mulai dengan aturan yang sangat simple untuk mengeset firewall yaitu mengizinkan semua koneksi keluar tetapi memblok semua koneksi yang tidak diinginkan. Pada command line kta akan mengetikkan perintah berikut :
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -L -v
yang akan memberikan output sebagai berikut :
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Kita sekarang memiliki firewall yang memungkinkan semua koneksi keluar tapi memblokir semua koneksi masuk yang tidak diinginkan dan juga semua paket forwarder. Baik kita akan melihat setiap perintah diatas.
- (iptables –F), Pertama tama kita menggunakan –F (flush), tujuannya untuk membersihkan semua aturan yang ada.
- (iptables –P INPUT DROP). Option –P ini menetapkan kebijakan default, disini kita menerapkan kebijakan default untuk tabel input adalah DROP, yang maksudnya bahwa jika sebuah paket masuk tidak sesuai dengna salah satu dari aturan-aturan berikutnya akan dihapus.
- (iptables –P FORWARD DROP), Demikian pula, default untuk tabel FORWARD adalah DROP, karena kita tidak memfungsikan komputer kita sebagai router.
- (iptables –P OUTPUT ACCEPT), Terakhir untuk kebijakan default yaitu pada tabel OUTPUT yaitu ACCEPT, yaitu membolehkan semua lalu lintas keluar.
- (iptables –A INPUT –i lo –j ACCEPT), sekarang kita menambah beberapa aturan lain. Kita menggunakan –A untuk menambah sebuah aturan ke chain tertentu, INPUT pada contoh ini, kemudian kita menggunakan –i untuk interface, -j (jump), yaitu tindakan yang akan diambil. Jadi aturan ini akan mengizinkan semua paket masuk localhost. Ini umumbnya diperlukan oleh berbagai software aplikasi untuk bisa berkomunikasi dengan adaptor localhost.
- (iptables –A INPUT –m state –state ESTABLISHED,RELATED –j ACCEPT), Ini adalah aturan yang melakukan sebagian besat pekerjaan, dan sekali lagi kita menambahkan (-A) ke chain INPUT. Disini kita menggunakan opsi –m untuk meload sebuah modul (state). Modul stat mampu memeriksa keadaan dari sbuah paket dan menentukan apakah NEW, ESTABLISHE atau RELATED, NEW mengacu kepada paket-paket baru yang masuk koneksi yang tidak diprakarsai oleh host. ESTABLISHED dan RELATED mengacu kepada paket paket masuk yang merupakan bagikan dari koneksi yang telah mapan atau terkait dengan koneksi tersebut.
- (iptables –L –v), Terakhir, kita bisa daptarkan aturan aturan yang baru saja kita tambahkan, dan menampilkannya untuk memeriksa apakan sudah terisi dengan benar.
Hal terkahir yang perlu kita lakukan adalah menyimpan aturan tersebut, sehingga saat kita reboot, secara otomatis aturan tadi akan terload. Sayangnya, perintah untuk melakukan ini, biasanya berbeda untuk distro yang berbeda.
Pada Redhat/Fedora lakukan :
/sbin/service iptables save
Namun, cara termudah bekerja dengan iptables ada memasukkan script nya kedalam sebuah file dan membuatnya menjadi file executable, misalkan kita beri nama firewallku.
#!/bin/bash
# file konfigurasi iptables
# ChoenKill
# Flush semua aturan dari iptables
iptables -F
# Set default untuk chain INPUT, FORWARD dan OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Set access untuk localhost
iptables -A INPUT -i lo -j ACCEPT
# Accept packets established dan related connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Save settings dengan /sbin/service iptables save
# List iptables chains with 'iptables -L -v'
/sbin/service iptables save
iptables -L –v
Tidak ada komentar:
Posting Komentar