DASAR IPTABLES bag. 1

DASAR_IPTABLES_1_cover

Author: Ikhsan Arbi.


DASAR IPTABLES bag. 1

PENDAHULUAN

Pada pembelajaran kita kali ini adalah membahas tentang iptables atau firewall ialah sebagai mekanisme untuk melindungi keamanan jaringan komputer dengan menyaring paket data yang keluar dan masuk di jaringan. Paket data yang ’baik’ diperbolehkan untuk melewati jaringan dan paket dapa yang  dianggap ’jahat’ tidak diperbolehkan melewati jaringan. Firewall dapat berupa perangkat lunak atau perangkat keras yang ditanam perangkat lunak yang dapat menfilter paket data. Firewall dapat juga berupa suatu sikap yang ditanam dan diajarkan kepada staf  IT suatu perusahaan untuk tidak membocorkan data perusahaan kepada perusahaan. Ini untuk mencegah salah satu jenis hacking yaitu social engineering. Ataupun memberi kunci pengaman pada alat-alat komputer dan jaringan, contohnya memasukan server ke dalam ruangan khusus dan dikunci. Kunci ruangan tersebut hanya dipegang oleh staf IT dan diperbolehkan menggunakan ruang tersebut atas seizin staf IT.

I.   Mengenal Iptables

Apa sih Iptables dan juga NetFilter itu?

    • Iptables adalah modul userpace yang berinteraksi pada baris perintah untuk memasukkan aturan firewall ke tabel yang telah ditetapkan.
    • Sedangkan NetFilter adalah modul kernel, yang dibangun dalam kernel yang benar – benar melakukan penyaringan.

II.   Pemahaman Dasar Tentang Cara Kerja Iptables

Bagaimana Konsep Dari Iptables itu?

img1-DASAR_IPTABLES_1(gambar 1)

 

    • Iptables itu menggunakan konsep alamat IP, protokol (tcp, udp, icmp) dan juga port.
    • Iptables menggunakan chain (INPUT, OUTPUT, dan FORWARD) apabila data yang diproses melalui paket ip akan dilewati dalam tabel penyaringan terlebih dahulu seperti pada gamba1 diatas.

Pada gambar1 chain tersebut digambarkan pada lingkaran, jadi saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Chain akan memutuskan nasib paket tersebut apabila keputusannya adalah DROP, maka paket tersebut akan di-drop, tetapi jika chain memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.

III.   Istilah – Istilah diDalam Command Iptables

Istilah – istilah tersebut misalnya, memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah, dan dilakukan untuk penambahan atau penghapusan sesuatu dari tabel atau yang lain, seperti dibawah ini :

sintaks IPTables = iptables [-t table] command [match] [target/jump]

  • Table

Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut :

  1. NAT = Secara umum digunakan untuk melakukan Network Address Translation. adalah pengganti field alamat asal atau alamat tujuan dari sebuah paket.
  2. MANGLE = Digunakan untuk melakukan penghalusan (mangle) paket seperti TTL, TOS, dan MARK.
  3. FILTER = Secara Umum, inilah pemfilteran paket yang sesungguhnya, disini paket akan ditentukan apakah akan di-DROP, LOG, ACCEPT atau REJECT
  • Command

Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah.

-A or – -append = Perintah ini menambahkan aturan pada akhir chain. Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan dieksekusi terakhir.
-D or – -delete = Perintah ini menghapus suatu aturan pada chain. Dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus.
-R or – -replace = Penggunaannya sama seperti – -delete, tetapi command ini menggantinya dengan entry yang baru.
-I or – -insert = Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan pada baris yang disebutkan, dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula baris-baris selanjutnya.
-L or – -list = Perintah ini menampilkan semua aturan pada sebuah tabel. Apabila tabel tidak disebutkan, maka seluruh aturan pada semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali pada sebuah tabel. Command ini bisa dikombinasikan dengan option –v (verbose), -n (numeric) dan –x (exact).
-F or – -flush = Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan di-flush.
-N or – -new-chain = Perintah tersebut akan membuat chain baru.
-X or – -delete-chain = Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut.
-P or – -policy = Perintah ini membuat kebijakan default pada sebuah chain. Sehingga jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default ini.
-E or – -rename-chain = Perintah ini akan merubah nama suatu chain.
-v or – -verbose = Memberikan output yang lebih detail, utamanya digunakan dengan – -list. Jika digunakan dengan – -list, akan menampilkam K (x1.000), M (1.000.000) dan G (1.000.000.000).
-x or – -exact = Memberikan output yang lebih tepat.
-n or – -numeric = Memberikan output yang berbentuk angka. Alamat IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname ataupun nama aplikasi/servis.
– -line-number = Akan menampilkan nomor dari daftar aturan. Hal ni akan mempermudah bagi kita untuk melakukan modifikasi aturan, jika kita mau meyisipkan atau menghapus aturan dengan nomor tertentu.
– -modprobe = Memerintahkan IPTables untuk memanggil modul tertentu. Bisa digunakan bersamaan dengan semua command.
-p or – -protocol = Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols. Tanda inversi juga bisa diberlakukan di sini, misal kita menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan – -protokol ! icmp yang berarti semua kecuali icmp.
-s or – -src or– -source = Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.0.10, atau suatu alamat network menggunakan netmask misal 192.168.0.0/255.255.255.0, atau bisa juga ditulis 192.168.0.0/24 yang artinya semua alamat 192.168.0.x. Kita juga bisa menggunakan inversi.
-d or- -dst or – -destination = Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match –src
-i or- -in-interface = Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING
-o or- -out-interface = Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan – -in-interface. Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING
– -sport or– -source-port = Match ini berguna untuk mecocokkan paket berdasarkan port asal. Dalam hal ini kia bisa mendefinisikan nomor port atau nama service-nya. Daftar nama service dan nomor port yang bersesuaian dapat dilihat di /etc/services. – -sport juga bisa dituliskan untuk range port tertentu. Misalkan kita ingin mendefinisikan range antara port 22 sampai dengan 80, maka kita bisa menuliskan – -sport 22:80.Jika bagian salah satu bagian pada range tersebut kita hilangkan maka hal itu bisa kita artikan dari port 0, jika bagian kiri yang kita hilangkan, atau 65535 jika bagian kanan yang kita hilangkan. Contohnya – -sport :80 artinya paket dengan port asal nol sampai dengan 80, atau – -sport 1024: artinya paket dengan port asal 1024 sampai dengan 65535.Match ini juga mengenal inversi.
– -dport or– -destination-port = Penggunaan match ini sama dengan match – -source-port.
– -tcp or -flags =Digunakan untuk mencocokkan paket berdasarkan TCP flags yang ada pada paket tersebut. Pertama, pengecekan akan mengambil daftar flag yang akan diperbandingkan, dan kedua, akan memeriksa paket yang di-set 1, atau on.Pada kedua list, masing-masing entry-nya harus dipisahkan oleh koma dan tidak boleh ada spasi antar entry, kecuali spasi antar kedua list. Match ini  mengenali SYN,ACK,FIN,RST,URG, PSH. Selain itu kita juga menuliskan ALL dan NONE. Match ini juga bisa menggunakan inversi.
– -syn = Match ini akan memeriksa apakah flag SYN di-set dan ACK dan FIN tidak di-set. Perintah ini sama artinya jika kita menggunakan match – -tcp-flags SYN,ACK,FIN SYNPaket dengan match di atas digunakan untuk melakukan request koneksi TCP yang baru terhadap server.
UDP Matches = Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. – -sport atau – -source-port- -dport atau – -destination-port
ICMP Matches = Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. – -icmp-type
Explicit Matches
a. MAC Address

Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Contoh = 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. Contoh = 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. contoh = iptables –A OUTPUT –m owner – -uid-owner 500 or – -gid-owner

d. State Matches
Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. Contohnya = iptables –A INPUT –m state – -state RELATED,ESTABLISHED

Target/Jump
Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. Sebagai contoh dibuat sebuah chain yang bernama tcp_packets. Setelah ditambahkan aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari chain input. iptables –A INPUT –p tcp –j tcp_packets
-j ACCEPT or – -jump ACCEPT = Ketika paket cocok dengan daftar match dan target ini diberlakukan, maka paket tidak akan melalui baris-baris aturan yang lain dalam chain tersebut atau chain yang lain yang mereferensi chain tersebut. Akan tetapi paket masih akan memasuki chain-chain pada tabel yang lain seperti biasa.
-j DROP or – -jump DROP = Target ini men-drop paket dan menolak untuk memproses lebih jauh. Dalam beberapa kasus mungkin hal ini kurang baik, karena akan meninggalkan dead socket antara client dan server.Paket yang menerima target DROP benar-benar mati dan target tidak akan mengirim informasi tambahan dalam bentuk apapun kepada client atau server.

-j RETURN or – -jump RETURN = Target ini akan membuat paket berhenti melintasi aturan-aturan pada chain dimana paket tersebut menemui target RETURN. Jika chain merupakan subchain dari chain yang lain, maka paket akan kembali ke superset chain di atasnya dan masuk ke baris aturan berikutnya. Apabila chain adalah chain utama misalnya INPUT, maka paket akan dikembalikan kepada kebijakan default dari chain tersebut.

-j MIRROR = Apabila kompuuter A menjalankan target seperti contoh di atas, kemudian komputer B melakukan koneksi http ke komputer A, maka yang akan muncul pada browser adalah website komputer B itu sendiri. Karena fungsi utama target ini adalah membalik source address dan destination address.Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang dipanggil melalui chain tersebut.
a. LOG Target
Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Contoh = iptables –A FORWARD –p tcp –j LOG – -log-level debug or iptables –A INPUT –p tcp –j LOG – -log-prefix “INPUT Packets”
b. REJECT Target
Secara umum, REJECT bekerja seperti DROP, yaitu memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. Tetapi, REJECT akan mengirimkan error message ke host pengirim paket tersebut. Contohnya = iptables –A FORWARD –p tcp –dport 22 –j REJECT – -reject-with icmp-host-unreachable or icmp-net-unreachable, or icmp-host-unreachable, icmp-port-unreachable, or icmp-proto-unrachable, or icmp-net-prohibited dan icmp-host-prohibited.
c. SNAT Target
Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada chain POSTROUTING, dan hanya di sinilah SNAT bisa dilakukan. Contohnya = iptables –t nat –A POSTROUTING –o eth0 –j SNAT – -to-source 194.236.x.x-194.236.x.x:1024-32000
d. DNAT Target
Berkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. Contohnya =  iptables –t nat –A PREROUTING –p tcp –d 182.123.4.5 – -dport 80 –j DNAT – -to-destination 192.168.0.2
e. MASQUERADE Target
Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option – -to-source. Contohnya = iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
f. REDIRECT Target
Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya = iptables –t nat –A PREROUTING –i eth1 –p tcp – -dport 80 –j REDIRECT – -to-port 8180
Demikian Pertemuan Kita Untuk Hari Ini, Kita akan Bertemu Lagi Untuk Pembahasan teknis dan best practice untuk melakukan Settingan – Settingan pada IPTABLES Kita.
Powered by :
IT-Cupu (Ikhsan Arbi Maryadi)
at PT. Lintas Media Danawa