Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
Keamanan Linux

Cara Mengonfigurasi Firewall dengan Firewalld di Linux (Panduan Lengkap)

Mengamankan server Linux Anda terhadap akses tidak sah dan lalu lintas berbahaya bukanlah pilihan — ini adalah tanggung jawab fundamental bagi setiap administrator sistem. Baik Anda menjalankan proyek pribadi, aplikasi bisnis, atau server web produksi, firewall yang dikonfigurasi dengan benar adalah pertahanan pertama dan paling kritis Anda. Firewalld adalah salah satu alat manajemen firewall paling powerful dan fleksibel yang tersedia di Linux, menawarkan manajemen aturan dinamis, kontrol lalu lintas berbasis zona, dan dukungan aturan kaya — semuanya tanpa memerlukan restart layanan penuh ketika perubahan diterapkan.

Panduan komprehensif ini memandu Anda melalui semua yang perlu Anda ketahui: menginstal Firewalld, memahami zona, mengelola layanan dan port, menulis aturan kaya, dan memantau firewall Anda secara real time. Jika Anda hosting di VPS atau Server Dedicated dari AlexHost, panduan ini akan membantu Anda mengunci lingkungan Anda dan mempertahankan postur keamanan yang kuat dan adaptif.

Apa Itu Firewalld dan Mengapa Anda Harus Menggunakannya?

Firewalld adalah daemon manajemen firewall dinamis yang tersedia di sebagian besar distribusi Linux utama, termasuk CentOS, RHEL, Fedora, Rocky Linux, AlmaLinux, dan semakin banyak juga di Debian dan Ubuntu. Berbeda dengan pendekatan iptables yang lebih lama — di mana setiap perubahan aturan memerlukan pembersihan dan pemuatan ulang seluruh ruleset — Firewalld menerapkan perubahan secara dinamis saat runtime tanpa mengganggu koneksi aktif.

Keuntungan Utama Firewalld

  • Arsitektur berbasis zona — tetapkan tingkat kepercayaan yang berbeda untuk antarmuka jaringan atau rentang IP yang berbeda
  • Pembaruan aturan dinamis — terapkan perubahan tanpa memulai ulang firewall atau menghapus koneksi yang ada
  • Abstraksi layanan — kelola lalu lintas berdasarkan nama layanan (misalnya, http, ssh) daripada nomor port mentah
  • Aturan kaya — tulis aturan kompleks dan bersyarat yang menargetkan IP, protokol, dan tindakan tertentu
  • Integrasi D-Bus — memungkinkan aplikasi dan layanan lain berinteraksi dengan firewall secara terprogram
  • Dukungan IPv4 dan IPv6 — kelola kedua keluarga protokol dari satu antarmuka

Prasyarat

Sebelum melanjutkan, pastikan Anda memiliki:

  • Server Linux yang menjalankan CentOS 7/8/9, RHEL, Fedora, Rocky Linux, AlmaLinux, Debian, atau Ubuntu
  • Akses root atau sudo ke server
  • Pemahaman dasar tentang perintah terminal Linux
  • Sesi SSH aktif (biarkan tetap terbuka sepanjang waktu — Anda akan memodifikasi aturan firewall)

> Peringatan Kritis: Selalu pastikan bahwa SSH (port 22 secara default) secara eksplisit diizinkan dalam aturan firewall Anda sebelum mengaktifkan Firewalld. Mengunci diri Anda keluar dari server jarak jauh adalah kesalahan yang umum dan dapat dihindari.

Langkah 1: Menginstal Firewalld

Firewalld disertakan dalam repositori default sebagian besar distribusi Linux utama. Gunakan pengelola paket yang sesuai untuk sistem Anda.

Pada CentOS / RHEL / Rocky Linux / AlmaLinux

sudo yum install firewalld -y

Atau, pada versi yang lebih baru menggunakan DNF:

sudo dnf install firewalld -y

Pada Fedora

sudo dnf install firewalld -y

Pada Debian / Ubuntu

Meskipun Firewalld paling sering dikaitkan dengan sistem berbasis RHEL, ini sepenuhnya didukung pada distribusi berbasis Debian:

sudo apt update
sudo apt install firewalld -y

> Catatan untuk pengguna Ubuntu/Debian: Jika ufw saat ini aktif di sistem Anda, nonaktifkan sebelum mengaktifkan Firewalld untuk menghindari konflik:

> “`bash

> sudo ufw disable

> “`

Langkah 2: Memulai dan Mengaktifkan Firewalld

Setelah instalasi, mulai layanan Firewalld dan konfigurasikan untuk diluncurkan secara otomatis saat boot sistem:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Verifikasi bahwa layanan berjalan dengan benar:

sudo systemctl status firewalld

Anda harus melihat output serupa dengan:

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since ...

Jika status menunjukkan active (running), Firewalld beroperasi dan siap dikonfigurasi.

Langkah 3: Memahami Zona Firewalld

Model berbasis zona adalah fondasi dari arsitektur Firewalld. Sebuah zona mendefinisikan tingkat kepercayaan untuk koneksi jaringan atau antarmuka. Setiap zona berisi set aturannya sendiri yang menentukan lalu lintas mana yang diizinkan atau ditolak.

Zona Firewalld Bawaan

ZonaTingkat KepercayaanKasus Penggunaan Umum
dropTerendahSemua koneksi masuk dijatuhkan tanpa balasan
blockSangat RendahKoneksi masuk ditolak dengan pesan ICMP
publicRendahZona default untuk jaringan publik yang tidak dipercaya
externalRendahUntuk antarmuka yang menghadap ke luar dengan penyamaran NAT
dmzSedangServer yang dapat diakses dari luar tetapi terisolasi secara internal
workSedang-TinggiJaringan kerja dengan kepercayaan sedang
homeTinggiJaringan rumah di mana host lain dipercaya
internalTinggiJaringan internal, mirip dengan rumah
trustedTertinggiSemua koneksi diterima

Periksa Zona Default Saat Ini

sudo firewall-cmd --get-default-zone

Daftar Semua Zona yang Tersedia

sudo firewall-cmd --get-zones

Lihat Zona Aktif Saat Ini dan Antarmukanya

sudo firewall-cmd --get-active-zones

Contoh output:

public
  interfaces: eth0

Langkah 4: Mengubah Zona Default

Contoh 1 — Mengatur Zona Default ke public (Direkomendasikan untuk VPS/Server Dedicated)

Untuk sebagian besar server yang menghadap internet, public adalah zona default yang sesuai. Ini menerapkan tingkat kepercayaan yang konservatif dan hanya memungkinkan lalu lintas yang secara eksplisit diizinkan:

sudo firewall-cmd --set-default-zone=public

Verifikasi perubahannya:

sudo firewall-cmd --get-default-zone

Output yang diharapkan:

public

Contoh 2 — Mengatur Zona Default ke home

Jika server Anda beroperasi di jaringan pribadi yang terpercaya (seperti lab rumah atau lingkungan pengembangan internal), zona home memungkinkan komunikasi yang lebih permisif antara host yang terpercaya:

sudo firewall-cmd --set-default-zone=home

Verifikasi:

sudo firewall-cmd --get-default-zone

Output yang diharapkan:

home

Contoh 3 — Mengatur Zona Default ke work

Untuk server di jaringan perusahaan atau kerja di mana kepercayaan sedang sesuai:

sudo firewall-cmd --set-default-zone=work

Verifikasi:

sudo firewall-cmd --get-default-zone

Output yang diharapkan:

work

Langkah 5: Mengelola Layanan dengan Firewalld

Firewalld mencakup perpustakaan definisi layanan yang telah ditentukan sebelumnya yang memetakan nama layanan ke port dan protokol yang sesuai. Ini membuat jauh lebih mudah untuk mengelola aturan berdasarkan tujuan daripada nomor port mentah.

Daftar Semua Layanan yang Telah Ditentukan Sebelumnya

sudo firewall-cmd --get-services

Izinkan Layanan di Zona

Untuk mengizinkan lalu lintas HTTP (port 80/TCP) di zona public secara permanen:

sudo firewall-cmd --zone=public --add-service=http --permanent

Untuk mengizinkan lalu lintas HTTPS (port 443/TCP):

sudo firewall-cmd --zone=public --add-service=https --permanent

Untuk mengizinkan SSH (port 22/TCP) — selalu pastikan ini diizinkan sebelum membuat perubahan lain:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Terapkan Perubahan dengan Memuat Ulang Firewalld

Bendera --permanent menulis aturan ke konfigurasi persisten tetapi tidak menerapkannya segera ke firewall yang sedang berjalan. Selalu muat ulang setelah membuat perubahan permanen:

sudo firewall-cmd --reload

Verifikasi Layanan di Zona

sudo firewall-cmd --zone=public --list-services

Contoh output:

dhcpv6-client http https ssh

Hapus Layanan dari Zona

Untuk menghapus HTTPS dari zona public:

sudo firewall-cmd --zone=public --remove-service=https --permanent
sudo firewall-cmd --reload

Langkah 6: Mengelola Port Secara Langsung

Dalam kasus di mana layanan tidak memiliki definisi Firewalld yang telah ditentukan sebelumnya, Anda dapat membuka atau menutup port tertentu secara langsung.

Buka Port Tertentu

Untuk membuka port 8080 melalui TCP di zona public:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Untuk membuka port UDP (misalnya, port 53 untuk DNS):

sudo firewall-cmd --zone=public --add-port=53/udp --permanent
sudo firewall-cmd --reload

Untuk membuka rentang port (misalnya, 6000–6100 TCP):

sudo firewall-cmd --zone=public --add-port=6000-6100/tcp --permanent
sudo firewall-cmd --reload

Tutup Port Tertentu

Untuk menutup port 8080:

sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload

Daftar Semua Port Terbuka di Zona

sudo firewall-cmd --zone=public --list-ports

Step 7: Advanced Configuration with Rich Rules

Rich rules memberikan Anda kontrol granular dan bersyarat atas lalu lintas — jauh melampaui apa yang diizinkan oleh aturan layanan atau port sederhana. Mereka mendukung penyaringan berdasarkan IP sumber, IP tujuan, protokol, port, dan tindakan (accept, reject, drop, log).

Sintaks Rich Rule

rule [family="<ipv4|ipv6>"]
     [source address="<IP/CIDR>"]
     [destination address="<IP/CIDR>"]
     [service name="<service>"] | [port port="<port>" protocol="<tcp|udp>"]
     [log [prefix="<prefix>"] [level="<level>"] [limit value="<rate>"]]
     [accept|reject|drop]

Contoh 1 — Izinkan SSH dari Alamat IP Tertentu Saja

Ini adalah salah satu konfigurasi keamanan paling penting untuk server jarak jauh apa pun. Jika Anda mengelola server Anda dari alamat IP tetap, batasi akses SSH ke IP tersebut secara eksklusif:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.50" service name="ssh" accept' --permanent
sudo firewall-cmd --reload

Contoh 2 — Blokir Semua Lalu Lintas dari Alamat IP Tertentu

Untuk sepenuhnya memblokir alamat IP yang menghasilkan lalu lintas berbahaya:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="198.51.100.25" drop' --permanent
sudo firewall-cmd --reload

Contoh 3 — Izinkan HTTP dari Subnet Tertentu

Untuk mengizinkan lalu lintas HTTP hanya dari subnet internal terpercaya (misalnya 192.168.1.0/24):

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept' --permanent
sudo firewall-cmd --reload

Contoh 4 — Batasi Laju Koneksi SSH untuk Mencegah Brute Force

Catat dan batasi upaya koneksi SSH untuk mengurangi paparan serangan brute-force:

sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" log prefix="SSH-ATTEMPT" level="notice" limit value="3/m" accept' --permanent
sudo firewall-cmd --reload

Contoh 5 — Izinkan Port Tertentu dari IP Tertentu

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="3306" protocol="tcp" accept' --permanent
sudo firewall-cmd --reload

Daftar Semua Rich Rules di Zona

sudo firewall-cmd --zone=public --list-rich-rules

Hapus Rich Rule

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="198.51.100.25" drop' --permanent
sudo firewall-cmd --reload

Langkah 8: Memantau dan Mengaudit Firewall Anda

Meninjau konfigurasi firewall secara teratur sangat penting untuk mempertahankan postur keamanan yang kuat. Firewalld menyediakan beberapa perintah untuk memeriksa status aturan saat ini.

Lihat Konfigurasi Lengkap untuk Zona Default

sudo firewall-cmd --list-all

Contoh output:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule family="ipv4" source address="203.0.113.50" service name="ssh" accept

Lihat Konfigurasi untuk Semua Zona

sudo firewall-cmd --list-all-zones

Lihat Konfigurasi untuk Zona Tertentu

sudo firewall-cmd --zone=dmz --list-all

Periksa Apakah Layanan Tertentu Diizinkan

sudo firewall-cmd --zone=public --query-service=http

Periksa Apakah Port Tertentu Terbuka

sudo firewall-cmd --zone=public --query-port=8080/tcp

Langkah 9: Runtime vs. Permanent Rules — Memahami Perbedaannya

Firewalld beroperasi dengan dua lapisan konfigurasi yang berbeda:

LapisanFlagPersistensiUse Case
Runtime*(no flag)*Hilang saat reload/rebootMenguji rules secara sementara
Permanent--permanentBertahan setelah reload dan rebootKonfigurasi produksi

Best Practice Workflow

  1. Uji rule pada runtime terlebih dahulu (tanpa --permanent) untuk memverifikasi bahwa rule berfungsi seperti yang diharapkan
  2. Tambahkan rule secara permanen setelah dikonfirmasi
  3. Reload Firewalld untuk menyinkronkan konfigurasi runtime dan permanent
# Step 1: Test at runtime
sudo firewall-cmd --zone=public --add-service=http

# Step 2: Verify it works as expected, then make it permanent
sudo firewall-cmd --zone=public --add-service=http --permanent

# Step 3: Reload to sync
sudo firewall-cmd --reload

Alternatifnya, terapkan rule permanent dan reload segera dalam satu workflow:

sudo firewall-cmd --zone=public --add-service=http --permanent && sudo firewall-cmd --reload

Langkah 10: Menetapkan Antarmuka Jaringan ke Zona

Jika server Anda memiliki beberapa antarmuka jaringan (umum pada Dedicated Servers dengan NIC publik dan privat), Anda dapat menetapkan setiap antarmuka ke zona berbeda dengan tingkat kepercayaan berbeda.

Menetapkan Antarmuka ke Zona

sudo firewall-cmd --zone=internal --add-interface=eth1 --permanent
sudo firewall-cmd --reload

Mengubah Zona Antarmuka

sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
sudo firewall-cmd --reload

Menghapus Antarmuka dari Zona

sudo firewall-cmd --zone=internal --remove-interface=eth1 --permanent
sudo firewall-cmd --reload

Langkah 11: Mengaktifkan IP Masquerading dan Port Forwarding

Untuk server yang bertindak sebagai gateway atau menjalankan NAT (Network Address Translation), Firewalld mendukung masquerading dan port forwarding secara native.

Aktifkan Masquerading (NAT)

sudo firewall-cmd --zone=external --add-masquerade --permanent
sudo firewall-cmd --reload

Forward Port (misalnya, Forward Port Eksternal 80 ke Port Internal 8080)

sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
sudo firewall-cmd --reload

Forward Traffic ke Host Berbeda

sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.10 --permanent
sudo firewall-cmd --reload

Konfigurasi Keamanan Praktis untuk Server AlexHost

Jika Anda menjalankan web server, database server, atau application server pada infrastruktur AlexHost, berikut adalah konfigurasi Firewalld baseline yang direkomendasikan:

Konfigurasi Web Server Baseline

# Allow SSH (restrict to your IP in production)
sudo firewall-cmd --zone=public --add-service=ssh --permanent

# Allow HTTP and HTTPS
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

# Reload to apply
sudo firewall-cmd --reload

# Verify
sudo firewall-cmd --list-all

> Pro Tip: Pasangkan konfigurasi firewall Anda dengan SSL Certificate yang valid untuk memastikan semua traffic web dienkripsi end-to-end. AlexHost menawarkan SSL certificates untuk semua lingkungan hosting.

Konfigurasi Database Server Baseline (MySQL/MariaDB)

# Allow MySQL only from a specific application server IP
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="3306" protocol="tcp" accept' --permanent

# Block direct MySQL access from the public internet
sudo firewall-cmd --zone=public --remove-service=mysql --permanent 2>/dev/null

sudo firewall-cmd --reload

Konfigurasi Server cPanel/WHM Baseline

Jika Anda menggunakan VPS dengan cPanel, Anda perlu membuka port yang diperlukan oleh cPanel dan WHM:

# Web traffic
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

# cPanel/WHM ports
sudo firewall-cmd --zone=public --add-port=2082/tcp --permanent   # cPanel HTTP
sudo firewall-cmd --zone=public --add-port=2083/tcp --permanent   # cPanel HTTPS
sudo firewall-cmd --zone=public --add-port=2086/tcp --permanent   # WHM HTTP
sudo firewall-cmd --zone=public --add-port=2087/tcp --permanent   # WHM HTTPS
sudo firewall-cmd --zone=public --add-port=2095/tcp --permanent   # Webmail HTTP
sudo firewall-cmd --zone=public --add-port=2096/tcp --permanent   # Webmail HTTPS

# Mail ports
sudo firewall-cmd --zone=public --add-service=smtp --permanent
sudo firewall-cmd --zone=public --add-service=imaps --permanent
sudo firewall-cmd --zone=public --add-service=pop3s --permanent

sudo firewall-cmd --reload

Troubleshooting Common Firewalld Issues

Issue 1: Firewalld Fails to Start

Check for conflicts with other firewall tools:

sudo systemctl status iptables
sudo systemctl stop iptables
sudo systemctl disable iptables
sudo systemctl start firewalld

Issue 2: Rules Not Persisting After Reboot

Ensure you used the --permanent flag and reloaded:

sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload

The --runtime-to-permanent command saves all current runtime rules to the permanent configuration.

Issue 3: Locked Out of SSH

If you accidentally blocked SSH access, you will need to access the server via console (available through AlexHost's VPS control panel) and run:

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload

Issue 4: Checking Firewalld Logs

sudo journalctl -u firewalld -f

Or check the system log for firewall-related messages:

sudo grep -i firewall /var/log/messages

Lembar Referensi Cepat Firewalld

TugasPerintah
Periksa statussudo systemctl status firewalld
Mulai Firewalldsudo systemctl start firewalld
Hentikan Firewalldsudo systemctl stop firewalld
Aktifkan saat bootsudo systemctl enable firewalld
Dapatkan zona defaultsudo firewall-cmd --get-default-zone
Daftar semua zonasudo firewall-cmd --get-zones
Daftar zona aktifsudo firewall-cmd --get-active-zones
Atur zona defaultsudo firewall-cmd --set-default-zone=public
Tambahkan layanansudo firewall-cmd --zone=public --add-service=http --permanent
Hapus layanansudo firewall-cmd --zone=public --remove-service=http --permanent
Buka portsudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
Tutup portsudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
Daftar layanansudo firewall-cmd --zone=public --list-services
Daftar portsudo firewall-cmd --zone=public --list-ports
Daftar semua aturansudo firewall-cmd --list-all
Tambahkan aturan richsudo firewall-cmd --zone=public --add-rich-rule='...' --permanent
Simpan aturan runtimesudo firewall-cmd --runtime-to-permanent
Muat ulang Firewalldsudo firewall-cmd --reload
Mode panik (blokir semua)sudo firewall-cmd --panic-on
Nonaktifkan mode paniksudo firewall-cmd --panic-off

Kesimpulan

Firewalld adalah alat manajemen firewall yang luar biasa mampu dan fleksibel yang memberikan administrator sistem Linux kontrol yang presisi dan dinamis atas lalu lintas jaringan. Dengan menguasai zona, layanan, aturan port, dan aturan kaya, Anda dapat membangun arsitektur keamanan berlapis dan adaptif yang melindungi server Anda dari akses tidak sah, serangan brute-force, dan ancaman tingkat jaringan.

Prinsip-prinsip kunci untuk dibawa maju:

  1. Selalu izinkan SSH sebelum mengaktifkan firewall untuk menghindari mengunci diri sendiri
  2. Gunakan flag --permanent untuk semua aturan produksi, dan selalu diikuti dengan --reload
  3. Batasi layanan sensitif (SSH, database, panel admin) ke alamat IP terpercaya tertentu menggunakan aturan kaya
  4. Tinjau aturan firewall Anda secara teratur — postur keamanan Anda harus berkembang seiring perubahan infrastruktur Anda
  5. Uji aturan saat runtime terlebih dahulu, kemudian buat permanen setelah diverifikasi

Baik Anda mengelola satu VPS atau armada Dedicated Servers, AlexHost menyediakan infrastruktur, performa, dan akses root penuh yang Anda butuhkan untuk menerapkan konfigurasi keamanan tingkat enterprise. Pasangkan setup Firewalld Anda dengan SSL Certificates untuk komunikasi terenkripsi dan jelajahi VPS Control Panels untuk manajemen server yang disederhanakan — semuanya tersedia di platform AlexHost yang terpercaya dan berkinerja tinggi.