Anda di halaman 1dari 5

MEMBANGUN FIREWALL DENGAN IPTABLES

Firewall digunakan untuk melindungi atau membatasi akses komputer


atau jaringan ke dunia luar, seperti internet.
Salah satu firewall yang sering digunakan adalah iptables yang ada
didalam sistem operasi linux.

Mengenal iptables

Pada distribusi linux yang baru, iptables secara default dudah terinstall.
Pastikan kernel dari sistem linux yang digunakan adalah kernel 2.4 ke atas
dengan iptables(netfilter) aktif. Menjalankan iptables dengan user root.
perintah untuk berpindah ke user root:
# su -
Setelah menjadi root, panggil iptables dengan perintah:
# iptables
atau
#/sbin/iptables
jika iptables sudah aktif akan muncul:
# iptables
----
----
untuk mengetahu parameter apa saja yang digunakan di dalam iptables,
gunakan perintah:
# iptables -h
----
----
atau menggunakan # man iptables

Membangun firewall
catatan: perintah-perintah dilinux bersifat case sensitif oleh sebab itu perhatikan
pemakain huruf kecil maupun besar.

1. reset firewall
Rule yang perlu dibuat adalah mengosongkan semua jalur firewall dengan melakukan
flushing.
# iptables -F INPUT
# iptables -F OUTPUT
# iptables -F FORWARD
# iptables -nvL (utk mengecek kondisi rule dari firewall)
2. membatasi semua akses kecuali yang diperbolehkan.
memblokir(DROP) jalur INPUT
# iptables -P INPUT DROP
untuk mengetes lakukan pinging firewall sebelum dan sesudah perintah dieksekusi.
3. membuka akses kelayanan DNS
membuka akses berbasis UDP, yaitu DNS server pada port 53.
# iptables -A INPUT -p UDP -s 0/0 --dport 53 -j ACCEPT
perintah diatas berarti, tambahkan atau append (-A) pada chain INPUT, paket yang berjenis
UDP (-p UDP) dengan alamat source sembarang (-s 0/0) dan destination port adalah 53 (--
dport 53),
kemudian perkenankan paket tersebut(-j ACCEPT).
4. membatasi akses dari sebuah alamat
membatasi akses dari sebuah nomor IP
# iptables -I INPUT -s $BAD_IP/32 -j DROP
perintah diatas berarti, kita ingin menyisipkan perintah di input chain, jika source address
berasal dari $BAD_IP(tanda"/32"menyatakan bahwa dia berupa satu host), maka dia
langsung di-DROP.
$BAD_IP tersebut dapat kita gantikan dengan nomor IP.
# iptables -A INPUT -s 192.168.4.12 -j DROP
ini berarti alamat IP 192.168.4.12 tidak bisa mengakses firewall, dan jika sebaliknya
komputer yang menjalankan iptables tidak dapat berkomunikasi dengan pemilik IP
192.168.4.12
maka chain yg digunakan adalah OUTPUT dan parameter -s diganti dengan -d(destination)
atau tujuan.
# iptables _A OUTPUT -d 192.168.4.12 -j DROP
5. membatasi akses dari sejumlah alamat
# iptables -I INPUT -s $BAD_NET/25 -j LOG
# iptables -I INPUT -s $BAD_NET/25 -j DRop
6. memperbolehkan akses ke web server
web server berada pada port 80
# iptables -A INPUT -P TCP -s 0/0 -dport 80 -j ACCEPT
7. memperbolehkan akses ke layanan TCP yang lebih kompleks
rule yang dibuat: membatasi akses ke server HTTP (port 80) dan FTP (port 21) serta
stateful,
yaitu mencatat state paket yang established, related.
# iptables -A goodtcp -p TCP --syn -j ACCEPT
# iptables -A goodtcp -p TCP -m state --state ESTABLISHED, RELATED, -j ACCEPTED
# iptables -A goodtcp -p TCP -j DROP

# iptables -A tcpsrv -p TCP -s 0/0 --dport 80 -j goodtcp


# iptables -A tcpsrv -p TCP -s 0/0 --dport 21 -j goodtcp

a# iptables -A INPUT -p tcp --syn -destination-port 80 -j ACCEPT


b# iptables -A INPUT -p tcp --syn -s 192.168.4.12 --destination-port 22 -j ACCEPT
c# iptables -A INPUT -p tcp --syn -j DROP
a? mengijinkan komputer lain mengakses port 80 (web server)
b? mengijinkan pemilik IP 192.168.4.12 mengakses port 22 (SSH)
c? menutup semua akses lain selain akses dengan paket yg sesuai dengan aturan
sebelumnya.

dRop paket yang tcp yang NEW tapi tidak membuat SYN flag
# iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
# iptables -A INPUT -p TCP -j tcpsrv
d# iptables -A INPUT -p TCP --destination-port telnet -i eth0 -j DROP
d? menutup koneksi telnet pada jaringan internet(-i eth0), tidak pada LAN(eth1).

*untuk melihat aturan yang sudah ada pada chain, gunakan parameter -L;
# iptables -L
parameter -R untuk mengganti sebuah aturan dengan aturan yang baru.
parameter -D untuk menghapus sebuah aturan.
parameter -F untuk menghapus seluruh aturan pada chain.

DASAR-DASAR IPTABLES

Assalamu’alaykum wr. wb.


Satu hal lagi yang baru kupelajari dalam rangka menambah ilmuku tentang jaringan adalah
IPtables. Dari yang kubaca, pembahasan iptables secara keseluruhan cukup luas, jadi kali
ini ku persempit dulu pembahasannya menjadi firewall with iptables. Walaupun sebenarnya
ga lengkap-lengkap kali, soalnya yang kutulis adalah yang aku udah ngerti dulu, bukan
sekedar copas hehe..
Sebelum nulis ini, tadi uda sempat coba-coba dikit, dan ternyata berhasil. Nah sekarang aku
ingin mengabadikan kenangan ini, usaha ini, kerja keras ini (hoho kaya’ betul aja..) menjadi
bait-bait tulisan yang bisa ku nikmati di hari tua nanti..amin.. klo nyampe tua..
Sebenarnya di iptables ada beberapa table, ada filter, nat, mangle, dan raw, tapi karena
pembahasan kita dipersempit, jadi yang digunakan kali ini adalah bagian filternya.
Mulai….:
Dalam tabel filter terdapat 3 buah build-in chains (susah dibahasa indonesiakan) dimana
kita bisa meletakkan aturan-aturan untuk firewall kita. Bingung? lanjutin aja dulu ya..
Berikut 3 buah “rantai” tersebut :
1. INPUT (untuk paket yang ditujukan ke firewall kita)
2. FORWARD (untuk paket yang di route lewat firewall kita, misalnya sebagai server
yang menghubungkan jaringan local ke jaringan internet.
3. OUTPUT (untuk paket yang berasal dari firewall)
Target And Jumps
Setiap rule yang ada di firewall akan mencoba mengidentifikasi setiap paket yang ada di
“rantai”, jika sesuai maka akan dianggap sebagai target, yang selanjutnya akan diarahkan
ke proses selanjutnya, atau istilahnya di jump over ke proses seanjutnya. Atau
sederhananya, apa yang akan dilakukan jika terdapat paket yang cocok dengan rule.
Berikut adalah beberapa Jumps yang populer :
1. ACCEPT (proses di iptables selesai, dan paket dilanjutkan ke tempat seharusnya,
misalnya applikasi tujuan)
2. DROP (proses di iptables selesai, dan paket diblock)
3. REJECT (proses di iptables selesai, dan paket diblock lalu mengirimkan pesan ke host
pengirim bahwa paket diblock)
Selanjutnya adalah COMMANDS yang bias digunakan :
o ya, ni aturan penulisannya untuk masing-masing commands yang digunakan.
iptables [-t table] -[AD] chain rule-specification [options]
iptables [-t table] -I chain [rulenum] rule-specification [options]
iptables [-t table] -R chain rulenum rule-specification [options]
iptables [-t table] -D chain rulenum [options]
iptables [-t table] -[LFZ] [chain] [options]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target [options]
iptables [-t table] -E old-chain-name new-chain-name
-t = menentukan nama tabel (filter, nat, mangle, raw). jika tidak ditulis, maka defaultnya
adalah “filter”.
ket : chain ==> misalnya INPUT, OUTPUT, atau FORWARD
rulenum ==> nomor urut aturan dalam chain
target==> seperti yang dijelaskan pada bagian target and jumps di atas
nah, ini commandsnya :
1. -A ==> menambahkan rule di baris terakhir chain yang ditentukan.
(iptables -A INPUT -j DROP : semua paket yang masuk ke chain INPUT akan di DROP)
2. -D ==> menghapus rule yang ada di chain tertentu, ada dua jenis penghapusan, yaitu
dengan nomor urut rule (rulenum) atau dengan pencocokan rule-specification.
(iptables -D INPUT 1, atau iptables -D INPUT -s 10.14.210.100 -j DROP : yg pertama
adalah menghapus rule pertama di chain input, yang kedua adalah menghapus rule yang
cocok dengan spesifikasi tersebut di chain INPUT)
3. -I ==> menambahkan rule di baris dan chain yang ditentukan.
(iptables -I INPUT 1 –dport 80 -j ACCEPT : menambahkan rule di urutan pertama pada
chain INPUT)
4. -R ==> mereplace rule yang ada di chain berdasarkan rulenum.
(iptables -R INPUT 1 -s 192.168.0.1 -j DROP : menimpa rule nomor satu di chain INPUT
dengan rule baru tersebut)
5. -L ==> menampilkan daftar rule seluruhnya atau di chain tertentu jika jenis chain
ditentukan.
(iptables -L INPUT : menampilkan semua rule yang ada di chain INPUT)
6. -F ==> menghapus semua rule atau semua rule di chain tertentu jika jenis chain
ditentukan.
(iptables -F : menghapus semua rule yang ada di semua chain)
7. -Z ==> untuk meng-nol-kan semua counter yang di chain tertentu, misalkan coba -v,
setelah itu gunakan -Z, lalu lihat beda -v setelah di -Z.
(iptables -Z INPUT)
8. -N ==> membuat sebuah chain baru.
(iptables -N ALLOW : membuat sebuah chain bernama ALLOW)
9. -X ==> menghapus chain tertentu.
(iptables -X ALLOW : menghapus chain bernama ALLOW)
10. -P ==> untuk menentukan default target dari chain tertentu.
(iptables -P INPUT ACCEPT : jika paket tidak ada yang cocok dengan semua rule yang
ada, maka akan dipaksa mengikuti rule default ini)
11. -E ==> mengubah nama chain.
(iptaables -E ALLOW ALLOWAH : mengubah nama chain dari ALLOW jadi
ALLOWAH)
Catatan : Nomor rule dimulai dari satu.
Selanjutnya adalah daftar parameter pembentuk rule-specification :
-s ==> source
(iptables -A INPUT -s 192.168.1.1)
-d ==> destination
(iptables -A INPUT -d 192.168.1.1)
-p ==> protocol
(iptables -A INPUT -s 192.168.1.1 -p tcp)
-i ==> in-interface
(iptables -A INPUT -i eth0)
-o ==> out-interface
(iptables -A FORWARD -o eth0)
–sport ==> source port
(iptables -A INPUT -s 192.168.1.1 -p tcp –sport 22)
–dport ==> destination port
(iptables -A INPUT -p tcp –dport 22)
–sys ==> untuk identifikasi new connection request
(iptables -A INPUT -i ppp0 -p tcp –syn –dport ! 80 -j DROP)
Catatan : Gunakan tanda ! untuk negasi/ pernyataan tidak/ selain.
Gunakan tanda : untuk menyatakan sampai, misal port 10 sampai 20, maka ditulis 10:20.
Contoh-Contoh Script IPTables :
iptables -A INPUT -p icmp –icmp-type 8 -j DROP
(DROP semua paket icmp-request yang masuk ke server kita, dengan kata lain komputer
kita ga bisa di ping)
=> –icmp-type 0 for reply 8 for request.
iptables -A OUTPUT -p udp -o eth0 –dport 53 –sport 1024:65535 -j ACCEPT
(ACCEPT paket yang dengan protokol UDP, out-interface eth0, destination port 53, source
port 1024-65535)
iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -d $SERVER_IP -m state –state NEW,
ESTABLISHED, RELATED -j ACCEPT
($SERVER_IP adalah variable, bisa digantikan dengan IP server. -m state –state adalah
untuk mengetest keadaan paket, ada 4 yang bisa digunakan, yaitu NEW, ESTABLISHED,
RELATED, dan INVALID. NEW : paket memulai koneksi baru. ESTABLISHED : paket
adalah bagian dari koneksi yang terjadi antara dua host, misalnya ICMP reply message,
yang merupakan balasan dari ICMP request. RELATED : koneksi yang termasuk
RELATED adalah jika ia berhubungan dengan koneksi ESTABLISHED yang telah ada.
INVALID : paket tidak teridentifikasi atau tidak memiliki state, ini mungkin terjadi karena
system running out memory atau karena ICMP error messages yang tidak merespon ke
known connections.
hhuaaaa.. uda ngantuk nih,, sampai disini dulu yah, ntar klo masih ada waktu n ilmunya
semakin banyak, ntar ditulis lagi deh biar ga ilang..hehe..
Kata bijak : ilmu itu kaya’ kambing, klo ga diikat ntar hilang lho..,klo kambing diikat
dengan tali, klo ilmu diikat dengan ditulis..
Update 30 jan 08
Berhubung title yang kemaren dirasa kurang relevan dengan isinya, maka aku ganti. Untuk
Implementasi Firewall Dengan IPTable akan segera dipelajari dan diposting.