Instalasi dan konfigurasi dasar iptables firewall
iptables adalah perintah atau alat untuk membuat rule atau aturan yang akan digunakan untuk menyaring lalu lintas jaringan masuk atau keluar sesuai dengan rule yang di definisikan. Aturan pada iptables adalah sebuah aturan yang dibuat dengan menyertakan opsi dan parameter seperti jenis protokol, arah datangnya paket (OUTPUT atau INPUT), nomor port, alamat IP sumber berupa host/network, alamat IP tujuan berupa host/network dan jenis aksi yang akan dilakukan jika terdapat paket yang melewati lalu lintas jaringan sesuai dengan kondisi yang di definisikan pada iptables contoh nya seperti DROP untuk menolak paket, ACCEPT untuk mengizinkan paket, REJECT untuk menolak paket dan mengirimkan pesan error dan LOG untuk mencatat log paket yang melewati firewall.
Topologi
Berikut topologi yang akan digunakan pada tutorial ini.
Instalasi dan konfigurasi
Instalasi paket aplikasi
Paket aplikasi yang perlu diintsal untuk konfigurasi iptables firewall adalah iptables
dan iptables-persistent
, instal paket aplikasi tersebut pada server LNXSRV1
dengan menjalankan perintah berikut.
sudo apt install iptables -y
Konfigurasi
Pada tutorial ini akan dilakukan pengujian dengan beberapa rules untuk memblokir dan mengizinkan paket dari dari lalu lintas jaringan, entah itu lalu lintas paket yang masuk atau keluar dari komputer server.
- Rule 1: Memblokir ping dari client ke server.
- Rule 2: Memblokir koneksi HTTP dari client ke server.
- Rule 3: Mengizinkan dan memblokir koneksi SSH dari client ke server.
- Rule 4: Log ping dari client ke server.
Ada beberapa opsi atau flags yang sering digunakan pada perintah iptables, berikut beberapa opsi yang sering digunakan:
-A
atau--append
: Menambahkan rule baru pada chain yang sudah ada.-D
atau--delete
: Menghapus rule pada chain yang sudah ada.-p
atau--protocol
: Menentukan protokol yang akan di filter.-s
atau--source
: Menentukan alamat IP sumber.-d
atau--destination
: Menentukan alamat IP tujuan.-j
atau--jump
: Menentukan aksi yang akan dilakukan jika rule terpenuhi.--dport
: Menentukan port tujuan.--sport
: Menentukan port sumber.
Macam-macam chain pada iptables:
- INPUT : Chain ini digunakan untuk paket yang menuju ke server.
- OUTPUT : Chain ini digunakan untuk paket yang berasal dari server.
- FORWARD : Chain ini digunakan untuk paket yang melewati server.
Macam-macam jenis aksi pada iptables:
- ACCEPT : Mengizinkan paket melewati firewall.
- DROP : Menolak paket yang melewati firewall.
- REJECT : Menolak paket yang melewati firewall dan mengirimkan pesan error.
- LOG : Mencatat log paket yang melewati firewall.
- RETURN : Mengembalikan paket ke chain yang memanggilnya.
Rule 1: Memblokir ping
Memblokir ping dari client ke server.
nilai CIDR 32 pada alamat IP client menunjukkan bahwa alamat IP tersebut adalah alamat IP host, bukan network.
sudo iptables -A INPUT -p icmp -s 173.23.0.19/32 -j DROP
Perintah di atas adalah untuk menambahkan rule dengan chain INPUT atau paket yang menuju ke server, dengan protokol ICMP atau ping, alamat IP sumber adalah alamat IP dari client, dan aksi yang dilakukan adalah DROP atau menolak paket.
Rule 2: Memblokir koneksi HTTP
Karena port bawaan dari HTTP adalah 80, maka destination port nya adalah 80.
Memblokir koneksi HTTP dari client ke server.
# pada iptables saat menentukan port tujuan atau port sumber dapat menggunakan nama protokol atau nomor port
# contoh untuk port 80 adalah http dan nomor port 22 adalah ssh.
sudo iptables -A INPUT -p tcp --dport 80 -s 173.23.0.19/32 -j DROP
# atau
sudo iptables -A INPUT -p tcp --dport http -s 173.23.0.19/32 -j DROP
Rule 3: Mengizinkan dan memblokir koneksi SSH
Mengizinkan koneksi SSH dari client ke server.
sudo iptables -A INPUT -p tcp --dport 22 -s 173.23.0.19/32 -j ACCEPT
Memblokir koneksi SSH dari client ke server.
Pada rules iptables dapat menggunakan chain INPUT atau OUTPUT dengan hasil yang sama, namun perlu disesuaikan parameter nya.
# chain INPUT
sudo iptables -A INPUT -p tcp --dport 22 -s 173.23.0.19/32 -j DROP
# atau bisa juga dengan menggunakan chain OUTPUT
sudo iptables -A OUTPUT -p tcp --sport 22 -d 173.23.0.19/32 -j DROP
Rule 4: Log ping
Mencatat log ping dari client ke server.
sudo iptables -A INPUT -p icmp -s 173.23.0.19/32 -j LOG --log-prefix "ping dari client"
--log-prefix
digunakan untuk menambahkan pesan pada log yang dicatat.
Untuk menampilkan log dari iptables, jalankan perintah berikut.
cat /var/log/kern.log | grep "ping"
jika berkas /var/log/kern.log tidak ditemukan, dapat menginstal paket aplikasi rsyslog
dengan menjalankan perintah sudo apt install rsyslog -y
.
Menampilkan rule yang sudah dibuat
Untuk melihat rules yang sudah dibuat pada iptables, jalankan perintah berikut.
sudo iptables -L
# contoh output dari perintah di atas
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 21.233.154.250 anywhere tcp dpt:http
DROP tcp -- 21.233.154.250 anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- anywhere 21.233.154.250 icmp echo-reply
Sekian tutorial kali ini, materi selanjutnya akan membahas tentang cara menyimpan rules iptables agar tidak hilang ketika server di restart dan penggunaan table nat pada iptables dengan menggunakan jenis chain rule yang lain seperti PREROUTING dan POSTROUTING.