️ 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
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
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
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
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:
- Allow SSH dulu sebelum enable
- Gunakan
default deny incoming - Terapkan
limituntuk service publik
UFW bukan pengganti iptables untuk konfigurasi yang
sangat kompleks, tapi untuk 90% kebutuhan server, UFW sudah lebih
dari cukup.