15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
01.11.2024

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 garis 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 Dedicated Server dari AlexHost, panduan ini akan membantu Anda mengamankan 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 di Debian dan Ubuntu juga. Tidak seperti pendekatan iptables yang lebih lama — di mana setiap perubahan aturan memerlukan flush dan reload seluruh ruleset — Firewalld menerapkan perubahan secara dinamis saat runtime tanpa mengganggu koneksi aktif.

Keuntungan Utama Firewalld

  • Arsitektur berbasis zona — tetapkan tingkat kepercayaan yang berbeda ke antarmuka jaringan atau rentang IP yang berbeda
  • Pembaruan aturan dinamis — terapkan perubahan tanpa restart firewall atau drop 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 spesifik, protokol, dan tindakan
  • 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 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 sendiri dari server jarak jauh adalah kesalahan umum dan dapat dihindari.

Langkah 1: Menginstal Firewalld

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

Di CentOS / RHEL / Rocky Linux / AlmaLinux

sudo yum install firewalld -y

Atau, di versi yang lebih baru menggunakan DNF:

sudo dnf install firewalld -y

Di Fedora

sudo dnf install firewalld -y

Di 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 arsitektur Firewalld. Sebuah zona mendefinisikan tingkat kepercayaan untuk koneksi jaringan atau antarmuka. Setiap zona berisi set aturannya sendiri yang menentukan lalu lintas apa 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 keluar dengan masquerading NAT
dmzMenengahServer yang dapat diakses dari luar tetapi terisolasi secara internal
workMenengah-TinggiJaringan kerja dengan kepercayaan moderat
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 Antarmuka Mereka

sudo firewall-cmd --get-active-zones

Contoh output:

public
  interfaces: eth0

Langkah 4: Mengubah Zona Default

Contoh 1 — Menetapkan Zona Default ke public (Direkomendasikan untuk VPS/Dedicated Servers)

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

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

Verifikasi perubahan:

sudo firewall-cmd --get-default-zone

Output yang diharapkan:

public

Contoh 2 — Menetapkan Zona Default ke home

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

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

Verifikasi:

sudo firewall-cmd --get-default-zone

Output yang diharapkan:

home

Contoh 3 — Menetapkan Zona Default ke work

Untuk server di jaringan korporat atau kerja di mana kepercayaan moderat 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 maksud daripada nomor port mentah.

Daftar Semua Layanan yang Telah Ditentukan Sebelumnya

sudo firewall-cmd --get-services

Izinkan Layanan di Zona

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

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

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

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

Untuk memungkinkan 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

Flag --permanent menulis aturan ke konfigurasi persisten tetapi tidak menerapkannya segera ke firewall yang 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 spesifik secara langsung.

Buka Port Spesifik

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 Spesifik

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

Langkah 7: Konfigurasi Lanjutan dengan Aturan Kaya

Aturan kaya memberi Anda kontrol granular dan bersyarat atas lalu lintas — jauh melampaui apa yang memungkinkan aturan layanan atau port sederhana. Mereka mendukung penyaringan berdasarkan IP sumber, IP tujuan, protokol, port, dan tindakan (terima, tolak, jatuhkan, log).

Sintaks Aturan Kaya

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 Spesifik 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 itu 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 Spesifik

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 Spesifik

Untuk memungkinkan lalu lintas HTTP hanya dari subnet internal yang dipercaya (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 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 Spesifik dari IP Spesifik

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 Aturan Kaya di Zona

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

Hapus Aturan Kaya

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

Secara teratur meninjau konfigurasi firewall Anda sangat penting untuk mempertahankan postur keamanan yang kuat. Firewalld menyediakan beberapa perintah untuk memeriksa status aturan Anda 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 Spesifik

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

Periksa Apakah Layanan Spesifik Diizinkan

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

Periksa Apakah Port Spesifik Terbuka

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

Langkah 9: Aturan Runtime vs. Permanen — Memahami Perbedaannya

Firewalld beroperasi dengan dua lapisan konfigurasi yang berbeda:

LapisanFlagPersistensiKasus Penggunaan
Runtime*(tidak ada flag)*Hilang saat reload/rebootMenguji aturan secara sementara
Permanen--permanentBertahan reload dan rebootKonfigurasi produksi

Alur Kerja Best Practice

  1. Uji aturan pada runtime terlebih dahulu (tanpa --permanent) untuk memverifikasi bahwa itu berfungsi seperti yang diharapkan
  2. Tambahkan aturan secara permanen setelah dikonfirmasi
  3. Muat ulang Firewalld untuk menyinkronkan konfigurasi runtime dan permanen
# 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 aturan permanen dan muat ulang segera dalam satu alur kerja:

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 di Dedicated Servers dengan NIC publik dan pribadi), Anda dapat menetapkan setiap antarmuka ke zona berbeda dengan tingkat kepercayaan berbeda.

Tetapkan Antarmuka ke Zona

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

Ubah Zona Antarmuka

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

Hapus 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

Teruskan Port (misalnya, Teruskan 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

Teruskan Lalu Lintas 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 server web, server database, atau server aplikasi di infrastruktur AlexHost, berikut adalah konfigurasi Firewalld baseline yang direkomendasikan:

Konfigurasi Server Web 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 Sertifikat SSL yang valid untuk memastikan semua lalu lintas web dienkripsi end-to-end. AlexHost menawarkan sertifikat SSL untuk semua lingkungan hosting.

Konfigurasi Server Database 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

Pemecahan Masalah Masalah Firewalld Umum

Masalah 1: Firewalld Gagal Dimulai

Periksa konflik dengan alat firewall lainnya:

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

Masalah 2: Atur

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai