IPTABLES On LINUX Tulisan ini ditujukan untuk memberikan pengetahuan dasar mengenai pemfilteran paket menggunakan IPTables pada Linux. Tulisan ini bersifat general yang menjelaskan secara umum bagaimana sintaks IPTables dibuat. Beberapa (banyak?) bagian dari tulisan diambil dari official site IPTables. Tidak ada copyright apapun dalam dokumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli).Semoga bermanfaat.
1. Persiapan
Sebelum mulai, diharapkan pembaca sudah memiliki pengetahuan dasar mengenai TCP/IP karena hal ini merupakan dasar dari penggunaan IPTables. Ada (sangat) banyak resource yang mendokumentasikan konsep dasar tentang TCP/IP, baik itu secara online maupun cetak. Silahkan googling untuk mendapatkannya.
Hal berikutnya yang harus anda persiapkan adalah sebuah komputer yang terinstall Linux. Akan lebih baik jika komputer anda memiliki 2 buah network interface card, sebab bisa menjalankan fungsi packet forwarding. Disarankan anda menggunakan linux dengan kernel 2.4 ke atas, karena (setahu saya) linux dengan kernel 2.4 ke atas sudah memiliki dukungan IPTables secara default, sehingga anda tidak perlu mengkompilasi ulang kernel anda. Bagi anda yang menggunakan kernel 2.2 atau sebelumnya, anda harus melakukan kompilasi kernel untuk memasukkan dukungan IPTables.
2. Pendahuluan
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.
Pada diagram tersebut, lingkaran menggambarkan ketiga rantai atau chain. Pada saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Rantai akan memutuskan nasib paket tersebut. Apabila keputusannnya adalah DROP, maka paket tersebut akan di-drop. Tetapi jika rantai memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.
Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan “jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket”. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT.
Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut:
Perjalanan paket yang diforward ke host yang lain
1. Paket berada pada jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk me-mangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain.
4. Paket masuk ke chain PREROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan DNAT (Destination Network Address Translation).
5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain.
6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi.
7. Paket masuk ke chain POSTROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation).
8. Paket keluar menuju interface jaringan, contoh eth1.
9. Paket kembali berada pada jaringan fisik, contoh LAN.
Perjalanan paket yang ditujukan bagi host lokal
1. Paket berada dalam jaringan fisik, contoh internet.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada tabel mangle.
4. Paket masuk ke chain PREROUTING pada tabel nat.
5. Paket mengalami keputusan routing.
6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan.
7. Paket akan diterima oleh aplikasi lokal.
Perjalanan paket yang berasal dari host lokal
1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan.
2. Paket memasuki chain OUTPUT pada tabel mangle.
3. Paket memasuki chain OUTPUT pada tabel nat.
4. Paket memasuki chain OUTPUT pada tabel filter.
5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana.
6. Paket masuk ke chain POSTROUTING pada tabel NAT.
7. Paket masuk ke interface jaringan, contoh eth0.
8. Paket berada pada jaringan fisik, contoh internet.
3. Sintaks IPTables
iptables [-t table] command [match] [target/jump]
DIarsipkan di bawah: Sekuriti
Mas Agung,
Saya mencoba bikin masquerading antara jar 192.168.101.0/24 — 10.252.30.0/24 — 10.252.10.0/24
Ada 2 client 192.168.101.10
dan 10.252.10.10
NAT router berada pada
eth1 192.168.101.101/24
eth0 10.252.30.101/24
Router Luar berada
eth0 10.252.30.30/24
eth0:1 10.252.10.30/24
pd 2 router ditambahkan ip_forwarding = 1
Masq dilakukan dg
iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -s 192.168.101.0/24 -d 0/0
saya bisa melakukan masquerada karena pada nat, ktk dipakai ethereal saya dpt melihat masking ip dari jar dalam nat menjadi jar luar nat saat melakukan ping dari dalam ke luar
masalahnya saya dpt melakukan ping dari luar ke dalam. Seharusnya tidak…
bahkan ftp server di client dalam dpt diakses oleh client luar.
kenapa ya…?
mungkin mas agung bisa membantu.
Fitri
kalau Saya melihat Data dari jenengan, kesalahannya adalah pada network eth0:1 10.252.10.30/24.
Seharusnya eth1:1 10.252.10.0/24
Coba dicek. jelas bisa di ping dari luar karena ip 10.252.10.0 dimasukkan dalam eth0 yang itukan berhubungan keluar.
dari data anda saya bisa menyimpulkan sementara seperti ini :
Data Router :
Destination Gateway Genmask device
10.252.10.0 0.0.0.0 255.255.255.0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 eth1
10.252.30.0 0.0.0.0 255.255.255.0 eth0
0.0.0.0 10.252.30.30 0.0.0.0 eth0
Itu IP Routingnya kalau saya nggak salah (coba dicek dengan route -n).
nah disitu IP 10.252.30.0/24 anda masukkan sebagai client padahal devicenya terletak di eth0 (publik) makanya dari luar dan dari dalam bisa diping.
untuk blok Ping bisa ditambahkan di iptables
# iptables -t filter -A INPUT -d 10.252.30.0/24 -p icmp -m icmp –icmp-type 8 -j DROP
# iptables -t filter -A INPUT -d 192.168.101.101/24 -p icmp -m icmp –icmp-type 8 -j DROP
Saya jamin langsung tidak bisa di ping ke router.
Kalau di ICT Center Temanggung sudah pakai Shorewall jadi lebih enak ngontrol trafficnya
Ngomong-omong mbak !
jenengan Magang dimana ?
saLam Mas Agung….saya awam tentang iptables dan gag tau apa yang mesti dijalankan setelah saya selesai menginstall iptables…mohon bantuannya..
TKs
Kalau jenengan Install Linux Terkenal pasti sudah ada Iptablesnya, gak perlu diinstall
Tergantung anda mau mengatur apa ?
block, atau meneruskan paket dan sebagainya
gue juga mau nanya om..
saya dari Programmer skrg ke Network engineer ..waduh2 ternyata ribet jg jadi NEsebelumnya maaf kalo tanya banyak:
saya ada IP dari ISP :
202.43.249.105 / 255.255.255.224
GW : 202.43.249.xx
DNS : 202.43.252.xxx dan 202.43.252.xxx
ada PC dengan 2 ethernet dg eth 0 IP nya spt diatas dan eth 1 IPnya 192.168.0.1 / 255.255.255.0 / GW : –
DNS : sama spt diatas eth 0 mendapat input dari radio dan eth 1 ke switch sehingga di user saya tinggal set gatewaynya ke 192.168.0.1 agar bisa internet
rencananya saya akan menggunakan iptables untuk membuat rule baru sehingga tidak semua user bisa internet / menggunakan port seenaknya, juga mendisabled proxy port yang biasa digunakan [80]. dan mengganti dengan port yang lain untuk internet.
misal ip : 192.168.0.10 bisa internet juga port telnet dibuka sementara 192.168.0.11 denied untuk semua koneksi
mohon panduannya untuk rule tersebut.
…saya sudah coba membuat tapi kenapa user yang sudah di blok masih bisa internet ya ?..
Thx
Saya mau nanya mas agung,
Kasusnya,
Di PC Linux Server saya ada 2 card yaitu eth0 ( ethernet card ) dan rausb1 ( wireless card ) dan ada 1 komputer client OS windows dengan 1 ethernet card.
Saya hendak mengkoneksikan internet yang diterima dari rausb1 ( wireless card ) dengan ethernet card pada komputer client.
Ipaddress untuk wireless (rausb1) adalah 192.168.4.101
Ipaddress untuk eth0 adalah 192.168.4.102
Ipaddress untuk eth0 pada client adalah 192.168.4.103
Untuk wireless, sudah ditetapkan gateway-nya 192.168.4.1 dengan proxy tersendiri ( proxy ini bisa diatur dengan browser client tentunya )
Apa saya perlu membuat gateway-nya pada eth0 server tersendiri? untuk client windows pake gateway yang mana?
thanks
yodi.web.ugm.ac.id
- For everything free -
Buat Mas Yodi :
membaca penjelasanmas Yodi, mungkin bisa saya simpulkan demikian :
Destination Gateway Genmask iface
192.168.4.0 0.0.0.0 255.255.255.0 eth0
192.168.4.0 0.0.0.0 255.255.255.0 eth1
dimana menurut penjelasan anda eth0 adalah ethernet card dan eth1 adalah ethernet wireless.
dengan demikian
Hal tersebut harus membutuhkan Bridge untuk bisa menggabungkan 2 buah Interface ethernet 1dan ethernet 0.
Lebih baiknya anda memisahkan dengan seperti ini
eth1 (wireless) ip 192.168.4.101
kemudian eth0 diset IP network lain misalnya 192.168.10.10
dengan begitu akan lebih mudah untuk di masquerade
kemudian anda ketikdi linux seperti itu (shell)
echo 1 >/proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf
edit ip_forward menjadi 1 (default 0) kemudian tekan ctrl+c terus ketik :wq enter.
edit iptabes
iptables -t nat -A POSTROUTING -o eth1 -s eth0 -j MASQERADE
itu saja
bis ajuga di simpan di /etc/sysconfig/iptables (kalau Redhat).
Itu Dulu, maap jawabnya singkat soalnya lagi buru-buru dipanggil BOS..