TDCTF Academy Logo TDCTF ACADEMY

️ UFW Firewall

Setup dan konfigurasi firewall UFW (Uncomplicated Firewall) di Ubuntu.


Apa Itu UFW?

UFW (Uncomplicated Firewall) adalah antarmuka frontend untuk iptables yang dirancang agar mudah digunakan. UFW menyediakan cara simpel untuk mengelola aturan firewall di Linux, terutama Ubuntu/Debian.

UFW cocok untuk:

  • Server produksi yang butuh proteksi cepat
  • Lab/server pribadi
  • Pembatasan akses berbasis IP dan port

Instalasi & Enable

# Install UFW (biasanya sudah ada di Ubuntu)
sudo apt install ufw

# Set default policy DULU sebelum enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
peringatan

Sebelum enable, pastikan SSH di-allow dulu! Jika tidak, Anda bisa terkunci dari server.

# Allow SSH dulu (port 22)
sudo ufw allow 22
# atau
sudo ufw allow ssh

# Baru enable firewall
sudo ufw enable

# Cek status
sudo ufw status

Default Policy

Default policy menentukan sikap firewall terhadap koneksi yang tidak secara eksplisit diatur:

# Tolak semua koneksi masuk (rekomendasi)
sudo ufw default deny incoming

# Izinkan semua koneksi keluar
sudo ufw default allow outgoing

Allow (Mengizinkan)

Allow berdasarkan port

# Port numerik
sudo ufw allow 22 # semua protokol (TCP/UDP)
sudo ufw allow 80/tcp # hanya TCP
sudo ufw allow 443 # semua protokol
sudo ufw allow 1194/udp # hanya UDP

# Service name (dari /etc/services)
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Allow dari IP tertentu

# Dari satu IP
sudo ufw allow from 192.168.1.100

# Dari subnet ke port tertentu
sudo ufw allow from 192.168.1.0/24 to any port 22

# Dari IP spesifik ke port spesifik
sudo ufw allow from 10.0.0.5 to any port 3306

Allow dengan protokol spesifik

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

Deny (Menolak)

# Tolak port
sudo ufw deny 23 # Telnet
sudo ufw deny 25 # SMTP (jika tidak perlu)

# Tolak dari IP/subnet
sudo ufw deny from 10.0.0.0/8
sudo ufw deny from 203.0.113.0/24

# Tolak IP ke port spesifik
sudo ufw deny from 203.0.113.50 to any port 22

Rate Limiting (Anti Brute-Force)

Rate limiting membatasi jumlah koneksi - sangat berguna untuk SSH agar tidak mudah di-brute-force:

# Limit SSH (6 koneksi dalam 30 detik per IP)
sudo ufw limit 22/tcp
sudo ufw limit ssh

# Limit port lain
sudo ufw limit 443/tcp
tip

Gunakan ufw limit untuk semua service yang bisa diakses publik, terutama SSH. Ini memblokir sementara IP yang mencoba terlalu banyak koneksi.


Delete Rule

# Hapus berdasarkan aturan (cocok untuk aturan simpel)
sudo ufw delete allow 80
sudo ufw delete deny 23

# Hapus berdasarkan nomor (lebih akurat)
sudo ufw status numbered
sudo ufw delete 3 # hapus rule nomor 3
sudo ufw delete 5 # hapus rule nomor 5
peringatan

Setelah ufw reset, semua aturan akan hilang. Pastikan Anda punya akses fisik/console jika perlu reset dari jarak jauh.


Status

# Status dasar
sudo ufw status

# Dengan nomor (untuk delete)
sudo ufw status numbered

# Verbose (detail lengkap)
sudo ufw status verbose

# Cek aturan yang aktif
sudo ufw show added

Application Profile

UFW bisa mendeteksi aplikasi yang terdaftar dan membuat aturan berdasarkan profile aplikasi:

# Lihat daftar profile aplikasi
sudo ufw app list

# Allow berdasarkan profile
sudo ufw allow 'Nginx Full' # port 80 + 443
sudo ufw allow 'OpenSSH' # port 22
sudo ufw allow 'Apache Full' # port 80 + 443

# Info detail profile
sudo ufw app info 'Nginx Full'

Profile aplikasi berada di /etc/ufw/applications.d/.


Rule Priority

UFW memproses aturan secara berurutan. Aturan yang lebih spesifik sebaiknya didahulukan:

# Cara mengatur prioritas: tambahkan aturan paling spesifik dulu
sudo ufw allow from 192.168.1.100 to any port 22 # spesifik
sudo ufw allow from 192.168.1.0/24 to any port 22 # lebih luas
sudo ufw limit 22/tcp # general

# Hapus dan tambah ulang untuk mengubah urutan
sudo ufw status numbered
sudo ufw delete 4
sudo ufw allow from 10.0.0.0/8 to any port 3306

Logging

# Aktifkan logging
sudo ufw logging on

# Level logging: off | low | medium | high
sudo ufw logging medium

# Cek log
sudo tail -f /var/log/ufw.log

Log mencatat paket yang ditolak - sangat membantu untuk debugging.


Reset

# Reset semua aturan ke default (non-aktif)
sudo ufw reset
peringatan

Reset akan menonaktifkan UFW dan menghapus semua aturan. Anda perlu ufw enable lagi dan mengatur ulang aturan.


Contoh Skenario

1. Web Server (Nginx/Apache)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw limit 22/tcp
sudo ufw enable

2. VPN Server (OpenVPN)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 1194/udp
sudo ufw limit 22/tcp
sudo ufw enable

3. Lab Server (akses internal)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw allow from 192.168.1.0/24 to any port 80
sudo ufw allow from 192.168.1.0/24 to any port 443
sudo ufw allow from 192.168.1.0/24 to any port 8000:8100/tcp
sudo ufw enable

4. Database Server (MySQL/PostgreSQL)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow from 10.0.0.0/8 to any port 3306 # MySQL internal
sudo ufw allow from 10.0.0.0/8 to any port 5432 # PostgreSQL internal
sudo ufw limit 22/tcp
sudo ufw enable

Ringkasan Perintah Cepat

Perintah Fungsi
sudo ufw enable Aktifkan firewall
sudo ufw disable Nonaktifkan firewall
sudo ufw status [numbered|verbose] Cek status
sudo ufw allow <port/proto> Izinkan port
sudo ufw deny <port/proto> Tolak port
sudo ufw limit <port> Rate limit port
sudo ufw delete <rule|number> Hapus aturan
sudo ufw default deny incoming Tolak semua incoming
sudo ufw logging on Aktifkan log
sudo ufw reset Reset semua aturan
sudo ufw app list Lihat profile aplikasi
sudo ufw show added Lihat aturan yang ditambahkan

Troubleshooting

Masalah Solusi
Koneksi SSH timeout Login via console, sudo ufw disable, lalu allow SSH dulu
Port tidak bisa diakses Cek sudo ufw status, pastikan port di-allow
Aplikasi tidak terdeteksi Cek sudo ufw app list, instal profile atau allow manual
Log terlalu besar Turunkan level: sudo ufw logging low
Rule bentrok Hapus dan tambah dengan urutan yang benar

Kesimpulan

UFW adalah firewall yang sederhana namun powerful untuk Linux. Dengan beberapa perintah dasar, Anda bisa mengamankan server dari akses tidak sah. Ingat tiga aturan emas:

  1. Allow SSH dulu sebelum enable
  2. Gunakan default deny incoming
  3. Terapkan limit untuk service publik

UFW bukan pengganti iptables untuk konfigurasi yang sangat kompleks, tapi untuk 90% kebutuhan server, UFW sudah lebih dari cukup.

PADA HALAMAN INI