TDCTF Academy Logo TDCTF ACADEMY

Konfigurasi Firewall

iptables (Linux Legacy)

iptables adalah tool firewall berbasis command-line yang menggunakan tabel dan chain untuk mengelola aturan. Setiap tabel memiliki chain default:

  • Filter table - Chain: INPUT (paket masuk ke lokal), OUTPUT (paket keluar dari lokal), FORWARD (paket yang melewati sistem).
  • Nat table - Chain: PREROUTING, POSTROUTING, OUTPUT.
  • Mangle table - Digunakan untuk mengubah header paket.

Sintaks Dasar iptables

# Memblokir semua lalu lintas masuk (default deny)
iptables -P INPUT DROP

# Mengizinkan SSH dari subnet tertentu
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

# Mengizinkan koneksi ESTABLISHED dan RELATED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Melog paket yang ditolak
iptables -A INPUT -j LOG --log-prefix "DROP: " --log-level 4

# Memblokir dengan REJECT (mengirim ICMP unreachable)
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable

Perintah Dasar

Perintah Fungsi
-L List aturan
-A Append aturan ke chain
-I Insert aturan di posisi tertentu
-D Delete aturan
-P Set policy default chain
-F Flush (hapus semua aturan)

nftables (Linux Modern)

nftables adalah pengganti iptables yang menawarkan performa lebih baik dan sintaks lebih sederhana.

# Membuat tabel
nft add table inet filter

# Membuat chain dengan policy drop
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }

# Mengizinkan SSH
nft add rule inet filter input tcp dport 22 accept

# Mengizinkan koneksi established
nft add rule inet filter input ct state established,related accept

Backup dan Restore iptables

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

# Restore
iptables-restore < /etc/iptables/rules.v4

# nftables backup
nft list ruleset > /etc/nftables.conf
nft -f /etc/nftables.conf

UFW (Uncomplicated Firewall)

UFW adalah frontend untuk iptables yang dirancang agar mudah digunakan.

# Mengaktifkan/menonaktifkan
ufw enable
ufw disable

# Aturan dasar
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 80/tcp
ufw allow from 192.168.1.0/24 to any port 3306

# Status dan logging
ufw status verbose
ufw logging on

# Backup (copy file konfigurasi)
cp /etc/ufw/user.rules /etc/ufw/user.rules.backup

firewalld (RHEL/CentOS/Fedora)

firewalld menggunakan konsep zones dan services untuk menyederhanakan manajemen firewall.

# Melihat zone default
firewall-cmd --get-default-zone

# Mengizinkan service
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-service=https --permanent

# Membuat rich rule
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="22" protocol="tcp" accept'

# Reload konfigurasi
firewall-cmd --reload

# Backup
cp /etc/firewalld/zones/public.xml /etc/firewalld/zones/public.xml.backup

Windows Firewall (Windows Defender Firewall)

Windows Firewall dapat dikonfigurasi melalui GUI, PowerShell, atau Group Policy.

PowerShell

# Mengizinkan port 3389 (RDP)
New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -LocalPort 3389 -Protocol TCP -Action Allow

# Memblokir aplikasi
New-NetFirewallRule -DisplayName "Block App" -Direction Outbound -Program "C:\Apps\app.exe" -Action Block

# Export/import aturan
netsh advfirewall export "C:\backup\rules.wfw"
netsh advfirewall import "C:\backup\rules.wfw"

DROP vs REJECT

  • DROP: Paket diabaikan tanpa respons apa pun. Lebih aman karena penyerang tidak tahu apakah host ada. Namun, pengguna sah juga tidak mendapat feedback, menyebabkan timeout.
  • REJECT: Paket ditolak dengan pesan ICMP (misalnya icmp-host-unreachable atau tcp-reset). Lebih user-friendly karena koneksi ditolak secara eksplisit, tetapi memberi informasi lebih pada penyerang.

Rekomendasi: Gunakan DROP untuk interface publik dan REJECT untuk interface internal.

Chain dan Policy

Setiap chain memiliki policy default yang menentukan nasib paket yang tidak cocok dengan aturan manapun:

  • ACCEPT (default di banyak distro) - izinkan semua lalu lintas yang tidak cocok aturan.
  • DROP - blokir tanpa respons.
  • QUEUE - kirim ke userspace untuk diproses.

Logging Rules

Logging aturan membantu debugging dan deteksi ancaman:

# iptables - log sebelum DROP
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4
iptables -A INPUT -j DROP

# nftables - log dengan limit rate
nft add rule inet filter input log prefix "NFT-DROP: " limit rate 3/minute
nft add rule inet filter input drop
PADA HALAMAN INI