Lewati ke konten utama

Instalasi dan konfigurasi dasar iptables firewall

info

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.

CLI
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.
info

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.

catatan

nilai CIDR 32 pada alamat IP client menunjukkan bahwa alamat IP tersebut adalah alamat IP host, bukan network.

CLI
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.

screenshot block ping

Rule 2: Memblokir koneksi HTTP

catatan

Karena port bawaan dari HTTP adalah 80, maka destination port nya adalah 80.

Memblokir koneksi HTTP dari client ke server.

CLI
# 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

screenshot block http

Rule 3: Mengizinkan dan memblokir koneksi SSH

Mengizinkan koneksi SSH dari client ke server.

CLI
sudo iptables -A INPUT -p tcp --dport 22 -s 173.23.0.19/32 -j ACCEPT

screenshot block ssh

Memblokir koneksi SSH dari client ke server.

catatan

Pada rules iptables dapat menggunakan chain INPUT atau OUTPUT dengan hasil yang sama, namun perlu disesuaikan parameter nya.

CLI
 # 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

screenshot block ssh

Rule 4: Log ping

Mencatat log ping dari client ke server.

CLI
sudo iptables -A INPUT -p icmp -s 173.23.0.19/32 -j LOG --log-prefix "ping dari client"
catatan

--log-prefix digunakan untuk menambahkan pesan pada log yang dicatat.

Untuk menampilkan log dari iptables, jalankan perintah berikut.

CLI
cat /var/log/kern.log | grep "ping"

screenshot log ping

catatan

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.

CLI
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.