Pages

Wednesday, November 7, 2012

Firewall Menggunakan Iptables

Iptables adalah modul di Linux yang memberikan dukungan langsung terhadap kernel Linux, untuk keamanan sistem serta beberapa keperluan jaringan lainnya. Iptables dapat digunakan untuk melakukan seleksi terhadap paket-paket yang datang baik input, output maupun forward berdasarkan IP address, identitas jaringan, nomor port, source (asal), destination (tujuan), protokol yang digunakan bahkan berdasarkan tipe koneksi terhadap setiap paket (data) yang diinginkan.


Iptables dapat digunakan untuk mendefinisikan sekumpulan aturan keamanan berbasis port untuk mengamankan host-host tertentu. Iptables juga dapat dimanfaatkan untuk membangun sebuah router atau gateway, tentunya hanya untuk sistem operasi Linux.


Konfigurasi Iptables paling sederhana setidaknya menangani 3 kumpulan aturan yang disebut chain. Tiga kumpulan aturan tersebut adalah :





  1. INPUT

    Chain input mengidentifikasikan paket yang menuju mesin kita. Paket dapat datang dari beragam sumber seperti jaringan lokal, jaringan asing, koneksi ppp, atau bahkan device loopback lokal.




  2. OUTPUT

    Chain output mengidentifikasikan paket yang meninggalkan mesin kita. Paket dapat pergi dengan beragam cara melalui interface yang meghubungkan mesin kita dengan berbagai jaringan.




  3. FORWARD

    Chain forward mengidentifikasikan paket yang diterima, tetapi bukan final untuk mesin kita. Paket hanya dirutekan untuk melintasi mesin kita.


    Catatan : Setiap paket yang dilepaskan melalui chain forward akan melintasi pula chain input dan output.




Paket-paket yang masuk diperiksa, apakah rusak, salah informasi atau tidak, kemudian diberikan ke chain input. Tergantung pada informasi yang terdapat di dalam header paket dan kebijakan dalam ruselet, keputusan yang diambil untuk suatu paket dapat berupa :





  • ACCEPT


Menerima paket dan diproses lebih lanjut oleh kernel.





  • DROP

    Menolak paket tanpa pemberitahuan sama sekali.




  • REJECT

    Mengembalikan paket ke asalnya dengan pesan kesalahan ICMP.




  • LOG

    Melakukan log (pencatatan) terhadap paket yang bersesuaian.




  • RETURN

    Untuk chain
    user-defined akan dikembalikan ke chain yang memanggil, sedangkan untuk chain input, output, dan forward akan dijalankan kebijakan default.




  • Mengirim ke chain user-defined


Keputusan kebijakan di atas dibuat oleh pernyataan jump yang terdapat di dalam ruselet. Keputusan-keputusan yang serupa dibuat dalam chain forward dan output.





Iptables juga memberikan fasilitas pembuatan proxy transparan dan IP masquerade dengan menggunakan skema NAT (Network Address Translation).


    Berikut adalah deskripsi masing-masing stage :





  • Checksum

    Memeriksa untuk memastikan paket yang diterima tidak rusak (corrupt). Jika paket corrupt maka langsung ditolak.




  • Sanity

    Paket-paket yang malformed akan di drop.




  • Input Chain

    Chain firewall pertama yang menguji paket-paket yang masuk. Jika paket tidak di drop atau di reject oleh rule pada chain input maka paket diteruskan.




  • Demasquerade

    Jika paket adalah pesan balasan untuk paket masquerade sebelumnya, maka paket disebut demasquerade packet dan langsung melompat ke chain output. Jika tidak menggunakan IP masquerading, kita dapat menghapusnya dari diagram.




  • Routing Decision

    Bagian tujuan suatu paket diuji untuk menentukan apakah paket akan menuju Local Process atau ke chain forward.




  • Local Process

    Suatu proses yang berjalan pada mesin firewall. Proses tersebut dapat menerima dan mengirim suatu paket ke chain output.




  • Lo Interface

    Suatu paket dikirim dari suatu proses lokal ke proses lokal lain melalui sistem Interface Loopback (Lo).




  • Forward Chain

    Paket-paket yang tidak di masquerade yang dialamatkan ke mesin lain diarahkan ke rule-rule di dalam chain ini.




  • Output Chain

    Paket-paket ke jaringan eksternal diarahkan ke rule-rule di dalam chain ini.




Efek Samping Filtering


Ketika sebuah paket memenuhi sebuah rule, hal-hal berikut dapat terjadi :





  • Hitungan byte untuk rule ditingkatkan oleh ukuran paket (header dan lainnya).


  • Hitungan paket untuk rule meningkat.


  • Jika rule memintanya, paket dapat di-log (dicatat).


  • Jika rule memintanya, file Type of Service paket diubah.


  • Jika rule memintanya, paket akan ditandai.


  • Target rule diperiksa untuk memutuskan apa yang harus dilakukan berikutnya untuk paket.




Perintah


Perintah menentukan aksi yang akan dilakukan. Hanya satu perintah yang boleh diberikan untuk satu aturan. Beberapa perintah yang didukung oleh iptables adalah sebagai berikut :





  • -A, --append rantai aturan : menentukan satu atau beberapa aturan pada akhir rantai. Jika nama asal dan atau tujuan sesuai dengan beberapa alamat, maka aturan akan ditambahkan untuk masing-masing kombinasi alamat yang mungkin.


  • -D, --delete rantai aturan : menghapus satu atau lebih aturan dari rantai.


  • -D, --delete rantai nomor_aturan : menghapus satu atau lebih aturan dari rantai pada nomor tertentu.


  • -E, --rename-rule rantai_lama rantai_baru : mengubah nama rantai tertentu dengan nama buatan user.


  • -F, --flush [rantai] : menghapus suatu rantai. Jika tidak ditentukan rantainya, maka akan dihapus seluruh rantai. Perintah ini sama dengan menghapus semua aturan satu demi satu.


  • -h : menampilkan gambaran singkat tentang iptables.


  • -I, --insert rantai [nomor aturan] aturan : menyisipkan satu atau lebih aturan dalam rantai pada nomor yang diberikan. Nilai default untuk nomor aturan adalah 1.


  • -L, --list [rantai] : menampilkan semua aturan pada rantai. Jika tidak ditentukan rantainya, maka semua rantai akan ditampilkan.


  • -N, --new-rantai rantai : membuat rantai baru. Perintah ini tidak boleh menyertakan target.


  • -P, --policy rantai target : mengatur kebijakkan rantai terhadap target. Hanya rantai buil-in yang dapat diatur kebijakkannya.


  • -R, --replace rantai nomor_aturan aturan : mengganti suatu aturan dalam rantai. Jika nama asal dan atau tujuan sesuai dengan beberapa alamat, perintah akan gagal.


  • -X, --delete-rantai [rantai] : menghapus rantai buatan user. Rantai yang dihapus tidak boleh dalam keadaan diacu oleh rantai lain. Jika tidak menyebutkan nama rantai, maka akan dihapus semua rantai buatan user, rantai built-in tidak ikut terhapus.


Opsi Untuk Iptables


Opsi yang dapat digunakan untuk menentukan aturan dapat dilihat pada daftar di bawah ini :





  • [!] –f, --fragmen : hanya untuk fragmen kedua dan berikutnya dari paket yang terfragmnetasi.


  • -c, --set-counter PKTS BYTES : mengatur pencacah pada saat operasi INSERT, APPEND atau REPLACE.


  • -d, -dst, --destination [!] alamat[/mask] : menentukan tujuan alamat paket.


  • -i, --in-interface [!] nama : menentukan nama antarmuka yang dilalui oleh paket yang diterima (untuk paket yang masuk pada rantai INPUT, FORWARD, dan PREROUTING).


  • -j, --jump target : menetukan target aturan. Target dapat berupa target built-in atau target ekstensi.


  • --line-numbers : menampilkan nomor baris.


  • --modprobe=<perintah> : mencoba memuat modul dengan menjalankan perintah.


  • -n, --numeric : keluaran numeric. Alamat IP dan nomor port ditampilkan dalam format numerik.


  • -o, --out-interface [!] name : menentukan nama antarmuka yang dilalui oleh paket yang akan dikirim (untuk paket yang masuk pada rantai OUTPUT, FORWARD, dan POSTROUTING).


  • -p, --proto, --protocol [!] protokol : menentukan protokol dari aturan atau paket yang akan diperiksa. Protokol dapat berupa nama atau nilai numerik. Protokol yang mungkin adalah tcp, udp, atau all. Juga diperbolehkan nama protokol dari /etc/protocols. Nilai nol ekivalen dengan all.


  • -s, --src, --source [!] address [/mask] : menetukan asal paket.


  • -v, --verbose : keluaran verbose. Menampilkan beberapa informasi tentang hasil perintah iptables.


Ekstensi Iptables


    Ekstensi iptables berupa modul yang dapat dimuat pada saat menjalankan iptables. Ekstensi untuk iptables dapat dikelompokkan menjadi dua, yaitu ekstensi match dan ekstensi target.





  • Ekstensi Match

    Ekstensi Match dimuat secara implisit ketika opsi –m atau –p diberikan.





    • icmp

      Digunakan dalam hubungannya dengan protokol ICMP. Ekstensi ini dimuat secara implisit dengan opsi –p.




    • limit

      Digunakan dalam hubungannya dengan laju paket. Ekstensi ini dimuat secara implisit dengan opsi –m.




    • Multiport

      Digunakan untuk menentukan sekumpulan port, hanya untuk opsi –p tcp atau –p udp. Ekstensi ini dimuat secara implisit opsi –m.




    • State

          Digunakan dalam hubungannya dengan izin akses pada keadaan track hubungan suatu paket. Ekstensi ini dimuat secara implisit opsi –m.State yang mungkin adalah :





      • INVALID


      • ESTABLISHED


      • NEW


      • RELATED




    • tcp

      Digunakan dalam hubungannya dengan protokol TCP. Ekstensi ini dimuat secara implisit dengan opsi –p.




    • SYN

      Digunakan dalam hubungannya dengan dengan paket yang di set untuk flag YN dan di unset untuk flag ACK, FIN dan RT.. Ekstensi ini secara otomatis dimuat apabila opsi –p tcp dicantumkan.




    • udp

      Digunakan dalam hubungannya dengan protokol UDP. Ekstensi ini dimuat secara implisit dengan opsi –p.






  • Ekstensi Target



    • DNAT

      Target ini hanya valid untuk tabel nat pada rantai PREROUTING dan OUTPUT serta rantai buatan user yang hanya dipanggil dari rantai tersebut. Target ini menentukan bahwa alamat tujuan paket harus diubah dan aturan harus menghentikan pemeriksaan.




    • SNAT

      Target ini hanya valid untuk tabel nat pada rantai POSTROUTING. Target ini menentukan bahwa alamat asal paket harus diubah dan aturan harus menghentikan pemeriksaan.




    • MASQUERADE

      Target ini hanya valid untuk tabel nat pada rantai POSTROUTING. Target ini biasa digunakan apabila jaringan hanya mempunyai koneksi dengan satu alamat IP dinamik. Masquerade sama dengan mapping ke satu alamat IP dari antarmuka dimana paket keluar. Opsi ini hanya valid jika aturan juga menentukan opsi –p tcp atau –p udp.




    • REJECT

      Target ini digunakan untuk mengirim balik paket yang salah dan untuk merespon paket yang sesuai. Hampir sama dengan DROP tetapi mengirim balik paket. Target ini hanya valid untuk rantai INPUT, FORWARD dan OUTPUT serta rantai buatan user yang hanya dipanggil dari rantai tersebut.




    • REDIRECT

      Target ini hanya valid untuk tabel nat pada rantai PREROUTING dan OUTPUT serta rantai buatan user yang hanya dipanggil dari rantai tersebut. Target ini akan mengubah tujuan alamat IP paket ke firewall. Opsi ini hanya valid jika aturan juga menentukan opsi –p tcp atau –p udp.





1 comment:

  1. kk klo setting iptables dengan blockit-1.4.3a bagaimana ya? yang aku inginin sih ngebelokin paket data yang dianggap intrusi ke komputer lain (LAN).

    ReplyDelete