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 mangle --list


Menampilkan rules Nat

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


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



Komentar

Postingan populer dari blog ini

Konfigurasi DNS Server (Master Zone, Slave Zone, RPZ Zone) di RedHat

Bahas Firewalld di Redhat