PENERAPAN FIREWALL PADA LINUX UBUNTU SERVER 24.04

Diperbarui: 4 November 2025


1. Kenapa Kita Harus Menerapkan Firewall Pada Server Kita?

Penerapan firewall pada server adalah garis pertahanan pertama dan paling fundamental dalam keamanan siber. Tanpa firewall, server akan terbuka lebar terhadap ancaman dari seluruh internet, terutama jika server menggunakan IP Publik, sangat rentan terhadap berbagai serangan siber di jaringan internet dunia.

2. Penerapan Firewall menggunakan UFW (Uncomplicated Firewall)

Instalasi UFW (jika belum terinstall), Meskipun UFW biasanya sudah terinstal secara default di Ubuntu, kalian dapat memastikannya atau menginstalnya dengan perintah ini.

sudo apt update
sudo apt install ufw      

Memeriksa status UFW, Sebelum membuat perubahan, selalu periksa status UFW. Pada instalasi baru, statusnya kemungkinan besar adalah Status: inactive (Tidak aktif).

sudo ufw status verbose      

Secara default, dianjurkan untuk memblokir semua koneksi masuk (incoming) dan mengizinkan semua koneksi keluar (outgoing) untuk server, karena server harus dapat berinisiatif terhubung ke luar (misalnya untuk memperbarui).

Perhatian: Jangan aktifkan UFW sebelum Anda mengizinkan koneksi SSH Anda!

sudo ufw default deny incoming
sudo ufw default allow outgoing      

Dikarenakan pada rule sebelumnya akan melakukan drop semua koneksi dari luar, maka protokol remote seperti ssh juga ikut terblokir, dampaknya kita tidak bisa mengakses atau me-remote servernya, Untuk memastikan kita tetap bisa melakukan akses ke server kita, kita harus mengizinkan koneksi SSH (biasanya di Port 22) sebelum mengaktifkan UFW.

sudo ufw allow ssh
# ATAU
sudo ufw allow 22/tcp      

Jika server kita juga menjalankan layanan lain (misalnya web server), kita juga harus mengizinkan port-port yang digunakan tersebut:

  • HTTP (Port 80): sudo ufw allow http atau sudo ufw allow 80/tcp
  • HTTPS (Port 443): sudo ufw allow https atau sudo ufw allow 443/tcp

Setelah semua aturan penting (terutama SSH) telah ditambahkan, kita dapat mengaktifkan firewall. Kita akan diminta untuk konfirmasi, ketik y dan tekan Enter.

sudo ufw enable      

Perintah UFW lainnya.

Perintah Fungsi Contoh
sudo ufw allow [port/protokol] Mengizinkan koneksi ke port/protokol tertentu. sudo ufw allow 80/tcp
sudo ufw deny [port/protokol] Memblokir koneksi ke port/protokol tertentu. sudo ufw deny 21/tcp
sudo ufw allow from [IP] Mengizinkan koneksi dari IP spesifik. sudo ufw allow from 192.168.1.100
sudo ufw allow from [IP] to any port [port] Mengizinkan koneksi dari IP spesifik ke port tertentu. sudo ufw allow from 203.0.113.4 to any port 22
sudo ufw delete [aturan] Menghapus aturan (gunakan nomor dari ufw status numbered). sudo ufw delete 3
sudo ufw disable Menonaktifkan firewall.
sudo ufw reset Mereset UFW (menghapus semua aturan dan menonaktifkan). Gunakan dengan sangat hati-hati!

3. Penerapan Firewall IPTables

IPTables adalah utilitas baris perintah yang telah lama menjadi standar untuk mengkonfigurasi firewall Netfilter. UFW sendiri hanyalah antarmuka yang menyederhanakan perintah IPTables.

Sebelum memahami IPTables secara dalam, kita harus tau tiga konsep intinya: Tabel (Tables), Rantai (Chains), dan Aturan (Rules).

Komponen Deskripsi Fungsi
Tabel (Tables) Kumpulan Rantai yang dikelompokkan berdasarkan tujuan spesifik. Memisahkan aturan firewall, NAT, dan modifikasi paket.
Rantai (Chains) Urutan aturan yang harus dilewati oleh paket. Menentukan titik di mana paket dievaluasi dalam alur jaringan (flow).
Aturan (Rules) Perintah tunggal yang menentukan kriteria pencocokan dan tindakan. Mencocokkan paket (berdasarkan IP, port, protokol, dll.) dan memutuskan nasibnya.

Tabel filter, Ini adalah tabel yang paling sering kita gunakan untuk membangun firewall.

Chains Kapan Digunakan Tujuan
INPUT Paket yang masuk ke server. Melindungi layanan server (SSH, Web Server, Database).
OUTPUT Paket yang keluar dari server Mengontrol koneksi keluar (misalnya, server Anda menghubungi API eksternal).
FORWARD Paket yang melewati server. Mengontrol lalu lintas antar jaringan yang dilewati server.

Tabel NAT (Network Address Translation), Digunakan untuk memodifikasi alamat IP atau port dalam header paket.

Chains Kapan Digunakan Contoh
PREROUTING Mengubah alamat tujuan sebelum keputusan routing. Port Forwarding (misalnya, mengubah permintaan Port 80 dari internet menjadi Port 8080 di server lokal).
POSTROUTING Mengubah alamat sumber setelah keputusan routing. Masquerading (Berbagi internet/NAT).

Targets, Setiap aturan yang cocok dengan paket harus mengambil tindakan. Keputusan utama yang sering digunakan adalah:

Targets Tindakan Efek
ACCEPT Izinkan paket. Paket akan diizinkan untuk melalui server. (contohnya: ping akan replay)
DROP Abaikan paket tanpa memberi tahu pengirim. Koneksi akan timeout (penyerang tidak tahu server ada).
REJECT Abaikan paket, tetapi kirim pemberitahuan (ICMP/TCP RST) ke pengirim. Koneksi akan ditolak seketika (lebih informatif bagi pengirim).

Sintaks perintah dasar dari IPTables

iptables [-t table] [-A/I/D chain] [kriteria] [-j target]

Pilihan opsi yang sering digunakan di sintaks iptables.

Opsi Keterangan
-t table Menentukan tabel (default adalah filter).
-A chain Menambahkan aturan ke akhir rantai.
-I chain Menambahkan aturan ke awal rantai (sisip).
-D chain Menghapus aturan.
-p protocol Mencocokkan protokol (tcp, udp, icmp, all).
--dport N Mencocokkan port tujuan (hanya dengan -p tcp atau -p udp).
-s IP/CIDR Mencocokkan alamat sumber (Source).
-d IP/CIDR Mencocokkan alamat tujuan (Destination).
-j target Tentukan tindakan/keputusan.
-P Menentukan tindakan akhir untuk semua paket yang tidak cocok dengan aturan manapun dalam rantai.

Contoh konfigurasi awal (firewall dasar iptables). Atur kebijakan default, Kita ingin memblokir semua lalu lintas masuk dan forwarding secara default, dan hanya mengizinkan yang kita definisikan.

# Set default policy untuk DROP (blokir semua)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP

# Izinkan semua lalu lintas keluar (default aman untuk server, agar server tetap bisa mengakses internet)
sudo iptables -P OUTPUT ACCEPT

Izinkan loopback (lokal), Lalu lintas loopback (lalu lintas internal) penting agar layanan server dapat berkomunikasi satu sama lain.

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

Izinkan Koneksi yang Ada dan Terkait (Stateful), Ini adalah aturan penting. Setelah koneksi diizinkan (misalnya, kita login SSH), semua paket yang merupakan bagian dari sesi yang sama diizinkan tanpa diperiksa lagi.

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Buka layanan penting, contohnya Port SSH (Port 22) dan HTTP/HTTPS (Web).

# Izinkan SSH (hanya TCP)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Izinkan HTTP (Port 80) dan HTTPS (Port 443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Agar aturan tidak hilang setelah reboot (jika Anda menggunakan iptables-persistent) save dengen menggunakan perintah berikut:

sudo netfilter-persistent save

Untuk melihat apa saja aturan yang sudah kita buat, bisa menggunakan perintah berikut.

# Tampilkan aturan dalam format tabel (default filter)
sudo iptables -L -v -n

**Selesai.** Anda telah mencapai akhir dari topik ini. Silakan pilih topik lain melalui Sidebar di sebelah kiri atau kembali ke Halaman Modul Utama.