Firewalld adalah tool manajemen firewall dinamis berbasis zona untuk Linux. Tool ini memudahkan pengelolaan keamanan VPS lewat antarmuka firewall-cmd. Fitur utamanya membedakan aturan sementara dan permanen, memungkinkan kamu menguji konfigurasi dengan aman tanpa takut terkunci dari server.
Halo, Kawan Belajar! Bayangkan VPS kamu seperti sebuah kantor yang punya banyak pintu. Tanpa firewall, semua pintu itu terbuka lebar untuk siapa saja, termasuk tamu yang tidak diundang. Di sinilah firewalld hadir sebagai penjaga pintu yang cerdas. Kamu punya kendali penuh untuk menentukan siapa yang boleh masuk, siapa yang harus ditolak, dan kapan aturan tersebut berlaku.
Di panduan ini, kita akan melakukan implementasi firewalld dari awal hingga konfigurasi siap produksi. Panduan ini mencakup berbagai distribusi Linux populer seperti Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, RHEL, hingga Fedora.
firewalld adalah firewall management tool berbasis zona yang menjadi standar di banyak distribusi Linux modern. Tool ini bekerja di atas iptables atau nftables (tergantung versi OS), tapi menyediakan antarmuka yang jauh lebih ramah lewat perintah firewall-cmd.
Keunggulan utama firewalld dibanding mengelola iptables secara langsung adalah kemampuannya membedakan aturan sementara dan permanen. Aturan sementara langsung aktif tapi hilang saat server restart, sedangkan aturan permanen akan terus tersimpan dan baru aktif setelah di-reload. Fitur ini memungkinkan kamu untuk menguji aturan terlebih dahulu tanpa takut terkunci permanen dari server jika terjadi kesalahan konfigurasi.
Konsep kunci dalam firewalld adalah zona. Setiap zona mendefinisikan tingkat kepercayaan terhadap koneksi yang masuk. Antarmuka jaringan pada server kamu (misalnya eth0) akan diasosiasikan dengan tepat satu zona.
| Zona | Tingkat Kepercayaan | Deskripsi |
|---|---|---|
| drop | Paling ketat | Semua paket masuk dibuang tanpa respons apapun. |
| block | Sangat ketat | Koneksi masuk ditolak dengan pesan ICMP. |
| public | Sedang (default) | Hanya service yang diizinkan yang bisa masuk. Zona ini cocok untuk VPS. |
| external | Sedang | Untuk konfigurasi NAT/masquerading, cocok sebagai router. |
| dmz | Sedang | Untuk server di area DMZ dengan akses yang dibatasi ketat. |
| work | Cukup percaya | Untuk jaringan kantor yang relatif dipercaya. |
| home | Percaya | Untuk jaringan rumah. |
| internal | Percaya | Mirip home, untuk jaringan internal organisasi. |
| trusted | Penuh | Semua koneksi diterima tanpa syarat. |
Untuk keperluan VPS publik, zona public adalah pilihan yang paling tepat dan secara otomatis sudah menjadi default.
Cara instalasi firewalld berbeda tergantung pada distribusi Linux yang kamu gunakan. Silakan pilih metode yang sesuai dengan sistem operasi VPS kamu.
Pada Ubuntu dan Debian, firewalld tidak terinstall secara default. Kamu bisa menginstalnya lewat apt:
sudo apt update
sudo apt install firewalld -y
sudo ufw disable agar tidak memicu konflik aturan. Selain itu, pada Ubuntu/Debian, firewalld tidak otomatis mengizinkan SSH saat pertama kali diaktifkan. Pastikan kamu menambahkan izin SSH sebelum mengaktifkan firewalld (dibahas di Langkah 4).
Pada keluarga distro RHEL, firewalld biasanya sudah terinstall. Jika belum, kamu bisa menginstalnya lewat dnf:
sudo dnf install firewalld -y
Khusus untuk CentOS 7 yang masih menggunakan yum:
sudo yum install firewalld -y
public secara default. Kamu bisa langsung lanjut ke Langkah 2 untuk memastikan statusnya.
Fedora sudah menyertakan firewalld secara default sebagai bagian dari instalasi sistem. Kamu tidak perlu melakukan instalasi tambahan dan bisa langsung berlanjut ke Langkah 2.
Langkah selanjutnya adalah mengaktifkan firewalld agar berjalan otomatis setiap kali server mengalami restart. Kamu bisa mengaktifkan sekaligus menjalankannya sekarang dengan perintah ini:
sudo systemctl enable --now firewalld
Perintah --now ini menggabungkan dua aksi sekaligus dalam satu baris, yaitu enable (aktif saat proses boot) dan start (jalankan seketika).
Selalu pastikan bahwa service telah berjalan dengan semestinya. Verifikasi status firewalld menggunakan perintah berikut:
sudo firewall-cmd --state
Jika outputnya menampilkan running, berarti sistem sudah bekerja. Jika yang muncul adalah not running, coba jalankan ulang servicenya menggunakan sudo systemctl start firewalld.
Kamu juga perlu mengecek zona apa yang sedang aktif beserta antarmuka jaringan yang menanganinya:
sudo firewall-cmd --get-active-zones
Bagian ini adalah inti dari manajemen firewalld, yaitu menentukan akses mana yang diizinkan masuk ke server kamu. Terdapat dua metode yang bisa digunakan: berdasarkan nama service (lebih mudah dibaca) atau berdasarkan nomor port (sangat fleksibel). Silakan gunakan metode yang paling sesuai dengan kondisimu.
Sistem firewalld sudah mengenali ratusan profil service umum. Kamu bisa melihat daftar lengkapnya dengan perintah:
sudo firewall-cmd --get-services
Untuk mengizinkan service tertentu seperti akses remote (SSH) atau web server (HTTP dan HTTPS), gunakan deretan perintah berikut:
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
Jika aplikasi yang kamu jalankan menggunakan port kustom non-standar, misalnya Node.js yang berjalan di port 3000. Kamu bisa membuka port tersebut dengan cara ini:
sudo firewall-cmd --add-port=3000/tcp --permanent
Format penulisan port selalu menggunakan pola NOMOR/protokol. Protokol yang umum digunakan dalam dunia jaringan adalah tcp atau udp.
sudo firewall-cmd --add-service=ssh --permanentsudo firewall-cmd --add-port=PORT_KAMU/tcp --permanent
Secara default, semua port yang belum diizinkan akan otomatis diblokir oleh firewalld di zona public. Namun, ada situasi di mana kamu perlu mencabut izin akses yang sebelumnya pernah dibuat, atau bahkan memblokir total akses dari sebuah alamat IP.
sudo firewall-cmd --remove-service=http --permanent
sudo firewall-cmd --remove-port=3000/tcp --permanent
Apabila ada IP mencurigakan yang terus mencoba mengakses server, kamu bisa memblokirnya secara spesifik menggunakan fitur rich rule:
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.1" reject' --permanent
Ganti 192.168.0.1 dengan IP target yang ingin kamu blokir.
192.168.0.0/24, gunakan notasi CIDR di rich rule:sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" reject' --permanentreject vs drop: reject mengirim pesan penolakan ke pengirim (lebih sopan, lebih cepat bagi client), sedangkan drop membuang paket tanpa respons (lebih tersembunyi, tapi client menunggu timeout).
Semua aturan yang ditambahkan menggunakan flag --permanent belum akan diterapkan secara nyata sampai kamu melakukan reload service-nya. Jalankan perintah ini:
sudo firewall-cmd --reload
Setelah itu, verifikasi secara menyeluruh semua aturan yang aktif pada zona utama server:
sudo firewall-cmd --list-all
Dari hasil output ini, kamu bisa melihat ringkasan penting pada bagian:
sudo firewall-cmd --list-all-zones
Jika perintah systemctl start firewalld gagal, periksa apakah ada firewall lain yang membuat konflik:
sudo systemctl status ufw
sudo systemctl status iptables
Jika salah satunya aktif, pastikan kamu menonaktifkannya terlebih dahulu sebelum menjalankan firewalld:
sudo systemctl disable --now ufw
Ini adalah tanda bahwa port SSH belum diizinkan sebelum firewalld diaktifkan. Jika kamu memiliki akses via console VPS (bukan SSH), login via konsol tersebut lalu ketikkan:
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
Apabila fitur konsol tersebut tidak tersedia, segera hubungi tim support provider VPS kamu untuk membuka akses.
Pastikan kamu menjalankan --reload setelah setiap perubahan dengan flag --permanent. Tanpa reload, aturan permanen tidak langsung aktif di sesi berjalan.
sudo firewall-cmd --reload
Gunakan perintah query untuk pengecekan cepat tanpa perlu membaca list yang panjang:
sudo firewall-cmd --query-port=80/tcp
sudo firewall-cmd --query-service=ssh
Output yes menandakan port sudah diizinkan, sedangkan respons no berarti belum.
Sejauh ini kamu sudah berhasil mengimplementasikan firewalld di VPS Linux dari nol, Kawan Belajar! Mulai dari instalasi di berbagai distro, memahami konsep zona, mengizinkan dan memblokir port, hingga memverifikasi konfigurasi final.
Langkah selanjutnya yang bisa kamu eksplorasi adalah mengatur zone policy untuk komunikasi antar-zona, atau mengintegrasikan firewalld dengan fail2ban agar IP yang mencoba brute force SSH otomatis diblokir secara dinamis. Selamat mencoba, dan semoga server kamu makin aman!
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.