Kamis, 16 Agustus 2012

Konfigurasi IPTables pada Linux CentOS 5.4


IPTables pada Linux CentOS 5.4

IPTables digunakan untuk membuat, memelihara, dan menganalisa tabel‐tabel aturan pemfilteran paket IP di kernel Linux. Fitur utama dari IPTables adalah stateless packet filtering (IPv4 dan IPv6), stateful packet filtering (IPv4 dan IPv6), semua jenis Network Address dan Port Translation, memiliki infrastruktur yang fleksible dan dapat diperluas, memiliki beberapa  lapisan API untuk ekstensi pihak ketiga, memiliki banyak plugin/modul.

IPTables dapat digunakan untuk membangun firewall Internet berdasarkan pada stateless dan stateful packet filtering, untuk Network Address Translation (NAT) dan masquerading untuk berbagi pakai akses Internet, untuk implementasi transparent proxy, membantu utilitas tc dan iproute2 untuk membangun Quality of Services (QoS) dan kebijakan pada router, melakukan manipulasi paket lanjutan (mangling) seperti mengubah bit TOS/DSCP/ECN dari header IP.

Pemrosesan Paket pada IPTablesSemua paket dianalisa oleh iptables melalui serangkaian tabel‐tabel built‐in (bawaan) untuk pemrosesan. Terdapat 3 tabel yaitu:
a) Tabel Filter, digunakan untuk melakukan pemfilteran paket. Terdapat 3 chain built‐in,untuk menempatkan kebijakan aturan firewall, yaitu:
⇒ Forward Chain, memfilter paket ke server yang diproteksi oleh firewall.
⇒ Input Chain, memfilter paket yang ditujukan untuk firewall.
⇒ Output Chain, memfilter paket yang berasal dari firewall.

b) Tabel NAT (Network Address Translation), digunakan untuk melakukan translasi alamatjaringan. Tabel ini memiliki 2 chain bawaan, yaitu:
⇒ Pre‐routing chain, melakukan NAT pada paket ketika alamat tujuan dari paket perlu diubah.
⇒ Post‐routing chain, melakukan NAT pada paket ketika alamat sumber dari paket  perlu diubah.
c) Tabel Mangle, digunakan untuk mengatur Quality of Service (QoS).Saat membuat aturan firewall menggunakan iptables, perlu ditentukan tipe tabel dan chain yang digunakan, defaultnya adalah tabel filter. Masing‐masing aturan firewall menganalisa
masing‐masing paket IP dan selanjutnya mencoba untuk mengidentifikasi target. Setelah targe diidentifikasi, paket perlu diproses lebih lanjut (jump).
Target yang digunakan oleh iptables antara lain:
Target Keterangan
ACCEPT IPTables menghentikan pemrosesan lanjutan, paket ditangani oleh aplikasi akhir, atau oleh system operasi untuk pemrosesan.
DROP IPTables menghentikan pemrosesan lanjutan, dan paket akan ditolak.
REJECT Sama seperti DROP, tetapi juga akan mengembalikan pesan kesalahan ke host yang mengirim paket yang ditolak.
LOG Melakukan pencatatan (log) informasi paket ke daemon syslog
DNAT Digunakan untuk melakukan translasi alamat IP tujuan, sebagai contoh menulis ulang alamat IP tujuan dari paket.
SNAT Digunakan untuk melakukan translasi alamat IP sumber, sebagai contoh menulis ulang alamat IP sumber dari paket. Alamat IP sumber didefinisikan oleh sumber
MASQUERADE Digunakan untuk melakukan translasi alamat jaringan sumber. Defaultnya alamat IP sumber adalah alamat IP yang digunakan oleh interface firewall.

Kriteria Pencocokan IPTablesIPTables Options Keterangan
‐t <‐table‐> Menentukan tipe table yaitu filter, nat, & mangle. Defaultnya adalah
filter.
‐j <target> Jump ke target chain yang ditentukan ketika paket dicocokkan dengan
aturan saat ini.
‐A Menambahkan aturan di akhir dari chain.
‐F Flush, menghapus semua aturan di table terpilih
‐p <‐jenis protocol‐> Mencocokkan protocol, seperti tcp, udp, icmp, dan all (semuanya).
‐s <‐alamat‐ip‐> Mencocokkan alamat ip sumber
‐d <‐alamat‐ip‐> Mencocokkan alamat ip tujuan
‐i <‐interface‐> Mencocokkan interface masuk dimana paket masuk
‐o <‐interface‐> Mencocokkan interface keluar dimana paket keluar
‐p tcp –sport <‐port‐> Port sumber adalah TCP, dapat berupa sebuah port atau jangkauan dengan format: port‐awal:port‐akhir
‐p tcp –dport <‐port‐> Port tujuan adalah TCP, dapat berupa sebuah port atau jangkauan dengan format: port‐awal:port‐akhir
‐p tcp –syn Digunakan untuk mengidentifikasi permintaan koneksi TCP baru.
‐p udp –sport <‐port‐> Port sumber adalah UDP, dapat berupa sebuah port atau jangkauan dengan format: port‐awal:port‐akhir
‐p udp –dport <‐port‐> Port tujuan adalah UDP, dapat berupa sebuah port atau jangkauan dengan format: port‐awal:port‐akhir
‐m –state <‐state‐> Bagian (state) yang sering diuji adalah:
ESTABLISHED, paket adalah bagian dari koneksi yang telah
berlangsung.
NEW, paket memulai koneksi yang baru.
RELATED, paket memulai koneksi kedua yang baru.
INVALID, paket tidak dapat diidentifikasi.
Langkah pertama untuk menggunakan iptables

Menggunakan IPTables adalah dengan menjalankan service iptables
menggunakan perintah berikut:
# service iptables start
Catatan:
Service iptables saat dijalankan (start), akan mengeksekusi isi dari file /etc/sysconfig/iptables. Apabila file ini tidak ditemukan, maka service iptables tidak akan dapat dijalankan (status service tetap tidak aktif/stop). Untuk itu perlu dibuat file kosong dengan nama “iptables” pada direktori /etc/sysconfig, dan mengatur ijin akses agar hanya user root yang dapat melakukan
perubahan pada file tersebut.
# touch /etc/sysconfig/iptables
# chmod 600 /etc/sysconfig/iptables
# service iptables start

Untuk memverifikasi status service iptables telah aktif, eksekusi perintah berikut:
# service iptables status
Untuk menghentikan service iptables, eksekusi perintah berikut:
# service iptables stop
Untuk mengaktifkan service iptables saat booting, maka perlu dilakukan perubahan status
runlevel ke mode on menggunakan utilitas chkconfig.
# chkconfig –level 345 iptables on
Untuk memverifikasi status service iptables telah aktif (mode on) pada run level 345, eksekusi
perintah berikut:
# chkconfig –list iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Membuat Aturan IPTables
Membersihkan tabel filter
# iptables ‐F
Membersihkan tabel nat
# iptables ‐t nat ‐F
Membersihkan tabel mangle
# iptables ‐t mangle ‐F
Mengatur default policy untuk tabel INPUT dengan target DROP
# iptables ‐P INPUT DROP
Mengatur default policy untuk tabel FORWARD dengan target DROP
# iptables ‐P FORWARD DROP
Mengatur default policy untuk tabel OUTPUT dengan target ACCEPT
# iptables ‐P OUTPUT ACCEPT
Mengijinkan trafik dari interface loopback
# iptables ‐A INPUT ‐i lo ‐j ACCEPT
Mengijinkan trafik DHCP Client Request
# iptables ‐A INPUT ‐i eth0 ‐p udp ‐‐dport 67:68 ‐‐sport 67:68 ‐j ACCEPT
Mengijinkan permintaan ping request
# iptables ‐A INPUT ‐p icmp ‐‐icmp‐type echo‐request ‐j ACCEPT

Mencatat paket apapun yang masuk pada eth0, yang berasal dari lokal atau jaringan yang tidak bisa dirutekan. Apabila salah satu dari alamat jaringan lokal berikut digunakan pada jaringan
saat ini, abaikan aturan tersebut
# iptables ‐A INPUT ‐i eth0 ‐s 10.0.0.0/8 ‐j LOG ‐‐log‐prefix "IP DROP SPOOF A: "
# iptables ‐A INPUT ‐i eth0 ‐s 172.16.0.0/12 ‐j LOG ‐‐log‐prefix "IP DROP SPOOF B: "
# iptables ‐A INPUT ‐i eth0 ‐s 192.168.0.0/16 ‐j LOG ‐‐log‐prefix "IP DROP SPOOF C: "
# iptables ‐A INPUT ‐i eth0 ‐s 224.0.0.0/4 ‐j LOG ‐‐log‐prefix "IP DROP SPOOF D: "
# iptables ‐A INPUT ‐i eth0 ‐s 240.0.0.0/5 ‐j LOG ‐‐log‐prefix "IP DROP SPOOF E: "
# iptables ‐A INPUT ‐i eth0 ‐d 127.0.0.0/8 ‐j LOG ‐‐log‐prefix "IP DROP LOOPBACK "

Mengijinkan koneksi apapun yang telah terbentuk# iptables ‐A INPUT ‐m state ‐‐state ESTABLISHED,RELATED ‐j ACCEPT
Mengijinkan akses WWW
#iptables ‐A INPUT ‐m state ‐‐state NEW ‐m tcp ‐p tcp ‐‐dport 80 ‐j ACCEPT
Mengijinkan akses FTP
# iptables ‐A INPUT ‐m state ‐‐state NEW ‐m tcp ‐p tcp ‐‐dport 21 ‐j ACCEPT
Mengijinkan akses FTP Data
# iptables ‐A INPUT ‐m state ‐‐state NEW ‐m tcp ‐p tcp ‐‐dport 20 ‐j ACCEPT
Mengijinkan akses SSH
# iptables ‐A INPUT ‐m state ‐‐state NEW ‐m tcp ‐p tcp ‐‐dport 22 ‐j ACCEPT
Mengijinkan akses Telnet
# iptables ‐A INPUT ‐m state ‐‐state NEW ‐m tcp ‐p tcp ‐‐dport 23 ‐j ACCEPT
Mengijinkan akses TFTP
# iptables ‐A INPUT ‐m state ‐‐state NEW ‐m udp ‐p udp ‐‐dport 69 ‐j ACCEPT

Mengaktifkan pencatatan paket yang masuk (logging)# iptables ‐A INPUT ‐j LOG
Mengaktifkan pencatatan hanya pada paket masuk yang tidak diinginkan
# iptables ‐A INPUT ‐j DROP
Menampilkan daftar aturan IPTables yang saat ini dijalankan
# service iptables status
Agar output dari hasil eksekusi perintah diatas ditampilkan dalam format layar per layar,
gunakan perintah berikut:
# service iptables status | more
Untuk menampilkan daftar aturan IPTables yang saat ini dijalankan juga dapat menggunakan
perintah berikut:
# iptables –L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Hasil output dari eksekusi perintah diatas hanya menampilkan daftar aturan untuk table filter.

Untuk menampilkan daftar aturan IPTables untuk table nat, eksekusi perintah berikut:# iptables –L –t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Untuk menampilkan daftar aturan IPTables untuk table mangle, eksekusi perintah berikut:
# iptables –L –t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Menyimpan aturan IPTablesAturan firewall disimpan pada file /etc/sysconfig/iptables. File ini akan dieksekusi saat komputer booting, dan saat service iptables di‐start atau direstart. Untuk menyimpan aturan IPTables, eksekusi perintah berikut:
# service iptables save
Aturan firewall IPTables perlu disimpan karena aturan tersebut hanya berlaku saat computer tersebut aktif (disimpan sementara di memory), sehingga apabila computer tersebut di‐restart atau dimatikan, maka aturan tersebut akan dibersihkan.
Troubleshooting IPTables
Salah satu metode yang dapat digunakan untuk melakukan troubleshooting IPTables adalah dengan melakukan pencatatan (log) semua paket yang dibuang menggunakan target LOG. Target LOG dapat digunakan untuk melacak paket‐paket yang bergerak melalui aturan IPTables. Semua trafik yang sesuai dengan aturan IPTables dimana ia ditempatkan akan di‐log, dan disimpan pada file /var/log/messages.
Untuk mencatat hanya trafik yang tidak diinginkan, perlu ditambahkan aturan yang sesuai dengan target DROP setelah aturan LOG.
Berikut adalah contoh penggunaan target LOG untuk mencatat paket pada table OUTPUT, INPUT, dan FORWARD, kemudian dilanjutkan dengan penggunaan target DROP untuk hanya mencatat (log) paket‐paket yang dibuang atau tidak diinginkan pada table OUTPUT, INPUT, dan FORWARD:
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

x

1 komentar: