Management Firewall di Linux Menggunakan IPTables

Pengenalan Firewall & IPTables

Firewall adalah sistem keamanan di komputer dimana melindungi sebuah jaringan agar aman dari ancaman yang ada di Internet.

IPTables adalah tools firewall di linux yang bisa digunakan untuk memfilter/menyaring lalulintas jaringan yang masuk,keluar dan melewati server. Kita juga bisa menggunakan IPTables ini untuk mengelola jenis paket, port, source address, destination address dan lainnya.

IPTables memiliki sebuah tabel untuk menentukan data, di dalam sebuah tabel tersebut ada sebuah aturan yang biasa disebut chain. Berikut beberapa Tabel di IPTables:

  1. Tabel Filter
  2. Tabel NAT
  3. Tabel Mangle

Di dalam tabel Filter ada 3 Chain:

  1. Chain INPUT (Aturan paket yang masuk ke server)
  2. Chain FORWARD(Aturan paket yang melewati server)
  3. Chain OUTPUT(Aturan paket yang keluar dari server)

Di dalam tabel NAT ada 4 Chain:

  1. PREROUTING/DST-NAT (Mengubah tujuan alamat)
  2. INPUT(Aturan NAT yang masuk ke server)
  3. OUTPUT(Aturan NAT yang keluar dari server)
  4. POSTROUTING/SRC-NAT(Mengubah sumber alamat)

Di dalam tabel Mangle bisa menggunakan semua chain diatas untuk menandai sebuah paket.

Selanjutnya kita akan coba menggunakan IPTables untuk kemanan di server.

Installasi IPTables di Linux

Lakukan dengan menggunakan user root atau dengan sudo

Debian Based

apt -y install iptables-persistent

RHEL/Centos Based

dnf -y install iptables-services

Konfigurasi Policy/Aturan Default di Chain

Secara default di semua chain paket akan di ACCEPT atau di izinkan, untuk melihat list dari iptables bisa menggunakan perintah

iptables -nvL

Terlihat di sebelah nama chain ada policy ACCEPT berarti kita mengizinkan paket masuk, untuk mengubahnya kita gunakan perintah

iptables -P namachain ACCEPT/DROP

Contoh mengubah policy INPUT agar menjadi DROP

iptables -P INPUT DROP

Ketika kita mengubah chain default INPUT menjadi DROP agar kita bisa mengakses si server maka diperlukan rule perizinan, jadi rule IPTables ini dibaca urut dari atas ke bawah, misal kita menambahkan rule untuk mengizinkan akses SSH

Menambah Rule di Chain Input

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Keterangan perintah:

-A INPUTAppend atau menambah rule ke chain INPUT
-p tcpProtokol TCP
– -dportDestinasi Port
-jJump atau akses yang diberikan misal ACCEPT

Terlihat bahwa kita mengizinkan paket dengan protokol TCP dan Tujuan Port 22(SSH), untuk source addressnya 0.0.0.0/0 berarti siapa saja bisa mengakses server kita melalui koneksi SSH. Kita bisa melimit source addressnya misal hanya range IP Tertentu yang bisa mengakses server kita, tambahkan parameter -s

iptables -A INPUT -p tcp --dport 22 -s 172.23.0.0/20 -j ACCEPT

Menambahkan Rule untuk mengizinkan akses web server

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Menghapus Rule

Kita bisa menghapus langsung dengan cara menggunakan perintah kemudian ditambah -D, contoh

menghapus rule di chain INPUT yang mengizinkan akses web server

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

Atau bisa juga berdasarkan nomor, untuk melihat list nomor rule di setiap chain gunakan perintah

iptables -nvL --line-number

Terlihat ada nomor urut disetiap rule untuk menghapus rulenya cukup menggunakan perintah

iptables -D INPUT nomor

misal

iptables -D INPUT 1

Rule pertama berhasil dihapus

Menghapus Semua Rule Firewall di Chain

Untuk menghapus semua rule firewall bisa menggunakan perintah

iptables -F namachain

misal ingin menghapus semua rule di chain input

iptables -F INPUT

Forward dan NAT

Forward biasanya digunakan untuk meneruskan sebuah paket bisa dari satu interface ke interface lain, di linux secara default fitur IP forwarding dimatikan, untuk mengaktifkannya kita bisa menggunakan perintah sysctl

sysctl -w net.ipv4.ip_forward=1

Perintah tadi mengaktifkan IP Forwarding saat itu juga, ketika mesin restart/mati maka IP Forwarding akan mati lagi, untuk mengaktfikan secara permanen kita bisa konfigurasi di file /etc/sysctl.conf

vi /etc/sysctl.conf
.....
net.ipv4.ip_forward = 0
Ubah menjadi
net.ipv4.ip_forward = 1
.....

Untuk menambah rule di chain forward berikut perintahnya

iptables -A FORWARD -i ens33 -j ACCEPT
iptables -A FORWARD -o ens33 -j ACCEPT

Keterangan perintah

-A FORWARDAppend atau menambah rule di chain FORWARD
-i ens33In Interface / Di dalam interface ens33
-o ens33Out Interface /Keluar dari interface ens33
-j ACCEPTJump atau akses yang diberikan misal ACCEPT

IP Masquerade / POSTROUTING

Biasanya digunakan untuk mentranslasikan IP, dari private ke publik ataupun private ke private yang lain

iptables -t nat -A POSTROUTING -o ens33 -s 172.23.2.0/24 -j MASQUERADE

Keterangan perintah

-t natTarget NAT
-A POSTROUTINGMenambah rule ke chain POSTROUTING(src-nat)
-o ens33Out Interface/ Interface dimana paket tersebut keluar di interface ens33
-s Source Address, sumber alamat yang ingin di translasikan
-j MASQUERADEJump atau akses yang diberikan yaitu MASQUERADE

PRERouting / D-NAT

Fungsinya biasanya untuk port forwarding, misal kita mau mengekspose port 80 ke External Network

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.23.0.201:80

Jadi ketika ada klien mengakses ke server kita dengan port 80 maka akan diteruskan ke 172.23.0.201

IPTables Statefull Firewall

Apa bedanya statefull firewall dengan firewall yang kita konfigurasi tadi? bedanya ada di connection tracking nya jadi di Statefull Firewall kita bisa menginspek sebuah koneksi berdasarkan connection state seperti NEW,ESTABLISHED, & RELATED

Penjelasan paket connection state:

  • 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)

Konfigurasi Statefull Firewall di IPTables

Contoh:

Mengizinkan paket baru,paket yang sudah ada, dan paket yang berhubungan dengan paket yang sudah ad a untuk melakukan koneksi menuju ke server

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Mengizinkan hanya paket yang dikenali dan berhubungan/mirip saja yang diizinkan melewati server

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Menyimpan Konfigurasi IPTables secara permanen

iptables-save > /etc/iptables/rules.v4

Leave a Comment