Jumat, 31 Oktober 2008

Firewall di Linux

Banyak orang yang membeli hardware khusus yang berfungsi sebagai firewall atau firewall/router. Namun, Linux sebenarnya sudah dilengkapi dengan tool firewall.

Password, pengaturan akses, dan service, merupakan langkah administratif yang dimaksudkan untuk melindungi sistem dari penggunaan yang tidak diinginkan. Di samping langkah perlindungan tersebut—yang diimplementasikan pada tingkat sistem—kebanyakan system administrator mengambil langkah-langkah tambahan pada tingkat jaringan. Salah satu langkah yang populer adalah firewall.

Konsep Firewall Linux
Firewall merupakan komputer yang dimaksudkan untuk memblok paket yang tidak diinginkan agar tidak masuk atau keluar dari jaringan. Pada gambar, Anda dapat melihat contoh konfigurasi firewall. Pada contoh, semua peket yang masuk dan keluar dari jaringan harus melewati firewall Linux. Berdasarkan sekumpulan aturan firewall, firewall tersebut memblokir paket yang mencurigakan dan tidak diinginkan.

Kapan Kita Menggunakan Firewall?
Kadang–kadang, Anda mungkin tidak mau alamat IP privat mendapatkan semua akses atau sama sekali tidak mendapatkan akses. Anda mungkin ingin memberi akses untuk mem-browsing situs web pada web server Anda, tetapi tidak ada akses lainnya. Atau, Anda mungkin mempunyai policy yang membatasi Internet pegawai hanya untuk e-mail saja. Kedua contoh tersebut merupakan situasi yang cocok untuk penggunaan firewall.

Jenis Firewall
Terlepas dari perbedaan antara hardware dan software firewall, terdapat perbedaan dalam melakukan fungsi firewall yang memisahkan mereka satu dengan yang lain. Pada tabel, Anda dapat melihat tiga jenis firewall yang umum dan bagaimana mereka bekerja.

Masquerading
Alamat IP private tidak dapat di-routing ke Internet, dengan demikian sistem yang menggunakan alamat IP privat tidak dapat menuju Internet. Anda dapat mengatasi masalah ini dengan menaruh IP masquerading server di antara jaringan privat Anda dan Internet (misalnya upstream link ke ISP Anda).

Dengan adanya IP masquerading, pada waktu paket meninggalkan komputer user, ia mempunyai “alamat asal “ alamat IP-nya sendiri. Begitu paket melalui server, ia diubah. Alamat asal paket diganti dengan alamat server, yang dapat di-routing ke Internet. Server juga mencatat alamat asal mana yang harus dihubungi dan tujuannya di Internet. Waktu paket dikirim ke Internet, ia dapat mencapai tujuannya dan mendapat respon.

Kalau Begitu, Apa Bedanya Masquerading dengan NAT?
Karena alamat asal paket diganti dengan alamat IP server, maka respon dari komputer luar dikirim ke server tersebut. Dengan demikian, untuk menyelesaikan transmisi paket, server harus melihat tabel untuk mengetahui milik siapa paket tersebut. Ia kemudian mengganti alamat asal paket dengan alamat komputer privat dan mengirim paket ke komputer tersebut. Akhirnya, perjalanan pulang pergi ke Internet dapat dilakukan dari mesin dengan alamat IP privat. IP masquerading dikenal juga dengan network address translation (NAT).

Tool Firewall di Linux
Linux dilengkapi dengan tool untuk memfilter paket. Kernel sebelum 2.4 menggunakan ipchains untuk memfilter paket dan menggunakan sejumlah aturan yang diterapkan ke paket. Dengan diperkenalkannya kernel 2.4 digunakanlah iptables (disebut juga netfilter), yang sama dengan ipchains tetapi mempunyai ruang lingkup dan kontrol yang lebih luas.

netfilter dan iptables
Kernel Linux mempunyai subsistem jaringan bernama netfilter. Subsistem ini menyediakan paket filtering dan juga NAT dan IP Masquerading. Netfilter juga dapat me-mangle header IP untuk routing dan manajemen koneksi. Netfilter dikontrol melalui iptables.

iptables
Kekuatan dan fleksibilitas netfilter diimplementasikan melalui iptables. Syntax yang dimiliki sama dengan pendahulunya, ipchains; namun iptables menggunakan netfilter untuk meningkatkan koneksi, inspeksi, dan pemrosesan jaringan; sementara ipchains menggunakan sekumpulan aturan yang kompleks untuk memfilter path asal dan tujuan, termasuk koneksi port untuk keduanya. iptables mempunyai kemampuan logging yang lebih maju, tindakan pra dan pasca-routing, network address translation, dan port forwarding.

Perbedaan iptables dan ipchains
Sekilas, ipchains dan iptables tampak sama. Keduanya menggunakan larangan di dalam kernel Linux yang tidak hanya untuk menentukan paket mana yang boleh masuk atau keluar, tetapi juga untuk menentukan apa yang harus dilakukan jika paket sesuai aturan tertentu. Namun, iptables menawarkan cara yang lebih luas dalam memfilter paket, sehingga administrator dapat mempunyai kontrol yang lebih besar tanpa membuat banyak kompleksitas ke dalam seluruh sistem.

Di Mana iptables Disimpan?
Peraturan yang dibuat dengan iptables hanya disimpan dalam RAM. Jika Anda me-restart sistem setelah membuat peraturan iptables, mereka akan hilang. Jadi supaya peraturan tidak hilang pada saat sistem reboot, Anda perlu menyimpan mereka ke file /etc/sysconfig/iptables.

Bagaimana Menyimpan iptables?
Untuk menyimpan iptables, ketik perintah /sbin/service iptables save. Perintah ini membuat iptables init script menjalankan program /sbin/iptables-save dan menuliskan konfigurasi iptables saat itu. File ini hanya boleh dibaca oleh root, jadi peraturan Anda tidak dapat dilihat oleh user biasa.

Lain kali Anda booting, iptables init script akan menjalankan kembali peraturan yang disimpan dalam /etc/sysconfig/iptables dengan menggunakan program /sbin/iptables-restore.

Ujilah dulu peraturan iptables yang baru sebelum menyimpannya ke file /etc/sysconfig/iptables. Anda dapat meng-copy peraturan iptables dari sistem yang lain ke dalam file ini. Dengan demikian, Anda dapat dengan cepat menyebarkan peraturan iptables ke berbagai mesin yang berbeda.

Menjaga Keamanan Firewall

Jika Anda mengandalkan firewall untuk mengontrol akses ke jaringan Internal, maka jagalah firewall Anda seaman mungkin. Beberapa panduan dasar untuk menjaga firewall adalah:

  • Matikan service yang tidak dibutuhkan. Pertimbangkan untuk mematikan sendmail, finger, netstat, systat, bootp, dan FTP.
  • Batasi jumlah orang yang dapat mengakses shell firewall. Jika Anda hanya mempunyai satu atau dua user account, maka penyusup akan sangat sulit menemukan salah satu dari mereka.
  • Jangan gunakan password firewall di tempat lain! Kadang-kadang, orang-orang menggunakan password yang sama pada berbagai komputer. Jangan lakukan itu di sini! Jika tidak, jaringan Anda mungkin dapat runtuh seperti tumpukan kartu.
  • Pertimbangkan keamanan secara fisik. Anda mungkin tidak masalah menaruh komputer di tempat terbuka, tetapi bila berbicara tentang firewall Anda harus memperketat akses fisik ke firewall.

Perbedaan iptables dan ipchains

User yang terbiasa dengan ipchains pasti menyadari beberapa perbedaan mencolok antara ipchains dan iptables:

  • Pada iptables, setiap paket yang difilter hanya diproses menggunakan aturan dari satu rangkaian (chain), bukan dari beberapa rangkaian. Sebagai contoh, paket FORWARD yang masuk ke dalam sistem yang menggunakan ipchains akan melalui rangkaian INPUT, FORWARD, dan OUTPUT agar dapat sampai ke tujuannya. Namun, iptables hanya mengirimkan paket ke INPUT jika mereka ditujukan untuk sistem lokal dan hanya mengirimkan mereka ke OUTPUT jika sistem lokal membuat paket tersebut. Oleh karena itu, Anda harus harus memasang peraturan yang didesain untuk menangkap paket tertentu dalam aturan yang sebenarnya akan melihat paket tersebut.
    Keuntungannya adalah Anda sekarang mempunyai kontrol lebih besar terdapap disposisi setiap paket. Jika Anda ingin memblokir akses ke situs web tertentu, maka sekarang Anda dapat memblokir akses dari client. OUTPUT yang dulu menolak akses tidak akan lagi mencegah akses ke host.
  • DENY telah diganti dengan DROP. Dalam ipchains, paket yang memenuhi kaidah dalam rangkaian dapat diarahkan ke DENY, yang secara halus mengabaikan paket. Dalam iptables, target tersebut harus diganti ke DROP agar mempunyai dampak yang sama.
  • Urutan pada waktu meletakkan option dalam peraturan. Sebelumnya, dengan ipchains, tidaklah masalah bagaimana Anda mengurutkan option peraturan. Perintah iptables sedikit memilih-milih mengenai posisi option. Sebagai contoh, sekarang Anda harus menentukan port asal atau tujuan setelah protokol (ICMP, TCP, atau UDP) yang akan digunakan. Pada waktu memilih interface jaringan yang akan digunakan, Anda hanya boleh menggunakan interface masuk (-i option) dengan INPUT atau FORWARD dan interface keluar (-o option) dengan FORWARD atau OUTPUT. Ini perlu karena OUTPUT tidak lagi digunakan oleh interface masuk, dan INPUT tidak dilihat oleh paket yang bergerak melalui interface keluar.