Konsep Firewall IPtables di Linux
Linux Firewall (iptables concepts)
Firewall
Firewall merupakan sebuah perangkat yang
digunakan untuk kepentingan keamanan suatu sistem. Firewall akan
melakukan pemeriksaan paket data baik yang masuk maupun yang keluar dari
suatu sistem. Paket-paket data yang mencurigakan dan membahayakan
sistem akan dibuang oleh firewall.
Firewall dapat dibedakan menjadi :
- Dedicated firewall, firewall yang berupa perangkat keras khusus yang dirancang untuk kepentingan keamanan jaringan, misalnya Cisco PIX Firewall
- Server Based-Firewall, berupa Network Operating System (misalnya Linux, UNIX) yang menjalankan fungsi-fungsi firewall.
- Integrated Firewall, fungsi firewall yang ditambahkan pada suatu perangkat jaringan, misalnya router yang menjalan fungsi firewall.
- Personal Firewall, berupa firewall yang dipasang pada personal computer (host dalam jaringan), biasanya merupakan bawaan OS, Anti Virus maupun software dari vendor tertentu.
Iptables (Linux Firewall)
Linux merupakan Network Operating System
yang sudah dilengkapi dengan aplikasi firewall. Fungsi-fungsi firewall
pada suatu sistem Linux dijalankan oleh Iptables. Pada sistem Linux
terdahulu, fungsi firewall dijalankan oleh Ipchains.
Selain menjalankan fungsi firewall,
Iptables juga dapat menjalankan fungsi NAT. NAT merupakan fungsi yang
dijalankan oleh sebuah Internet Gateway untuk menghubungkan jaringan
lokal (Private IP Address) dengan jaringan Internet (Public IP Address).
Secara default Iptables telah terinstall
pada sistem Linux Fedora Core maupun RedHat. Untuk memeriksa apakah
Iptables telah terinstall dapat digunakan perintah :
[root@gateway]# rpm –q iptables
iptables-1.3.5-1.2.1
Tables
Setiap paket data yang diterima oleh
Sistem Linux yang menjalankan fungsi firewall akan diperiksa oleh
Iptables. Iptables akan melakukan pemeriksaan dengan memasukkan setiap
paket data ke dalam tabel-tabel
Iptables memiliki 3 buah tabel built-in, yaitu :
- mangle, digunakan untuk manipulasi paket data, misalnya melakukan perubahan TCP Header
- filter, digunakan untuk melakukan filter paket data yang diterima firewall
- nat, digunakan untuk melakukan network address translation.
Chain
Setiap tabel memiliki rule-rule atau aturan-aturan yang disebut chain.
Mangle, memiliki 5 buah built-in chains :
Semua chains diperuntukkan untuk TCP Packet Quality of Service sebelum proses routing dijalankan.
- PREROUTING
- POSTROUTING
- INPUT
- OUTPUT
- FORWARD
Filter, memiliki 3 buah built-in chains :
- FORWARD : melakukan filter paket yang akan diforward dari suatu NIC ke NIC yang lain pada firewall, seperti fungsi router.
- INPUT : melakukan filter paket yang ditujukan bagi firewall
- OUTPUT : melakukan filter paket yang akan keluar dari firewall.
Nat memiliki 3 buah built-in chains :
- PREROUTING : digunakan untuk mentranslasi address sebelum proses routing terjadi. Dilakukan dengan merubah Destination IP Address dari paket data. Biasa dikenal dengan Destination NAT atau DNAT.
- POSTROUTING : digunakan untuk mentranslasi address setelah proses routing terjadi. Dilakukan dengan merubah Source IP Address dari paket data. Biasa dikenal dengan Source NAT atau SNAT.
- OUTPUT : digunakan untuk mentranslasi address paket data yang berasal dari firewall itu sendiri.
Target dan Jump
Setiap paket data memasuki sebuah
lingkaran, chain akan memeriksa paket tersebut sesuai kriteria yang
sudah ditentukan. Pemeriksaan biasanya dilakukan dengan mencocokan TCP
Header dari paket data dengan suatu rule yang sudah di tentukan pada
chain. Bila ternyata cocok, maka chain akan melakukan “jump” atau
eksekusi terhadap paket tersebut. Jump dapat berupa DROP (buang) atau
ACCEPT (terima).
Namun bila kriteria TCP Headernya tidak
cocok, maka pemeriksaan akan diserahkan kepada chain selanjutnya. Bila
sampai akhir chain tidak ada yang cocok, maka penentuan “jump” paket
akan ditentukan oleh chain default dari Iptables. Jump default dari
Iptables adalah default DROP ataupun default ACCEPT.
Berikut berbagai jenis “jump” yang dapat diterapkan pada paket data :
- ACCEPT : paket akan diterima oleh Iptables dan diteruskan kepada aplikasi yang membutuhkan atau diteruskan ke sistem operasi untuk diproses selanjutnya.
- DROP : paket akan di-blok (tidak dijinkan masuk ke iptables)
- LOG : informasi dari paket akan dimasukan ke syslog untuk keperluan logging, setelah di logging paket diserahkan ke chain berikutnya dalam tabel
- REJECT : paket akan di-blok (sama seperti DROP), namun dengan memberikan pesan error kepada host pengirim bahwa paket di-blok.
- DNAT : destination IP address dari paket akan dirubah
- SNAT : source IP address dari paket akan dirubah, source IP address baru yang akan digunakan harus ditentukan.
- MASQUERADE : source IP Address dari paket akan dirubah, source IP address baru yang akan digunakan sama dengan IP address dari interface firewall.
General Iptables Match Criteria
Dalam proses pencocokan kriteria paket pada chain digunakan beberapa perintah sebagai berikut :
- -t <table> : mendefinisikan tabel yang akan digunakan (mangel, filter atau nat). Bila tidak didefinisikan, asumsi yang digunakan adalah tabel filter.
- -j <target> : mendefinisikan jump yang akan diberlakukan pada suatu paket yang cocok dengan kriteria (rule) yang diterapkan.
- -A : menambahkan chain baru sesudah chain terakhir.
- -F : menghapus semua chain pada suatu tabel.
- -p <protocol-type> : mencocokan protocol yang digunakan (TCP, UDP, ICMP dan lain-lain)
- -s <ip address> : mencocokan source IP address pada paket data (host pengirim)
- -d <ip address> : mencocokan destination IP address pada paket data (host tujuan)
- -i <interface-name> : mencocokan “input” interface dimana paket akan diterima.
- -o <interface-name> : mencocokan “output” interface dimana paket akan dikeluarkan.
Contoh :
iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p tcp -j ACCEPT
perintah yang mengkonfigurasikan
iptables, sehingga firewall dapat menerima paket TCP yang masuk pada
interface eth0 (192.168.1.1), dimana paket tersebut dapat berasal dari
sembarang host
TCP dan UDP Match Criteria
Untuk pencocokan kriteria berdasarkan protokol TCP dan UDP, terdapat beberapa perintah tambahan, yaitu :
- -p tcp –-sport <port> : TCP source port, dapat berupa satu buah port atau range port. Untuk menggunakan range port formatnya adalah : startport:endport
- -p tcp –-dport <port> : TCP destination port
- -p tcp –-syn : mencocokan TCP Request Connection yang baru
- -p udp –-sport <port> : UDP source port, dapat berupa satu buah port atau range port. Untuk menggunakan range port formatnya adalah : startport:endport
- -p udp –-dport <port> : UDP destination port
Contoh :
iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP
–sport 1024:65535 –dport 80 -j ACCEPT
perintah yang mengkonfigurasikan
iptables, sehingga firewall dapat menerima paket TCP yang masuk pada
interface eth0 (192.168.1.58 )untuk dilakukan routing, kemudian paket
data tersebut dikeluarkan melalui ineterface eth1, dimana paket tersebut
dapat berasal dari sembarang host dengan source port dalam range 1024
s/d 65535 dan destination port 80 (aplikasi www atau http)
ICMP (ping) Match Criteria
Pencocokan kriteria untuk protokol ICMP, perintah yang dapat digunakan :
- -p icmp-type <type> : mencocokan tipe pesan ICMP, apakah icmp echo-request atau icmp echo-reply
Contoh :
iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT
perintah yang mengkonfigurasikan
iptables, sehingga firewall dapat mengirimkan paket ICMP echo-request
(ping) dan kemudian dapat menerima kembali ICMP echo-reply.
Menjalankan Iptables
Untuk menjalankan Iptables, dapat digunakan perintah :
[root@gateway etc]# systemctl start iptables.service
[root@gateway etc]# systemctl status named.service
named.service – LSB: start|stop|status|restart|try-restart|reload|force-reload DNS server
Loaded: loaded (/etc/rc.d/init.d/named)
Active: active (running) since Wed, 29 Aug 2012 15:25:24 +0800; 7min ago
Process: 9872 ExecStop=/etc/rc.d/init.d/named stop (code=exited, status=0/SUCCESS)
Process: 9941 ExecReload=/etc/rc.d/init.d/named reload (code=exited, status=0/SUCCESS)
Process: 9907 ExecStart=/etc/rc.d/init.d/named start (code=exited, status=0/SUCCESS)
Main PID: 9912 (named)
CGroup: name=systemd:/system/named.service
รข 9912 /usr/sbin/named -u named
Untuk menghentikan Iptables, dapat digunakan perintah sebagai berikut :
[root@gateway etc]# systemctl stop iptables.service
[root@gateway etc]# systemctl status iptables.service
iptables.service – IPv4 firewall with iptables
Loaded: loaded (/lib/systemd/system/iptables.service; enabled)
Active: inactive (dead)
start condition failed at Wed, 29 Aug 2012 15:11:01 +0800; 20min ago
CGroup: name=systemd:/system/iptables.service
Untuk memastikan Iptables selalu dijalankan pada saat sistem akan boot, dapat digunakan perintah :
[root@gateway ~]# systemctl enable iptables.service
Konfigurasi Iptables
Konfigurasi iptables dapat dilihat pada file /etc/sysconfig/iptables
Bila dilakukan pengeditan pada file tersebut, harus diikuti dengan perintah #systemctl restart iptables.service
sehingga konfigurasi yang baru dapat dijalankan. Namun bila konfigurasi
iptables diberikan pada shell prompt, maka konfigurasi tersebut akan
langsung dijalankan oleh iptables.
Untuk melihat konfigurasi yang sedang digunakan oleh iptables, dapat digunakan perintah :
[root@gateway etc]# iptables-save
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*mangle
: PREROUTING ACCEPT [154:11803]
:INPUT ACCEPT [154:11803]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [132:13336]
: POSTROUTING ACCEPT [132:13336]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*nat
: PREROUTING ACCEPT [1:119]
:INPUT ACCEPT [1:119]
:OUTPUT ACCEPT [1:108]
: POSTROUTING ACCEPT [1:108]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012
# Generated by iptables-save v1.4.12 on Wed Aug 29 15:35:27 2012
*filter
:INPUT ACCEPT [164:12203]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [166:16816]
COMMIT
# Completed on Wed Aug 29 15:35:27 2012
Untuk mengosongkan konfigurasi Iptables, dapat digunakan perintah :
[root@gateway]#iptables –flush
Back Up Configuration
Bila ingin melakukan back-up terhadap konfigurasi iptables dapat digunakan perintah :
[root@gateway]#iptables-save > firewall-config-backup
(perintah menyimpan konfigurasi iptables pada file firewall-config-backup)
Bila ingin me-restore konfigurasi iptables yang telah disimpan, dapat digunakan perintah
[root@gateway]#iptables-restore < firewall-config-backup
(perintah me-restore konfigurasi iptables dari file firewall-config-backup)
sumber:http://www.ilmujaringan.com/linux-firewall-iptables-concepts/
sumber:http://www.ilmujaringan.com/linux-firewall-iptables-concepts/