Mengatur keamanan jaringan menggunakan iptables di linux
Pengertian Iptables
Ip tables merupakan tools firewall yang berfungsi untuk mengatur, memelihara, dan memeriksa tabel aturan filter paket IP di kernel linux. Iptables mengatur berdasarkan rule dan chain. Setiap tabel berisi sejumlah chain bawaan dan mungkin juga berisi chain yang ditentukan pengguna. Setiap chain adalah daftar aturan yang dapat mencocokan satu set paket. Setiap rule menentukan apa yang harus dilakukan dengan paket yang cocok. Intinya dengan iptables kita sebagai admin dapat membuat rule yang mengatur jenis paket yang diterima, mengatur traffic berdasarkan asal dan tujuan, mengelola port dan lain lain.
Untuk struktur dari iptables kurang lebih seperti : IPTABLES >> TABLES >> CHAINS >> RULES.
Tabel - tabel
1. Fileter Table
- INPUT chain : Untuk menyaring paket yang menuju ke server
- OUTPUT chain : Untuk menyaring paket yang keluar dari server.
- FORWARD chain : Untuk menyaring paket yang menuju ke NIC lain dalam server atau host lain
2. Nat Filter
- PREROUTING chain : Mengubah paket sebelum routin, Paket ditranslasi setelah paket masuk ke system sebelum routing. Ini membantu menerjemahkan alamat IP tujuan (destination IP address) dari paket ke sesuatu yang cocok dengan perutean di server. Ini digunakan untuk DNAT.
- POSTROUTING chain : Mengubah paket setelah routing. Paket ditranslasi ketika paket tersebut meninggalkan sistem. Ini untuk membantu menerjemahkan alamat IP sumber (source IP address) ke sesuatu yang cocok dengan perutean pada destinasi. Ini digunakan untuk SNAT (Source NAT).
- OUPUT chain : NAT untuk paket yang dibuat secara lokal di server
3. Mangle Table
Mangle table adalah untuk pengubahan paket khusus. Ini mengubah bit QOS di header TCP. Chain pada Mangle table :
- PREROUTING chain
- OUTPUT chain
- FORWARD chain
- INPUT chain
- POSTROUTING chain
4. Raw Table
Raw table adalah untuk pengecualian konfigurasi. Chain pada Raw table
- PREROUTING chain
- OUTPUT chain
Iptables rules
- Rule mngandung kriteria dan target.
- Jika kriteria tersebut cocok, menuju ke rule yang ditentukan dalam target atau mengeksekusi nilai - nilai khusus yang disebutkan dalam target.
- Jika kriteria tidak cocok, pindah ke rule berikutnya.
Target Values
- ACCEPT : Firewall akan menerima paket.
- DROP : Firewall akan menghancurkan paket.
- QUEUE : Firewall akan meneruskan paket ke userspace.
- RETURN : Firewall akan berhenti mengeksekusi rule berikutnya dalam chain saat ini khusus untuk paket ini kontrol akan dikembalikan ke calling chain.
Beberapa command yang saya lakukan dengan iptables
Menampilkan rules filter
root@subuntu2:~# iptables -t filter --list
Menampilkan rules Mangle
root@subuntu2:~# iptables -t nat --list
Menampilkan rules raw
root@subuntu2:~# iptables -t raw --list
Mengubah default policy filter table
Melihat status policy iptables :
sudo iptables -L | grep policy
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
Mengganti policy chain
iptables --policy INPUT DROP
iptables --policy FORWARD DROP
iptables --policy OUTPUT ACCEPT
Hasil
Menambah rule
root@subuntu2:~# iptables -A INPUT -p icmp -j ACCEPT
root@subuntu2:~# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
root@subuntu2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@subuntu2:~# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
root@subuntu2:~# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Menghapus spesifik rule
root@subuntu2:~# iptables -D INPUT -p tcp --dport 21 -j ACCEPT
Menghapus semua rule
root@subuntu2:~# iptables -F
Untuk Menyimpan rule menggunakan perintah
netfilter-persistent save
netfilter-persistent reload
Iptables statefull firewall
Pada bagian Statefull kita bisa mengatur koneksi berdasarkan status koneksi seperti New, Related atau Established
- NEW (Paket yang meminta koneksi baru)
- ESTABLISHED (Paket yang sudah saling terkoneksi/saling kenal)
- RELATED(Paket yang berhubungan dengan koneksi yang sudah ada)
- INVALID(Paket yang tidak ada dalam connection state diatas)
Mengijinkan paket baru, paket yang sudah ada, dan paket yang berhubungan dengan paket yang sudah ada untuk melakukan koneksi menuju ke server
root@subuntu2:~# iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Mengizinkan hanya paket yang dikenali atau pernah terkoneksi dan berhubungan / mirip paket yang sudah ada saja yang diizinkan melewati server
root@subuntu2:~# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Port fordwarding
root@subuntu2:~# iptables -t nat -A PREROUTING -p tcp -d ipserver1eth1 --dport 50000 -j DNAT --to-destination IPmesin2:22
jangan lupa untuk allow forwarding di kernel cong
tambahkan baris berikut ke /etc/sysctl.conf
net.ipv4.ip_forward=1
tambahkan baris berikut ke /etc/sysctl.conf
net.ipv4.ip_forward=1
Komentar
Posting Komentar