Linux Centos 5.0 (Pertemuan 10)
Setting Firewall [IP Chains / iptables]
Dalam operasi linux
sebuah firewall bisa disetting dengan keinginan sendiri melalui command
line atau shell. Di linux sendiri ada aplikasi iptables yang membantu kita
dalam melakukan filter layaknya aplikasi firewall di windows.
- Dalam tabel
filter terdapat 3 buah build-in chains (susah dibahasa indonesiakan)
dimana kita bisa meletakkan aturan-aturan untuk firewall kita. Nah mulai
puyeng ya…? Kita lanjutin ke pembahasan aja…..:-)
Berikut 3 buah “rantai” seperti 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, kemudian akan diarahkan ke
proses selanjutnya, atau istilahnya di jump over ke proses selanjutnya. Atau kata
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 bisa kita
digunakan :
Oh iya ada juga nih aturan penulisannya untuk masing-masing
commands yang digunakan berikut kejelasannya : (jengan sampai ngantuk ye……J
- 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)
Note : Nomor rule dimulai dari satu (mesti
dari awal ya!!!).
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)
Note:
Gunakan tanda ! untuk negasi/ pernyataan tidak/ selain OK.
- 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
Berikut
ada tutorial mengenai cara setting iptables mudah mudahan bermanfaat ya…. :-) JJJJ
Tidak ada komentar:
Posting Komentar