Rabu, 19 Juni 2013

IPTables, My Homework, Just Please Final Part

Finally, last post about this thing in this semester. Materi terakhir adalah mengenai IPTables. Apa itu IPTables? Iptables adalah suatu tools dalam sistem operasi linux yang berfungsi sebagai alat untuk melakukan filter (penyaringan) terhadap (trafic) lalulintas data. Secara sederhana digambarkan sebagai pengatur lalulintas data. Dengan iptables inilah kita akan mengatur semua lalulintas dalam komputer kita, baik yang masuk ke komputer, keluar dari komputer, ataupun traffic yang sekedar melewati komputer kita.

Terdapat aturan penulisan dalam IPTABLES
iptables [–t tables] [option] [rule] [target]
Contohnya:
iptables –P FORWARD ACCEPT

IPTables memiliki 3 buah tabel, yaitu NAT, MANGLE dan FILTER. 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. NAT adalah penggantian 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.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT.

Pada table Filter, terdapat 3 jenis chain yaitu:
    ACCEPT
Akses diterima dan diizinkan melewati firewall
    REJECT
Akses ditolak, koneksi dari komputer klien yang melewati firewall langsung terputus, biasanya terdapatpesan “Connection Refused”. Target Reject tidak menghabiskan bandwidth internet karena akses langsung ditolak, hal ini berbeda dengan DROP.
    DROP
Akses diterima tetapi paket data langsung dibuang oleh kernel, sehingga pengguna tidak mengetahui kalau koneksinya dibatasi oleh firewall, pengguna melihat seakan – akan server yang dihubungi mengalami permasalahan teknis. Pada koneksi internet yang sibuk dengan trafik tinggi Target Drop sebaiknya jangan digunakan.

Pada bagian ini kita juga membahas mengenai Network Address Translation, biasa disebut dengan NAT. Fungsi utama dari NAT adalah untuk melakukan translasi alamat dari satu alamat ke alamat IP yang lain, biasanya dipakai pada internet gateway. Selain melakukan translasi alamat IP, iptables juga bisa melakukan NAT alamat Port aplikasi, bisa disebut juga dengan Port Address Translation (PAT). PAT digunakan untuk membangun beberapa server seperti mail, web, database maupun datacenter yang diakses melalui internet hanya dengan satu alamat IP publik.

Tabel NAT
Selain sebagai IP Filtering / Firewall, iptables juga bisa difungsikan untuk translasi alamat, ditandai dengan opsi -t nat pada perintah iptables.
a.    POSTROUTING
     Translasi alamat yang keluar dari firewall, berarti kita melihat paket data yang keluar dari kartu LAN.
iptables -t NAT -A POSTROUTING -o eth0 -s 192.168.1.0/24 -d 0/0 -j SNAT -to 202.154.6.55
iptables -t NAT -A POSTROUTING -o eth0 -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
     contoh diatas berarti jaringan subnet 192.168.1.0/24 jika menghubungi web server yang berada di internet dikenali dari IP 202.154.6.55. Target MASQUERADE berarti IP NAT disesuaikan dengan alamat IP kartu LAN eth0, jika IP eth0 dirubah kita tidak perlu merubah settingan iptables.

b.    PREROUTING
     Translasi alamat yang memasuki kartu jaringan, kita juga bisa membelokkan paket data ke port tertentu untuk membangun server internet hanya dengan satu IP publik.
iptables -t nat -A PREROUTING – eth0 -p tcp -dport 25 -j DNAT -to 192.168.1.20:25
iptables -t nat -A PREROUTING – eth0 -p tcp -dport 110 -j DNAT -to 192.168.1.20:110
iptables -t nat -A PREROUTING – eth0 -p tcp -dport 80 -j DNAT -to 192.168.1.30:80
Pada contoh diatas kita mempunyai 2 server, 192.168.1.20 (mail server) dan 192.168.1.30 (web server). Koneksi dari internet ke port 25 dan 110 secara otomatis diarahkan ke alamat IP 192.168.1.20 (IP Lokal / LAN). Akses port 80 (web server) diarahkan ke IP lokal 192.168.1.30

c.    LIST NAT
     Untuk melihat NAT yang baru saja kita setting menggunakan perintah:
iptables -t nat -L -v
root@kolaMcc $ iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 1833K packets, 141M bytes)
pkts bytes target prot opt in out source destination
199K 9636K REDIRECT     tcp – eth2 any anywhere anywhere tcp dpt:http redir ports 3128
0 0 REDIRECT tcp-eth1 any anywhere anywhere tcp dpt:36 redir ports 10000
0 0 REDIRECT tcp-eth1 any anywhere anywhere tcp dpt:time redir ports 20000
0 0 DNAT tcp-eth1 any anywhere anywhere tcp dpt:33 to:192.168.1.100:22

Menghapus NAT
root@kolaMcc $ iptables -t nat -L -viptables -t nat -F
root@kolaMcc $ iptables -t nat -L -viptables -t nat –Z

Yang membedakan Mangle dengan table yang lain adalah membuat paket-paket Anda ditandai satu per satu. Tujuannya adalah agar paket tersebut mempunyai ciri khas, sehingga paket tersebut dapat diolah lebih lanjut sesuai dengan policy yang akan Anda terapkan.
Tabel Mangle memiliki kemampuan untuk menggunakan semua chain yang ada dalam IPTables seperti INPUT, OUTPUT, PREROUTING, dan sebagainya. Dengan menggunakan tabel ini, Anda bisa melakukan banyak hal, seperti misalnya melakukan pengubahan routing sesuai dengan kebijakan Anda, atau memberikan perlakuan khusus pada salah satu jenis paket atau yang sering disebut dengan istilah QoS, dan masih banyak lagi. Maka dari itu, Mangle banyak digunakan bersama dengan program lain untuk melayani pemprioritasan sebuah aplikasi.

Tujuan dari penggunaan Chain Prerouting dengan Chain Postrouting terdiri atas:
SNAT Target
     Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada kolom POSTROUTING, dan hanya di sinilah SNAT bisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama.
Contoh :
iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to-source 194.236.50.155-194.236.50.160:1024-32000

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. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh kedua chain tersebut.
Contoh :
iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 –dport 80 –j DNAT –to-destination 192.168.0.2

Target adalah tujuan perlakuan terhadap rule. Pada target ini terletak keputusan, paket data mau diapakan, apakah mau di tolak, atau diteruskan atau diolah terlebih dahulu. Berikut daftar table target iptables :
•    ACCEPT
 Rantai paket tersebut diterima dalam rule

•    DROP
 Rantai paket tersebut “dijatuhkan”

•    REJECT
 Rantai paket tersebut ditolak seperti DROP

•    DNAT
 Rantai paket di “destination nat” kan ke address lain

•    SNAT
 Rantai paket di arahkan ke source nat tertentu

•    REDIRECT
 Rantai paket di redirect ke suatu addres dan port tertentu

•    MASQUERADE
 Bekerja seperti SNAT tapi tidak memerlukan source

•    REJECT
 Bekerja seperti DROP

•    RETURN
 Mengembalikan paket ke superset chain di atasnya dan masuk ke baris aturan berikutnya, jika pada subchain. Tapi jika pada chain utama seperti INPUT, maka paket dikembalikan kepada kebijakan default.

•    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.

Target DROP berfungsi  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.
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. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan yang dipanggil dari ketiga chain tersebut.
iptables –A FORWARD –p tcp –dport 22 –j REJECT --reject-with icmp-host-unreachable
Ada beberapa tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmp-host-prohibited.
Jadi, misalkan terdapat sebuah perintah
Iptables –A FORWARD –s 0/0 -1 eth0 –d 192.168.1.58 –o eth1 –p TCP –sport 1024:65535 –m multiport –dports 80,443 –j ACCEPT
Artinya adalah di awal data akan diubah menjadi paket yang  dapat melewati box, lalu source port 65535 adalah jangkauan spesifik dari port tersebut. Terdapat kasus khusus dimana apabila port kedua lebih besar dari port yang pertama maka posisinya akan bertukar.  Multiport –dports atau destination ports adalah tujuan akhir dari perjalanan data sampai. Maksimal tujuan port adalah 15  port. Destination ports hanya dapat digunakan bersama dengan-p tcp atau-p udp. Bagian terakhir adalah ACCEPT  yang berada dalam bagian terakhir IPTABLES  berfungsi 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 saat proses dilanjutkan.
Well, pada modul kali ini terdapat case khusus karena tidak ada demo langsung. Jadi Saya akan share mengenai soal shift one by one here. Soal Shift nya adalah sebagai berikut :
1.    Semua subnet tidak dapat mengakses TCP port 21, 443, 66 pada DMZ kecuali KEBUN_BIBIT sedangkan port TCP yang diizinkan untuk mengakses DMZ adalah port 80, 8080, 22.

Jawab :
 Karena yang diizinkan untuk mengakses DMZ adalah port 80 dan 8080 serta 22 maka di DMZ dberi syntax berikut :

iptables -A RH-Firewall-1-INPUT -s 200.200.200.32/27 -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 21 -j DROP

iptables -A RH-Firewall-1-INPUT -s 200.200.200.32/27 -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 443 -j DROP

iptables -A RH-Firewall-1-INPUT -s 200.200.200.32/27 -p tcp --dport 66 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 66 -j DROP

iptables -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 8080 -j ACCEPT
iptables -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT

2.    Mengijinkan semua akses UDP ke DMZ.

Jawab :
Karena seluruh akses UDP diijinkan maka syntax yang digunakan adalah :

iptables -A INPUT -p UDP -s 0/0 --dport 53 -j ACCEPT

3.    Subnet DMZ tidak dapat di PING dari luar selain subnet AJK dan jaringan internal.
Jawab:
Masih sama dengan yang lain, syntax terdapat pada DMZ yaitu:

iptables -A FORWARD -p icmp -d 200.200.200.209/30 -s 10.151.72.56/30 --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p icmp -d 200.200.200.209/30 -s 200.200.200.0/23 --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p icmp -d 200.200.200.209/30 --icmp-type echo-request -j REJECT

4.    Koneksi kepada DMZ melalui ssh dibatasi sebanyak 5 koneksi.

Jawab :
Tentukan banyaknya koneksi dengan hitcount, karena koneksi adalah lima maka syntax nya adalah:

iptables -I INPUT -p icmp --icmp-type echo-request -m recent --set
iptables -I INPUT -p icmp --icmp-type echo-request -m recent --update --hitcount 5 -j DROP

5.    Buatlah sebuah perintah iptables untuk mengatasi synflood

Jawab:
SYN Flood adalah jenis denial of service (DoS) yang mengirimkan serangkaian pesan “SYN” ke komputer, seperti web server. Saat akan membuat perintah iptables untuk ,mengatasi serangan ini maka dapat dijalankan syntax berikut :

iptables -N syn-flood
iptables -A syn-flood -m limit --limit 10/second --limit-burst 50 -j RETURN
iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
iptables -A syn-flood -j DROP

6.    Buatlah sebuah perintah iptables untuk mengatasi force ssh attack.

Jawab :
Force ssh attack juga merupakan salah satu jenis serangan selain synflood, untuk mengatasinya, salah satunya dapat menggunakan syntax berikut :

iptables -I INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource

iptables -I INPUT -i eth1 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP

7.    Buatlah perintah iptables untuk memblok paket scanning.  Contoh: xmas, file scan.

Jawab :
Pada blok paket, dapat digunakan dengan menandai flags pada paket data yang akan di scan yaitu misalnya dengan cara :

iptables -A INPUT -p tcp --tcp-flags ALL xmas -j DROP

8.    Subnet taman_bungkul hanya bisa diakses oleh subnet kebun_bibit, subnet plasa_surabaya hanya bisa diakses ketika jam kerja (08.00 – 16.00), subnet sutos tidak bisa melakukan koneksi ke YM dan Facebook serta tidak bisa melakukan streaming video pada hari dan jam kerja (senin-jumat 07.00-17.00).

Jawab :
Terdapat beberapa syarat khusus pada jaringan yang akan dibangun, jadi harus dilaksanakan satu per satu. Salah satu syntax yang dapat dijalankan adalah :

iptables -A FORWARD -p tcp -d 200.200.200.0/27 -s 200.200.200.32/27 -j ACCEPT;
iptables -A FORWARD -p tcp -d 200.200.200.0/23 -j REJECT;

iptables -A FORWARD -p tcp –d 200.200.200.64/26 -m time --timestart 08:00 --timestop 16:00 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT;
iptables -A FORWARD -p tcp –d 200.200.200.64/26 -j REJECT;

iptables -A FORWARD -p tcp -d 200.200.201.0/24 -m time --timestart 07:00 --timestop 17:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
iptables -A FORWARD -p tcp –s 10.151.72.56/30 --dport 5000:5010 -m time --timestart 07:00 --timestop 17:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
iptables -A FORWARD -p tcp -d www.facebook.com –s 200.200.201.0/24 -m time --timestart 07:00 --timestop 17:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
iptables -A FORWARD -p tcp -d www.messenger.yahoo.com –s 200.200.201.0/24 -m time --timestart 07:00 --timestop 17:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
iptables -A FORWARD -p tcp -d www.youtube.com –s 200.200.201.0/24 -m time --timestart 07:00 --timestop 17:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT

9.    Selain DMZ gunakan NAT untuk mengakses jaringan luar (tidak boleh menggunakan masquerade).

Jawab :
Karena tidak boleh menggunakan masquerade maka untuk mengakses jaringan luar menggunakan NAT, dapat dipakai syntax berikut ini :

iptables -t nat -A POSTROUTING -o ppp0 -j SNAT \ --to $PPPIP

10.    Catat semua log yang di-drop oleh firewall.

Jawab :
Kita dapat melihat semua history dari semua log yang di drop oleh firewall  di /var/log/firewall, warn, messages –clutter

Akhirnya, sekianlah rangkaian curhat dan sekaligus sebagai laporan resmi satu semester praktikum Jaringan Komputer kami. Tentunya terimakasih kepada Tuhan Yang Maha Esa karena akhirnya pekan badai bersama mata kuliah ini telah terlewati dengan baik. Selanjutnya kami mengucapkan banyak terimakasih pula pada asisten kami Mbak Happy Ayu yang telah bersedia membantu kami berjuang menghadapi kuliah ini selama satu semester. Terimakasih kepada seluruh teman-teman seperjuangan dan semua pihak yang telah membantu kelancaran kuliah kami selama ini. Kami memohon maaf kepada semua pihak yang baik secara langsung maupun tidak padanya kami berbuat salah. Akhir kata, saya Wati Margaretha Marpaung dan Eko Adhi Wiyono alias Mbul mengucapkan , Cherioh! Ganbatte Kudasai! Semoga Jarkomnya dapat nilai dewa. Aminnn!!

Tidak ada komentar:

Posting Komentar