Wednesday, May 16, 2007

iptables

Bermula dari Linux kernel 2.0, ramai yang menggunakan PC menggantikan router dan firewall komersil. Bagi yang mempunyai rangkaian yang kecil dan sederhana, PC dengan Linux adalah sangat sesuai menjadi gateway/router. Apabila kernel berubah, perubahan berlaku kepada kod NAT dan yang terlibat :

1. Linux kernel 2.0.x --> ipfwadm
2. Linux kernel 2.2.x --> ipchains
3. Linux kernel 2.4.x --> iptables

Saya akan menceritakan tentang iptables dalam kernel 2.4.x.

iptables mempunyai 3 'built-in chains' :

1. INPUT 2. OUTPUT 3. FORWARD

Paket2 pula dipecahkan kepada 3 jenis :

1. paket yang berhenti di firewall
2. paket yang datang dari firewall
3. paket yang melalui firewall

PC linux kita jadikan firewall dan katakan anda mempunyai satu rangkaian (LAN) seperti di cybercafe. firewall ini juga adalah gateway kepada semua PC dalam LAN untuk ke internet. gateway sahaja yang mempunyai sambungan ke internet dengan mendail ke ISP dengan modem (ppp0).

Senario 1:
-----------
Anda hendak semua PC dalam LAN mendapat internet dengan berkongsi sambungan internet melalui gateway. Katakan gateway mempunyai IP dinamik.

CODE
#iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


Dengan target MASQUERADE (-j MASQUERADE), kita memberitahu iptables, jika sambungan internet terputus, lupakan sambungan lama dengan IP lama, dan gantikan dengan buat sambungan baru dengan IP baru (dengan peraturan yang sama).

Senario 2:
-----------
Sama macam senario 1 tetapi gateway mempunyai IP tetap (fixed IP/static IP). Katakan IP itu ialah 1.2.3.4

CODE
#iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 1.2.3.4


Kita lihat terms dibawah :
SNAT (Source NAT)
----------------------
- menukarkan source destination dalam paket. Dalam paket yang dihantar ke internet dari LAN dalam contoh di atas, source IP (alamat komputer penghantar) ditukar kepada alamat gateway. Dengan cara ini, komputer penerima tidak tahu penghantar sebenar. Dia hanya tahu , penghantar ialah gateway. (Ini salah satu cara IP spoofing dilakukan)

Dari kedua-dua senario di atas, dapatlah kita fahami bahawa masquerading ialah salah satu bentuk SNAT.

DNAT (Destination NAT)
---------------------------
- menukarkan alamat destinasi dalam paket untuk sesuatu sambungan (connection). Lihat senario di bawah :

Senario 3
-----------
Anda hendak komputer luar dari LAN anda mencapai webserver anda yang berada dalam LAN. Katakan anda menggunakan private IP 192.168.0.2 untuk webserver anda.

CODE
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport www -j DNAT

--to-dest 192.168.0.2


Senario 4
-----------
Anda hendak komputer luar mencapai webserver anda yang juga bertindak sebagai gateway kepada LAN anda iaitu gateway dan webserver ialah komputer yang sama. Anda mahukan sesiapa capai webserver anda di gateway ini, anda hendak redirectkan paket supaya pergi ke port 8080 (biasanya squid dameon menunggu di sini).
CODE
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport www

-j REDIRECT --to-port 8080


Arahan diatas digunakan untuk menukarkan IP destinasi dengan port 80 (www) kepada IP destinasi yang sama tetapi port yang berlainan (8080).


Saya rasa cukup setakat ini dulu. Kalau ada masa nanti saya akan sambung dengan extension modules untuk iptables terutamanya state extension.

Enjoy!
-------------------------------------------------------------------------------
thanks to bro zamri

No comments: