Rabu, 13 September 2017

Mari Mengenal Tentang IPTables



Assallamu'alaikum Wr. Wb.

A. Pendahuluan
     Hai sobat blogger, pada hari kamis yang cerah ini saya akan menjelaskan tentang apa itu IPTables. Langsung saja simak penjelasan IPTables di bawah ini.

1. Pengertian
    IPTables adalah suatu tools dalam sistem operasi Linux yang berfungsi sebagai alat untuk melakukan filter terhadap trafic lalu lintas data. Secara sederhana IPTables dapat diibaratkan sebagai pengatur lalu lintas data. Dengan IPTables inilah kita dapat mengatur semua lalu lintas data dalam komputer kita baik yang masuk ke komputer kita, keluar dari komputer atau hanya lewat saja.

2. Latar Belakang  
    Setiap jaringan secara umum harus memiliki firewall untuk mengawasi dan menghalangi hal-hal yang tidak di inginkan, seperti kehilangan data yang sangat penting atau yang lainya. 

3. Maksud dan Tujuan 
    Kegiatan ini bermaksud agar kita bisa mengerti dan memahami tentang iptables. Sehingga nantinya jka kita sudah paham betul dengan iptables ini, kita dapat mengamankan dan mengelola server kita.

4. Hasil yang Di Harapkan
    Seorang IT harus paham mengenai IP Tables. 

B. Alat dan Bahan
  • PC/Laptop
  • Koneksi Internet 
C. Jangka Waktu Pelaksanaan Kegiatan
  • 1 Jam
D. Proses dan Tahapan Pekerjaan

>>Fungsi IP Tables
Berikut adalah beberapa fungsi iptables yaitu :
  • Dapat melakukan perhitungan terhadap paket dan menerapkan prioritas trafik berdasarkan jenis layanannya.
  • Dapat digunakan untuk mendefinisikan sekumpulan atau keamanan berbasis port untuk mengamankan host-host tertentu.
  • Dapat di gunakan untuk membangun  sebuah router atau gateway.
    >> Pembahasan
    Berikut ini adalah gambar diagram IPTables : 

    >> Definisi Gambar di atas : 

    Berikut ini adalah definisi dari masing2 titik tersebut:
    • PREROUTING, titik dimana kita bisa memanipulasi paket network sebelum dia memasuki keputusan routing, apakah ia akan masuk ke dalam Linux kita atau cuma sekedar 'lewat.
    • INPUT, titik dimana kita bisa melakukan pemeriksaan terhadap paket network yang akan MASUK ke dalam Linux kita
    • OUTPUT, titik dimana kita melakukan pemeriksaan terhadap paket network yang dihasilkan oleh Linux kita KELUAR sebelum routing
    • FORWARD, titik dimana kita melakukan pemeriksaan terhadap paket network yang cuma numpang LEWAT Linux kita.
    • POSTROUTING, titik dimana kita bisa melakukan manipulasi terhadap paket yang akan keluar dari Linux kita. 
    >> Konsep IPTables : 
    • 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.
    >> 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.

    J. 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] 
    Tabel 
        Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut :
    • NAT = Secara umum digunakan untuk melakukan Network Address Translation. adalah pengganti field alamat asal atau alamat tujuan dari sebuah paket.
    • MANGLE = Digunakan untuk melakukan penghalusan (mangle) paket seperti TTL, TOS, dan MARK.
    • 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
    • -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 SYN Paket 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
    • dengan – -list, akan menampilkam K (x1.000), M (1.000.000) dan G (1.000.000.000).
    > 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.
    E. Hasil yang Di Dapatkan
         Hasil akhir yang di dapat adalah bahwa jadi seorang IT terutama di Jaringan harus paham tentang IP Tables menjadi seorang IT di Jaringan.

    F. Temuan Permasalahan
         Saya belum menemukan masalah ketika saya mempelajari tentang IP Tables.

    G. Kesimpulan
        Menjadi seorang IT Networking akan sangat susah jika kita belum mengenal apa itu IP Address.

    H. Referensi 
    Demikian yang dapat saya bahas pada postingan saya kali ini, jika ada yang kuram paham silahkan bertanya di kolom komentar. Semoga bermanfaat!

    Wassallamu'alaikum Wr. wb. 

    Tidak ada komentar:

    Posting Komentar