pengantar dasar iptables

Firewall adalah suatu aturan yang diterapkan baik terhadap hardware, software atau pun sistem itu sendiri dengan tujuan untuk melindungi, baik dengan melakukan filterisasi, membatasi, ataupun menolak suatu koneksi pada jaringan yang dilindunginya dengan jaringan luar.


Tipe-tipe firewall dibedakan berdasarkan mekanisme atau cara kerja firewall :

  • packet filtering gateway : berrtugas melakukan filterisasi terhadap paket-paket yang datang dari luar jaringan yang dilindunginya
  • application level gateway : juga disebut proxy firewall, mekanisme tidak hanya berdasarkan sumber, tujuan dan atribut paket tapi bisa mencapai isi (content) paket tersebut
  • circuit level gateway : bekerja pada bagian Transport Control Protocol (TCP) Layer pada lapisan TCP/IP. Firewall akan melakukan pengawasan terhadap awal hubungan TCP yang biasa disebut sebagai TCP handshaking untuk menetukan apakah ses ihubungan tersebut diperbolehkan atau tidak
  • statefull multilayer inspection firewall : model ini adalah penggabungan dari ketiga firewall diatas, firewall ini bekerja pada lapisan aplikasi, lapisan TCP dan lapisan internet protocol

IPTABLES adalah salah satu firewall yang ada di linux, kegunaan iptables antara lain :

  • dapat melakukan perhitungan terhadap paket dan menerapkan prioritas trafik berdasarkan jenis layanan (servis)
  • dapat di gunakan untuk mendefinisikan sekumpulan aturan keamanan berbasis port untuk mengamankan host-host tertentu
  • dapan digunakan untuk membangun sebuah router atau gateway

.

STRUKTUR PENULISAN IPTABLES :

iptables -t [table] command [chain] parameter target

contoh :

iptables -t filter -A INPUT -s 192.168.1.1 -j DROP

.

TABLE

Dalam Iptables terdapat tiga daftar table bawaan yaitu :

  • filter : ini adalah tabel default, mengandung INPUT, OUPUT, dan FORWARD (biasa di sebut chain INPUT, chain OUTPUT, dan chain FORWARD)
  • nat : digunakan untuk membuat gateway, SNAT untuk mengubah alamat IP pengirim, biasanya dijadikan gateway menuju ke internet, DNAT kebalikan dari SNAT
  • mangle : digunakan untuk menandai paket-paket untuk digunakan di proses-proses selanjutnya

.

COMMAND

-A : append

Perintah ini menambahkan aturan pada akhir aturan-aturan yang telah dibuat

contoh : iptables -A INPUT

-D : delete

Perintah ini menghapus satu baris aturan yang telah dibuat. Dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus.

Contoh : iptables –D INPUT 1

Iptables –D –s 192.168.1.3

-R : replace

Penggunaannya sama seperti delete, tetapi command ini menggantinya dengan entry yang baru pada urutan yang sama.

Contoh : iptables –R INPUT 2 –s 192.168.1.3 –j DROP

-I : insert

Memasukkan aturan baru pada suatu baris aturan yang penempatannya sesuai dengan perintah yang kita masukkan dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula baris-baris selanjutnya.

Contoh : iptables –I INPUT 3 –s 192.168.1.3 –j ACCEPT

-L : list

Perintah ini menampilkan semua aturan yang telah kita buat.

Contoh : iptables –t nat –L

-F : flush

Perintah inimenghapus semua aturan yang telah dibuat.

Contoh : iptables –F OUTPUT

-N : new-chain

Perintah tersebut akan membuat suatu kolom tabel baru.

Contoh : iptables –N eth0-IN

-X : delete-chain

Perintah ini akan menghapus satu kolom tables yang dibuat dengan perintah -N. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada kolom tersebut.

Contoh : iptables –x eth0-IN

-P : policy

Perintah ini membuat kebijakan default pada sebuah tabel. Sehingga jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default ini.

Contoh : Iptables –P INPUT DROP

-E : rename-chain

Perintah ini akan merubah nama suatu kolom tabel. Kolom yang dibuat dengan –N

Contoh : iptables –E eth0_IN eth0_masuk

-h : help

menampilkan help/bantuan pada iptables

.

PARAMETER

Membuat satu baris aturan pada iptables menjadi lebih spesifik

-p : protocol

Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols. Tanda ! bisa digunakan, misal kita menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan -p ! icmp yang berarti semua kecuali icmp.

Contoh : iptables -A INPUT -p tcp …

iptables -A INPUT -p ! tcp …

-s : source

Digunakan untuk mencocokkan paket berdasarkan alamat IP asal/sumber. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal 192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x. Kita juga bisa menggunakan inversi.

Contoh : iptables -A INPUT -s 192.168.1.3 …

-d : destination

Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan –s

contoh : iptables -A INPUT -s 192.168.1.3 …

-j : jump

berguna untuk menentukan nasib paket, apakah paket akan diterima (ACCEPT), ditolak (DROP), dikembalikan (RETURN), dll

contoh : iptables -A INPUT -j DROP

-i : in-interface

berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD

contoh : iptables -A INPUT -i eth0

-o : out-interface

Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan -i. Berlaku untuk chain OUTPUT, FORWARD

contoh : iptables -A OUTPUT -o eth1

.

TARGET

Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria. Atau sebagai penentu nasib suatu paket

ACCEPT

setiap paket akan diterima oleh firewall dan akan diteruskan ke tujuan dari paket tersebut

contoh : iptables -A INPUT -p tcp -–dport 80 -j ACCEPT

DROP

akan membuang setiap paket yang diterima tanpa mengirimkan pesan ke pengirim paket

contoh : iptables -A INPUT -p tcp -–dport 80 -j DROP

RETURN

akan menolak setiap paket yang diterima tapi firewall akan mengirimkan pesan ICMP errror kepada pengirim paket, defaultnya berupa port-unreachable pesan dapat dirubah misal icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, icmp-net-prohibited, dll

contoh : iptables -A INPUT -p tcp -–dport 80 -j REJECT –reject-with icmp-net-unreachable

LOG Target

Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err, crit, alert dan emerg.Yang kedua adalah -j LOG –log-prefix yang digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.

Contoh :

iptables –A FORWARD –p tcp –j LOG –log-level debug

iptables –A INPUT –p tcp –j LOG –log-prefix “INPUT Packets”

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

MASQUERADE Target

Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option –to-source. MASQUERADE memang didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah.

Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.

Contoh : iptables –t nat –A POSTROUTING –o eth0 -dport 80 –j MASQUERADE

REDIRECT Target

Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari kedua chain tersebut.

Contoh : iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128

iptables -t nat -A PREROUTING -p tcp -d 0/0 –dport 80 -j REDIRECT –to-port 8080

.

.

LATIHAN MENGGUNAKAN IPTABLES

TABLE OUTPUT

pertama kita coba ping ke http://www.google.com :

[root@localhost ~]# ping http://www.google.com

setelah itu ketikan baris iptables berikut :

[root@localhost ~]# iptables -A OUPUT -d http://www.google.com -j DROP

kemudian kita coba ping lagi http://www.google.com :

[root@localhost ~]# ping http://www.google.com

penjelasan dari baris iptables di atas :

iptables memanggil iptables -A OUPUT menambah aturan baru pada kolom OUTPUT pada table FILTER -d http://www.google.com paket yang dituju -j DROP dibuang

———————-

untuk melihat rule yang kita tambahkan pada table output :

[root@localhost ~]# iptables -L OUTPUT

———————-

untuk membersihkan semua aturan yang telah dibuat

[root@localhost ~]# iptables -F

———————-

sekarang coba ping kembali ke google, jika bisa ketikkan bari iptables di bawah ini :

[root@localhost ~]# iptables -A OUPUT -p tcp -d http://www.google.com -j DROP

kemudian coba ping kembali ke google

[root@localhost ~]# ping http://www.google.com

ternyata masih bisa, disini bisa coba kita lihat pada tulisan -p tcp pada baris di atas artinya yang akan di drop adalah protokol tcp, sedangkan ping menggunakan protokol ICMP

.

TABLE INPUT

hapus semua rule yang sudah kita buat sebelumnya

[root@localhost ~]# iptables –F

———————-

sekarang coba ketikan baris iptables di bawah :

[root@localhost ~]# iptables -t filter -A INPUT -s 192.168.1.100 -j DROP

atau

[root@localhost ~]# iptables -A INPUT -s 192.168.1.100 -j DROP

(ip pada baris di atas cuma contoh, bisa di ganti dengan ip pada komputer kita masing-masing)

jika sudah coba ping komputer kita dari komputer dengan ip 192.168.1.100, bisa di lihat bahwa komputer dengan ip 192.168.1.100 tidak dapat melakukan ping ke kompuer kita,

———————-

sekarang bersikan rule yang sudah kita buat

———————-

kemudian coba jalankan rule dibawah

[root@localhost ~]# iptables -A INPUT -s ! 192.168.1.100 -j DROP

arti dari rule di atas akan menolak semua paket yang masuk ke komputer kita kecuali dari ip 192.168.1.100

———————-

.

contoh lain penerapan iptables :

[root@localhost ~]# iptables -A INPUT -s 192.168.1.100 -o eth1 -j DROP

menolak semua paket yang masuk dari 192.168.1.100 yang menuju jaringan eksternal melalui ethernet ke 2

———————-

[root@localhost ~]# iptables -A INPUT -s 192.168.1.0/255.255.255.0 -p ICMP -j DROP

menolak paket-paket yang memanfaatkan protokol icmp dari jaringan kelas C dengan IP 192.168.1.0/24

———————-

[root@localhost ~]#iptables -A INPUT -s ! 192.168.1.0/24 -p tcp -dport 80 -syn -j DROP

menolak semua paket tcp syn dari jaringan local, melakukan penghadangan terhadap semua peket yang digunakan untuk meminta koneksi TCP ke web server yang berjalan pada port 80

———————-

[root@localhost ~]# iptables -L INPUT

melihat daftar rule pada chain INPUT

———————-

[root@localhost ~]# iptables -D INPUT 3

menghapus rule ke 3 pada chain INPUT

———————-

[root@localhost ~]# iptables -D INPUT -s 192.168.1.100 -j DROP

menghapus rule pada chain INPUT dengan ip sumber 192.168.1.100

———————-

[root@localhost ~]# iptables -A INPUT -p ICMP -s 192.168.1.3 -j DROP

membuang semua koneksi icmp dari 192.168.1.3

———————-

[root@localhost ~]# iptables -A INPUT -p tcp -s 192.168.1.100 -j DROP

membuang semua koneksi tcp dari 192.168.1.100

———————-

[root@localhost ~]# iptables -A INPUT -p udp -s 192.168.1.0 -j DROP

membuang semua koneksi udp

———————-

[root@localhost ~]# iptables -A INPUT -p telnet -s 192.168.1.1 -j DROP

menutup port telnet

———————-

[root@localhost ~]# iptables -A INPUT -p TCP -s 192.168.0.1/192.168.0.15 -j ACCEPT

menerima paket TCP dari range ip address 192.168.0.1 sampai 192.168.0.15

———————-

[root@localhost ~]# iptables -A INPUT -m iprange –src-range 192.168.1.90-192.168.1.223 -j DROP

membuang paket TCP dari range ip address 192.168.0.90 sampai 192.168.0.223

———————-

[root@localhost ~]# iptables -A INPUT -p tcp –dport 1214:1216 -j REJECT

menutup port 1214-1216

———————-

.

catatan : semua rule diatas akan hilang apabila komputer restart, cara menyimpan script berisi rule iptables yang sudah kita buat agak sedikit berbeda pada tiap distro linux

  • pada redhat atau FC4 kita dapat membuat rule-rule iptables kita menggunakan teks editor kemudian save di /etc/sysconfig/iptables
  • pada debian kita bisa mengetikan rule iptables kita di terminal kemudian cek rule yang sudah kita buat

iptables -L

jika rule yang kita buat sudah sesuai dengan kebutuhan baru kita simpan rule tersebut

iptables-save > /etc/iptables.conf

agar script iptables yang kita buat berjalan saat booting :

echo “!/bin/sh” > /etc/network/if-up.d/iptables

echo “iptables-restore < /etc/iptables.conf” >> /etc/network/if-uo.d/iptables

chmod +x /etc/network/if-up.d/iptables

sekarang reboot komputer, mudah mudahan jalan iptables nya hihihii

untuk mengecek bisa gunakan iptables -L

  • pada slackware letakkan di /etc/rc.d/rc.firewall

.

/*semoga bermanfaat*/

2 thoughts on “pengantar dasar iptables

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: