Praktikum JarKom Modul 5 ini membahas mengenai IPTABLES. Sebelum masuk ke Soal Shift, ada beberapa hal penting terkait IPTABLES yang perlu diketahui terlebih dahulu. Diantaranya diambil dari soal pada Laporan Pendahuluan.
1. Apakah yang dimaksud dengan IPTABLES?
Kita sudah mengenal firewall pada sistem operasi windows. Untuk sistem operasi linux, dikenal iptables yang juga serupa dengan firewall. Iptables adalah konfigurasi dalam sistem operasi linux yang berfungsi dalam melakukan filter terhadap lalulintas data. Dengan melakukan konfigurasi iptables inilah kita dapat mengatur semua lalulintas dalam jaringan, baik akses ke jaringan luar, ke dalam, ataupun yang hanya melewati jaringan kita.
2. Bagaimana aturan penulisan dalam IPTABLES?
IPTables memiliki tiga macam daftar aturan bawaan dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall chain) atau sering disebut chain saja. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD. Ketiga chain tersebut terdapat dalam tabel FILTER. Perhatikan gambar berikut ini.
Setiap CHAIN memiliki RULE. Misalkan, paket yang tersaring dalam kategori INPUT akan dikenakan RULE yang berkaitan dengan chain input. Sebuah rule memuat kriteria dan target tertentu. Jika sebuah kriteria didapati cocok, maka sebuah aksi khusus akan diterapkan kepada paket yang berhubungan dengan target. Jika tidak sesuai dengan sebuah kriteria, maka iptables akan mengecek rule selanjutnya.
Adapun yang aksi target yang termasuk dalam rule tersebut adalah ACCEPT, REJECT, DROP, QUEUE, dan RETURN.
Jadi, berdasarkan aturan tersebut, sintaks iptables adalah sebagai berikut.
iptables [-t table] command [match] [target/jump]
Perlu diperhatikan bahwa iptables membaca chain dari atas ke bawah (top-down match).
3. Ada berapa tables dalam IPTABLES?
Didalam iptables terdapat 3 table yang memiliki fungsinya masing-masing. Berikut adalah ketiga table tersebut:
Ø Filter
Table Filter adalah table default (jika kita tidak menulis opsi -t ). Table ini berisi chain-chain bawaan seperti INPUT (untuk paket yang di tujukan pada host local), FORWARD (Untuk paket yang melewati host dalam jaringan kita), dan OUTPUT(untuk paket-paket dari jaringan kita jika di fungsikan sebagai gateway).
Ø NAT
Table NAT berguna untuk memungkinkan sebuah host dalam jaringan untuk berbagi IP yang sama. Table ini berisi chain-chain bawaan seperti: PREROUTING (untuk merubah paket secepat paket itu tiba), OUTPUT (untuk perubahakan paket local sebelum dia di Routing), dan POSTROUTING (untuk perubahan paket yang akan keluar).
Ø Mangle
Table Mangle berguna untuk perubahan paket yang dispecialkan. Tabel ini juga memiliki tiga chain bawaan yang di suport: INPUT (untuk paket yang di tujukan untuk mesin itu sendiri),FORWARD (untuk paket yang melewati mesin itu sendiri), dan POSTROUTING (untuk perubahan paket yang akan keluar setelah routing terjadi).
4. Apa perbedaan 3 jenis chain pada table filter?
Ketiga chain dalam tabel filter adalah fordward, input, dan output. Input chain akan diterapkan untuk paket yang masuk/datang ke dalam host. Output chain diterapkan untuk paket yang dibuat dari dalam host (lokal) dan hendak keluar host. Sedangkan, forward chain akan diterapkan untuk paket yang melalui host, berasal dari komputer lain, dan melalui host (router) untuk keperluan routing.
5. Ada berapa jenis NAT?
Terdapat 3 jenis NAT, sebagai berikut.
- Static NAT adalah mekanisme pemetaan one-to-one antara IP private ke IP public (registered IP).
- Dynamic NAT adalah mekanisme pemetaan dimana terdapat beberapa IP address terdaftar, kemudian pada tiap IP address private akan dipetakan ke salah satu IP address terdaftar. Berbeda dengan Static NAT, yang akan selalu memetakan salah satu IP address private ke IP address tertentu, pada Dynamic NAT ini, sebuah IP address private tidak selalu mendapatkan IP address terdaftar yang sama.
- Overloading adalah variasi dari Dynamic NAT yang juga diketahui sebagai NAPT(Network Address Port Translation) yang memetakan beberapa IP private ke sebuah IP yang terdaftar dan dibedakan berdasarkan TCP/UDP port number.
6. Apa yang membedakan Mangle dengan table yang lain?
Tabel mangle dalam iptables berfungsi untuk merubah paket. Hal ini berbeda dengan tabel lainnya, tabel nat untuk network address translation, dan tabel filter untuk penyaringan paket. Tabel mangle mengubah Quality of Service bits pada TCP header. Mangle digunakan untuk melakukan penghalusan paket, seperti TTL, TOS, dan MARK.
7. Apa tujuan dari penggunaan Chain Prerouting dengan Chain Postrouting?
- Chain Prerouting bertujuan untuk melakukan NAT sebelum paket benar-benar sampai pada tahap routing yang akan mengirim paket ke INPUT atau FORWARD chains didalam filter table.
- Chain Postrouting bertujuan untuk melakukan NAT pada semua paket yang akan keluar dari jaringan ke internet.
Berikut adalah beberapa contoh penerapan IPTABLES untuk berbagai macam kasus penggunaan.
a)
#semua tidak dapat akses tcp port 21,443,66 pada DMZ, kecuali KEBUN BIBIT
#tcp port yang diizinkan pada DMZ adalah port 80,8080,22
(terapkan di ampel)
iptables -A FORWARD -s 10.96.0.0/11 -p tcp -m multiport --dports 21,443,66 -j ACCEPT
iptables -A FORWARD -s 0/0 -p tcp -m multiport --dports 21,443,66 -j REJECT
iptables -A FORWARD -s 0/0 -p tcp -m multiport --dports 80,8080,22 -j ACCEPT
iptables -A FORWARD -s 0/0 -p tcp -j REJECT
b)
#izinkan semua akses UDP ke DMZ
#(terapkan di ampel)
iptables -A FORWARD -s 0/0 -p udp -j ACCEPT
#(terapkan di dmz tp & gm)
iptables -A INPUT -s 0/0 -p udp -j ACCEPT
c)
#subnet dmz tidak dapat di PING, kecuali dengan jaringan AJK dan internal
#(terapkan di ampel)
iptables -A FORWARD -s 10.151.36.0/24 -d 10.151.71.64/29 -p icmp -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/8 -o eth1 -p icmp -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -d 10.151.71.64/29 -p icmp -j DROP
d)
#koneksi SSH pada DMZ dibatasi sebanyak 5 koneksi
#(terapkan di ampel)
#maksimal total 5 koneksi per menit
iptables -A FORWARD -p tcp --dport 22 -m limit --limit 5/minute --limit-burst 1 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#atau, per host 5 koneksi
iptables -A FORWARD -p tcp --dport 22 -m recent --set
iptables -A FORWARD -p tcp --dport 22 -m recent --update seconds 1 -- hitcount 5 -j REJECT
iptables -A FORWARD -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
e)
#lakukan konfigurasi untuk mengatasi syn flood
#(terapkan di tugu_pahlawan)
iptables -A FORWARD -p tcp --syn -m limit --limit 5/second --limit-burst 1 -i eth0 -j ACCEPT
f)
#lakukan konfigurasi untuk mengatasi force ssh attack
#(diterapkan di ampel apabila ssh hanya ada di dmz)
iptables -A FORWARD -p tcp --dport 22 -m state --state NEW -m limit --limit 5/second --limit-burst 1 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
g)
#konfigurasi untuk memblok paket scanning (contoh: xmas, fin scan)
#(diterapkan di tugu_pahlawan)
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL XMAS,FIN -j DROP
h)
#subnet taman_bungkul hanya bisa diakses oleh subnet kebun_bibit
#(diterapkan di siola)
iptables -A FORWARD -i eth0 -s 10.104.0.0/13 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
#subnet plasa_surabaya hanya bisa diakses pada pukul 08.00-16.00
#(diterapkan di balai_kota)
iptables -A FORWARD -i eth0 -o eth1 -m time --timestart 08:00 --timestop 16:00 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j DROP
#subnet sutos tidak bisa akses YM, FB, dan streaming video pada senin-jumat 07.00-17.00
#(diterapkan di stasiun_gubeng)
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dports 5050,80,443 -m time --timestart 07:00 --timestop 17:00 --days Mon,Tue,Wed,Thu,Fri -j DROP
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 1024:65535 -m time --timestart 07:00 --timestop 17:00 --days Mon,Tue,Wed,Thu,Fri -j DROP
i)
#selain DMZ gunakan NAT untuk mengakses jaringan luar, dilarang menggunakan masquerade
#(diterapkan di tugu_pahlawan)
iptables -t nat -A POSTROUTING -i eth2 -o eth0 -j SNAT
iptables -t nat -A POSTROUTING -i eth3 -o eth0 -j SNAT
iptables -A FORWARD -i eth2 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth3 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -j DROP
j)
#catat semua log yang di drop oleh firewall
#(diterapkan di setiap router yang melakukan firewall)
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
iptables -A OUTPUT -j LOG
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
nice min
BalasHapusSolder uap