Anda di halaman 1dari 13

KONFIGURASI FIREWALL MENGGUNAKAN METODE IPTABLES PADA LINUX

UBUNTU 12.04

Disusun Oleh :
Nama : Abdiansyah Rizki Amanda
NIM : 1204V001
Kelas : TKJ A

POLITEKNIK HARAPAN BERSAMA TEGAL


2014

1. PENGERTIAN IPTABLES
Menurut Wikipedia : IPTables adalah program aplikasi (berbasis linux) yang
memungkinkan administrator sistem untuk mengkonfigurasi tabel yang disediakan oleh firewall
kernel linux (diimplementasikan sebagai modul Netfilter yang berbeda) dan rantai dan aturan di
tempat itu. Modul kernel yang berbeda dan program yang saat ini digunakan untuk protokol
yang berbeda, iptables berlaku untuk IPV4, ip6tables ke IPV6, arptables ARP, dan ebtables ke
frame Ethernet.
IPTables membutuhkan hak akses yang tinggi untuk beroperasi atau melakukan
konfigurasi yang dijalankan oleh root pengguna, selain itu gagal.

2. TABLE
IPTables memiliki beberapa buah tabel yaitu NAT, MANGEL, dan FILTER.
Penjelasannya sebagai berikut :
a. Table Mangle adalah tabel yang bertanggung jawab untuk melakukan penghalusan
(mangle) paket seperti merubah quality of service (QOS), TTL, dan MARK di header
TCP. Biasanya tabel ini jarang digunakan di lingkungan SOHO (Small Office Home
Ofiice).
b. Table Filter adalah tabel yang bertanggung jawab untuk pemfilteran paket. Tabel ini
mempunyai 3 rantai (chain) yaitu :
- Rantai Forward yaitu rantai yang memfilter paket-paket yang akan ke server yang
dilindungi oleh firewall. Rantai ini digunakan ketika paket-paket dating dari IP Publik
dan bukan dari IP local.
c. Tabel NAT adalah tabel yang bertanggung jawab untuk melakukan Network Address
Translation (NAT). NAT yaitu mengganti field asal atau alamat tujuan dari sebuah
paket, pada tabel NAT terdapat 2 rantai yaitu :
- Rantai Pre-Routing adalah merubah paket-paket NAT dimana alamat tujuan dari
paket-paket tersebut terjadi perubahan. Biasannya dikenal dengan Destination NAT
atau (DNAT).

- Rantai Post-Routing adalah merubah paket-paket NAT dimana alamat sumber dari
paket tersebut terjadi perubahan. Biasanya dikenal dengan Source NAT atau
(SNAT).

3. KONSEP UMUM PADA IPTABLES


a. Perjalanan Paket yang diforward ke host yang lain
- Paket berada pada jaringan fisik (Network) dan masuk ke interface jaringan
- Paket masuk ke rantai PREROUTING pada tabel MANGLE dan tabel NAT
- Paket mengalami Routing apakah akan diproses oleh host lokal atau diteruskan ke
host lain
- Paket masuk ke rantai FORWARD pada tabel MANGLE dan tabel FILTER
- Paket masuk ke rantai POSTROUTING pada tabel MANGLE dan tabel NAT
- Paket kembali pada jaringan fisik (Network)
b. Perjalanan paket yang ditujukan bagi host local
- Paket berada pada jaringan fisik (Network) dan masuk ke interface jaringan
- Paket masuk ke rantai PREROUTING pada tabel MANGLE dan tabel NAT
- Paket mengalami Routing
- Paket masuk ke rantai INPUT pada tabel MANGLE dan tabel FILTER untuk
mengalami proses penyaringan
- Paket akan masuk ke proses lokal (Local Process)
c. Perjalanan paket yang berasal dari host local
- Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan
- Paket masuk ke rantai OUTPUT pada tabel MANGLE, lalu ke tabel NAT, kemudian
ke tabel FILTER
- Paket mengalami Routing
- Paket masuk ke rantai POSTROUTING pada tabel MANGLE dan tabel NAT
- Paket keluar menuju ke interface jaringan
- Paket kembali pada jaringan fisik (Network)

4. PERINTAH DAN KETERANGAN DARI SINTAKS PADA IPTABLES


a. Perintah Dasar
Perintah
-A
-append
-D
-delete
-R

Keterangan
Perintah ini menambahkan aturan pada akhir chain. Aturan akan
ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan
dieksekusi terakhir
Perintah ini menghapus suatu aturan pada chain. Dilakukan dengan cara
menyebutkan secara lengkap perintah yang ingin dihapus atau dengan
menyebutkan nomor baris dimana perintah akan dihapus.
Penggunaannya sama seperti delete, tetapi command ini menggantinya
dengan entry yang baru.

-replace
-I
-insert

Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan


pada baris yang disebutkan, dan aturan awal yang menempati baris
tersebut akan digeser ke bawah. Demikian pula baris-baris selanjutnya.

-L

Perintah ini menampilkan semua aturan pada sebuah tabel.

-list
-F

Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak
disebutkan, maka semua chain akan di-flush.

-flush
-N

Perintah tersebut akan membuat chain baru.

-new-chain
-X
-delete-chain
-P
-policy
-E
-rename-chain

Perintah ini akan menghapus chain yang disebutkan. Agar perintah di


atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain
tersebut.
Perintah ini membuat kebijakan default pada sebuah chain. Sehingga
jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris
yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan
kebijakan default ini.
Perintah ini akan merubah nama suatu chain.

b. Pilihan (Options)
Options

Perintah Dasar
-list
-append
-insert
-delete
-replace

Keterangan
Memberikan output yang lebih detail, utamanya digunakan
dengan list.

-list

Memberikan output yang lebih tepat.

-list

Memberikan output yang berbentuk angka. Alamat IP dan


nomor port akan ditampilkan dalam bentuk angka dan bukan
hostname ataupun nama aplikasi/servis.

-line-number

-list

Akan menampilkan nomor dari daftar aturan. Hal ni akan


mempermudah bagi kita untuk melakukan modifikasi aturan,
jika kita mau meyisipkan atau menghapus aturan dengan
nomor tertentu.

-modprobe

All

Memerintahkan IPTables untuk memanggil modul tertentu.


Bisa digunakan bersamaan dengan semua command.

-v
-verbose

-x
-exact

-n
-numeric

c. Generic Matches
Generic Matches artinya mendefinisikan perintah yang berupa karakter dan
berlaku secara umum, karena pendefinisian yang dimiliki setiap protocol memiliki
karakteristik yang berbeda, sehingga diperlukan suatu perintah yang umum digunakan
semua protocol.
Match

Keterangan

-p

Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang


umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat
pada /etc/protocols.

-prorocol

-s

Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP


asal.

-src
-source
-d

Digunakan untuk mecocokkan paket berdasarkan alamat tujuan.


Penggunaannya sama dengan match src.

-dst
-destination
-i

Match ini berguna untuk mencocokkan paket berdasarkan interface di


mana paket datang. Match ini hanya berlaku pada chain INPUT,
FORWARD dan PREROUTING

-in-interface

-o

-out-interface

Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket


keluar. Penggunannya sama dengan
in-interface. Berlaku untuk chain OUTPUT, FORWARD dan
POSTROUTING

d. Implicit Matches
Implicit Matches adalah karakter atau perintah untuk tipe protokol tertentu yang
bersifat khusus. Ada 3 implicit matches yang berlaku pada tiga jenis protokol, yaitu :
- TCP Matches
Match

Keterangan

-sport

Match ini berguna untuk mecocokkan


paket berdasarkan port asal. Dalam hal ini
kia bisa mendefinisikan nomor port atau
nama service-nya.

-source-port
-dport

Digunakan untuk mencocokkan paket


berdasarkan TCP flags yang ada pada paket
tersebut.

-destination-port
-syn

Match ini akan memeriksa apakah flag


SYN di-set dan ACK dan FIN tidak di-set.

- UDP Matches
Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang
mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. Paket
UDP juga tidak memerlukan acknowledgement. Sehingga Implicit Match untuk
protokol UDP lebih sedikit daripada TCP.
Ada dua macam match untuk UDP :
-sport atau -source-port
-dport atau -destination-port
Keterangan match seperti tabel TCP Matches

- ICMP Matches
Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisikondisi jaringan yang lain. Hanya ada satu implicit match untuk tipe protokol ICMP,
yaitu : -icmp-type
e. Ecplicit Matches
- MAC Address
Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC
source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang
menggunakan teknologi ethernet.
Contoh : iptables -A INPUT -m mac -mac-source 00:00:00:00:00:01
- Multiport Matches
Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range
lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa
port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching
standard dan multiport matching dalam waktu yang bersamaan.
Contoh : iptables -A INPUT -p tcp -m multiport -source-port 22,53,80,110
- Owner Matches
Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau
pemilik/owner paket tersebut.
Contoh : iptables -A OUTPUT m owner -uid-owner 500
- State Matches
Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku,
yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket
yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah
tersambung dan paket-paketnya merupakan bagian dari koneki tersebut. RELATED
digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan
dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah
koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan
merupakan bagian dari koneksi yang ada.

f. Target/Jump
Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang
memenuhi kriteria atau match. Jump memerlukan sebuah chain yang lain dalam tabel
yang sama. Chain tersebut nantinya akan dimasuki oleh paket yang memenuhi kriteria.
Analoginya ialah chain baru nanti berlaku sebagai prosedur/fungsi dari program utama.
Sebagai contoh dibuat sebuah chain yang bernama tcp_packets. Setelah ditambahkan
aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari
chain input.
Contoh : iptables -A INPUT -p tcp -j tcp_packets
Target

Keterangan

-j ACCEPT

Ketika paket cocok dengan daftar match dan target ini diberlakukan,
maka paket tidak akan melalui baris-baris aturan yang lain dalam
chain tersebut atau chain yang lain yang mereferensi chain tersebut.
Akan tetapi paket masih akan memasuki chain-chain pada tabel yang
lain seperti biasa.

-jump ACCEPT
-j DROP

Target ini men-drop paket dan menolak untuk memproses lebih jauh.
Dalam beberapa kasus mungkin hal ini kurang baik, karena akan
meninggalkan dead socket antara client dan server.

-jump DROP
-j RETURN

Target ini akan membuat paket berhenti melintasi aturan-aturan pada


chain dimana paket tersebut menemui target RETURN.

-jump RETURN
-j MIRROR

Target ini berfungsi membalik source address dan destination


address.

Beberapa target yang lain biasanya memerlukan parameter tambahan :


- LOG Target
- REJECT Target
- SNAT Target
- MASQUERADE Target
- REDIRECT Target

5. PEMBAHASAN MATERI
CONNECTION TRACKING pada IPTables adalah modul yang mengijinkan para
administrator untuk memeriksa dan membatasi service-service yang tersedia pada sebuah
jaringan internal. Fitur ini merupakan fitur baru di dalam firewall yang ditambahkan sejak kernel
2.4.x. Kemampuan dari connection tracking adalah untuk menyimpan dan menjaga informasi
koneksi seperti koneksi baru atau koneksi yang sudah ada yang disertai dengan jenis protokol,
alamat IP asal dan alamat IP tujuan. Dengan menggunakan fitur ini, para administrator dapat
menolak atau mengijinkan berbagai macam koneksi.
Connection tracking mempunyai beberapa keadaan:- NEW > Sebuah klien mereques
koneksi melalui firewall, yaitu :
- RELATED > Sebuah koneksi yang mereques sebuah reques baru tetapi masih merupakan
bagian dari koneksi yang sudah ada. Maksudnya server2 menerima paket SYN dari server
1

dan

kemudian

merespon

dengan

sebuah

paket

SYN-ACK

(Synchronize-

Acknowledgment).
- ESTABLISHED > Sebuah koneksi yang merupakan bagian dari koneksi yang sudah ada.
Maksudnya server 1 menerima paket SYN-ACK dan kemudian merespon dengan paket
ACK (Acknowledgment)
- INVALID > Sebuah keadaan dimana tidak ada keadaan seperti 3 keadaan di atas untuk
lebih jelasnya perhatikan contoh dibawah ini:
Misalnya kita ingin menggunakan service ftp pada IP=132.456.78.9, maka pada saat kita
mengetikkan.
5.1. Langkah-langkah
a. Koneksi ftp bukan pasif
- Masuk sebagai root

dengan perintah ($sudo su), tanpa karakter dollar jika

membutuhkan password silahkan ketik dan enter.


- Membuka koneksi baru dengan perintah (#ftp 192.168.10.12), karakter cresh atau pagar
menandakan akses sudah sebagai root.
- Koneksi terhubung dan mengambil file untuk percobaan koneksi, dengan perintah (get
file.tar.gz).

b. Koneksi ftp pasif


- Aktifkan mode passive, dengan menggunakan perintah (ftp > pass), keterangan ftp >
hanya memberitahu sedang menjalankan akses ftp.
- Dengan menggunakan Connection Tracking dapat mendefinisikan rule di chain tertentu,
maka trafik network yang terkait dengan rule tersebut tidak perlu disebutkan lagi.
Seandainya ingin menolak akses ssh dari sebuah ip, caranya adalah :
# iptables -I INPUT -m state -state RELATED,ESTABLISHED -j ACCEPT
# iptables -I OUTPUT -m state -state RELATED,ESTABLISHED -j ACCEPT
# iptables -I FORWARD -m state -state RELATED,ESTABLISHED -j ACCEPT

Dan dibawah ini kebalikannya, yaitu cara memberi izin akses ssh dengan ip tertentu,
caranya adalah :
# iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d 64.67.33.76 --dport 22 -m state -state NEW, ESTABLISHED - j ACCEPT
# iptables -A OUTPUT -p tcp -s 192.168.10.122 --sport 22 -d 0/0 --dport 513:65535 -m
state --state ESTABLISHED -j ACCEPT
Dan sekarang akses ssh pada ip 192.168.10.122 saja.

- Cara memblok paket yang dating dari sebuah IP, dengan perintah :
# iptables -I INPUT -s 192.168.1.12 -j REJECT
Dari perintah diatas terdapat 2 opsi yang bisa digunakan yaitu REJECT dan DROP,
perbedaan dari keduannya adalah untuk REJECT perintah ini akan memblik paket namun
akan memberitahukan bahwa paket tersebut ditolak, sedangkan DROP perintah ini akan
memblok paket namun tidak diberitahu apakah paket tersebut ditolak atau tidak, hampir
seperti hilang.

- Cara menutup port menggunakan iptables


# iptables -A INPUT -s 192.168.10.112 -p tcp -dport 23 -j REJECT
Keterangan : perintah diatas untuk memblok port 23 yang biasa digunakan untuk telnet
dari IP 192.168.10.112
# iptables -A INPUT -p tcp -I eth0 -dport 23 -j REJECT
Keterangan : perintah diatas memblok port 23 yang biasa digunakan untuk telnet ke
server

- Cara memblok komputer menggunakan mac address perangkatnya


# iptables -A INPUT -m mac -mac-source 00-12-53-77-56-3F

- Cara memblok port-port yang diinginkan


# iptables -A INPUT -p tcp m multiport -source-port 22,23,80

5.2. Sebuah kasus dalam penanganan server linux di vmware dengan menggunakan 2 virtual
Ethernet. Eth0 dengan IP 192.168.0.211 dan Eth1 dengan IP 192.168.2.12, Lalu di iptables
kita buat aturan sebagai berikut :
# iptables -P INPUT DROP
# iptables -P INPUT -s 192.168.0.1 -d 192.168.0.211 -j ACCEPT
# iptables -A INPUT -p ALL -m state -state NEW -j LOG -log-prefix IPTABLES:
(INPUT-REJECT)
# iptables -A INPUT -I eth1 -j REJECT
Keterangan :
1. Perintah pertama menjelaskan bahwa policy default untuk rantai INPUT adalah DROP,
yang berarti memblok seluruh inputan.
2. Perintah kedua menjelaskan kedua akan menerima inputan dari IP 192.168.0.1 dengan
tujuan IP 192.168.0.211
3. Perintah ketiga menjelaskan mencatat seluruh inputan yang mencoba masuk ke server
selain yang sudah ditentukan oleh aturan.
4. Perintah keempat akan memblok seluruh inputan yang menuju eth1 atau ber-IP
192.168.2.12 seperti yang ada di virtual eth1.

Langkah terakhir menyimpan aturan atau sintak yang telah dibuat pada iptables dengan
perintah :
# service iptables save
Jika ingin merestore lakukan perintah dibawah ini :
# service iptables restart

6. KESIMPULAN
Sebuah server memang harus memiliki pertahanan yang cukup baik bahkan lebih baik,
penggunaan iptables tidak terlalu memfokuskan pada urutan apa yang harus diberikan pada
peraturan perintah, yang terpenting administrator mengerti alur sebuah paket dari atau untuk
server yang dimiliki. Dengan begitu perintah iptables dapat diaplikasikan sesuai kebutuhan
keamanan pada jaringan di server khususnya berbasis linux ini.

Daftar Pustaka
1. iptables , http://en.wikipedia.org/wiki/Iptables.
2. Dasar-Dasar Perintah Program IPTABLES, http://blog.siger.tv/?p=351

Anda mungkin juga menyukai