in Security

Cara Setting Firewall dengan IPTables di Linux

Firewall adalah sebuah sistem perangkat lunak atau perangkat keras untuk keamanan jaringan dengan cara menyaring lalu lintas yang masuk atau keluar pada jaringan komputer. Pada sistem operasi berbasis Linux tersedia IPTables sebagai perangkat lunak firewall untuk menyaring paket dan NAT, umumnya telah tersedia secara default.

Dalam konfigurasi IPTables terdiri dari beberapa table, kemudian table berisi beberapa chain. Chain ada yang tersedia default dan bisa ditambah oleh sysadmin. Chain dapat berisi beberapa rule untuk paket.

Jadi struktur IPTables adalah IPTables -> Tables -> Chains -> Rules.

Cara Setting Firewall dengan IPTables di Linux

IPTables Table, Chain, dan Rule Structure (credit: thegeekstuff.com)

A. TABLES dan CHAINS

IPTables memiliki 4 built-in tables.

1. Filter Table

Filter adalah default table untuk IPTables. Jika sysadmin tidak mendefinisikan table sendiri, digunakanlah filter table. Filter table memiliki built-in chains:

  1. INPUT chain: Untuk menyaring paket yang menuju ke server.
  2. OUTPUT chain: Untuk menyaring paket yang keluar dari server.
  3. FORWARD chain: Untuk menyaring paket yang menuju ke NIC lain dalam sever atau host lain.
Cara Setting Firewall dengan IPTables di Linux

INPUT, FORWAD, dan OUTPUT di Firewall (credit: hostinger.com)

2. NAT Table

Chain pada NAT table:

  1. PREROUTING chain: Mengubah paket sebelum routing. Paket ditranslasi setelah paket masuk ke sistem sebelum routing. Ini untuk membantu menerjemahkan alamat IP tujuan (destination IP address) dari paket ke sesuatu yang cocok dengan perutean di server. Ini digunakan untuk DNAT (Destination NAT).
  2. 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).
  3. OUTPUT chain: NAT untuk paket yang dibuat secara lokal di server.

3. Mangle Table

Mangle table adalah unuk pengubahan paket khusus. Ini mengubah bit QOS di header TCP. Chain pada Mangle table:

  1. PREROUTING chain
  2. OUTPUT chain
  3. FORWARD chain
  4. INPUT chain
  5. POSTROUTING chain

4. Raw Table

Raw table adalah untuk pengecualian konfigurasi. Chain pada Raw table:

  1. PREROUTING chain
  2. OUTPUT chain
Cara Setting Firewall dengan IPTables di Linux

IPTables built-in tables (credit: thegeekstuff.com)

B. IPTABLES RULES

Berikut ini poin-poin penting yang harus diingat dalam IPTables rules.

  • Rule mengandung 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

Berikut ini value yang dapat dipasangkan pada target.

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

C. INSTALL & CONFIG IPTABLES

Install iptables pada Linux Ubuntu Server 16.04

Menampilkan Rules

Menampilkan rules dari Filter table

Menampilkan rules dari Mangle table

Menampilkan rules dari NAT table

Menampilkan rules dari Raw table

Mengubah Default Policy Filter Table

Melihat status policy iptables

Mengubah policy chain

Mengecek ulang policy

PERINGATAN: Hati-hati dalam mengubah policy INPUT menjadi DROP, dapat mengakibatkan server tidak bisa diremote SSH.

Menambah Rule

Pada contoh di bawah ini, IPTables mengijinkan paket ke server untuk protokol ICMP, SSH, HTTP, HTTPS, dan FTP.

Menambah rule

Menghapus satu rule, misalnya port 21 (FTP)

Menghapus semua rule

Melihat semua rule

Simpan konfigurasi IPTables

Rule IPTables tersimpan di /etc/iptables/rules.v4.

Berikut ini rule yang saya copy dari digitalocean.com yang dapat digunakan untuk menyaring paket menuju server. Saya menambahkan rule untuk ICMP, FTP, HTTP, dan HTTPS agar diterima.

Edit file rules.v4

Paste rules di bawah ini

Simpan file, keluar dari nano.
Agar file konfigurasi terload jalankan perintah

Pastikan rule IPTables masih tetap ada setelah server direstart.

Selamat mencoba 🙂

Referensi:

Seorang penggiat teknologi digital yang saat ini fokus menggeluti profesi system administrator dengan sistem operasi Linux dan FreeBSD. Anda membutuhkan jasa sysadmin, silakan hubungi melalui email hai[at]musaamin.web.id, Telegram @musaamin, dan WhatsApp 081354302717.