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-unreachableatautcp-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