Firewalld di AlmaLinux 9, Cara Buka dan Tutup Port
Memahami zona, aturan runtime dan permanent, serta cara membuka dan menutup port atau service dengan firewall-cmd di AlmaLinux 9 tanpa salah konfigurasi.
Jawaban singkat
Di AlmaLinux 9, buka port dengan firewall-cmd --permanent --add-port=8080/tcp atau --add-service=http, lalu firewall-cmd --reload. Tutup dengan --remove-port atau --remove-service. Tanpa --permanent, aturan hilang saat reload atau reboot.
Daftar isi
- Memastikan firewalld aktif
- Konsep yang menentukan cara kerja firewalld
- Zona: tingkat kepercayaan per antarmuka atau sumber
- Runtime atau permanent
- Service atau port
- Perintah buka dan tutup port
- Membuka port hanya untuk IP tertentu
- Perbandingan perintah firewalld dan UFW
- Kapan memakai service, kapan port, kapan rich rule?
- Hal yang sering membingungkan
- Pertanyaan yang sering diajukan
Firewalld adalah pengelola firewall bawaan AlmaLinux 9 (dan keluarga RHEL 9 lainnya). Ia tidak menulis aturan iptables secara langsung, melainkan mengelola aturan lewat konsep zona dan service, dengan nftables sebagai backend di versi ini. Alat yang kamu pakai sehari-hari adalah perintah firewall-cmd.
Yang dipertaruhkan bila salah paham cukup besar. Port yang dibuka tanpa --permanent akan hilang saat server reboot, sehingga aplikasi tiba-tiba tidak bisa diakses minggu depan. Sebaliknya, aturan permanent yang lupa di-reload belum berlaku, sehingga kamu mengira port sudah terbuka padahal belum. Dan menutup port SSH di zona yang salah bisa mengunci kamu dari server.
Memastikan firewalld aktif
sudo systemctl enable --now firewalld
sudo firewall-cmd --state
Jawaban running berarti firewalld aktif. Setelah itu lihat zona yang sedang dipakai:
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
Di instalasi standar, zona bawaan biasanya public, dan --list-all menampilkan service yang sudah diizinkan, umumnya ssh, cockpit, dan dhcpv6-client.
Konsep yang menentukan cara kerja firewalld
Zona: tingkat kepercayaan per antarmuka atau sumber
Setiap antarmuka jaringan (misalnya eth0) dan setiap rentang IP sumber bisa dimasukkan ke satu zona. Aturan buka-tutup berlaku per zona. Beberapa zona bawaan yang penting:
public: untuk antarmuka yang terhubung ke internet. Hanya service yang dipilih yang diizinkan.trusted: semua lalu lintas diizinkan. Cocok untuk jaringan internal yang benar-benar dipercaya, misalnya IP kantor.drop: semua paket masuk dibuang tanpa balasan.internaldanhome: untuk jaringan lokal dengan tingkat kepercayaan menengah.
Bila perintah ditulis tanpa --zone=, firewalld memakai zona bawaan. Di VPS dengan satu antarmuka publik, ini hampir selalu public.
Runtime atau permanent
Firewalld menyimpan dua salinan konfigurasi. Runtime adalah aturan yang sedang berlaku sekarang. Permanent adalah aturan yang disimpan di disk dan dimuat saat firewalld start atau reload.
- Perintah tanpa
--permanenthanya mengubah runtime. Langsung berlaku, hilang saat reload atau reboot. - Perintah dengan
--permanenthanya mengubah disk. Belum berlaku sampaifirewall-cmd --reload. firewall-cmd --runtime-to-permanentmenyimpan semua aturan runtime saat ini ke permanent.
Pola yang aman: uji dulu tanpa --permanent, pastikan semua berjalan, lalu simpan dengan --runtime-to-permanent. Atau langsung pakai --permanent diikuti --reload bila kamu sudah yakin.
Service atau port
Firewalld punya daftar service bawaan, seperti http (80/tcp), https (443/tcp), ssh (22/tcp), dan mysql (3306/tcp). Lihat seluruh daftarnya dengan firewall-cmd --get-services. Membuka service lebih mudah dibaca daripada angka port, sedangkan --add-port dipakai untuk port yang tidak punya definisi service, misalnya aplikasi di port 8080.
Perintah buka dan tutup port
# Buka service web
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Buka port tertentu
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=60000-61000/udp
# Terapkan
sudo firewall-cmd --reload
# Tutup lagi
sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --permanent --remove-service=cockpit
sudo firewall-cmd --reload
# Cek hasil
sudo firewall-cmd --list-services
sudo firewall-cmd --list-ports
Untuk membuka port sementara, misalnya saat menguji, gunakan --timeout: sudo firewall-cmd --add-port=8080/tcp --timeout=15m. Aturan ini otomatis hilang setelah 15 menit.
Membuka port hanya untuk IP tertentu
Port database atau panel admin sebaiknya tidak dibuka untuk semua orang. Ada dua cara:
# Cara 1: rich rule
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" port port="3306" protocol="tcp" accept'
# Cara 2: masukkan IP kantor ke zona trusted
sudo firewall-cmd --permanent --zone=trusted --add-source=203.0.113.5
sudo firewall-cmd --reload
Cara 1 lebih ketat karena hanya membuka satu port untuk satu IP. Cara 2 mengizinkan semua port dari IP tersebut, jadi pakai hanya untuk alamat yang benar-benar kamu kendalikan.
Perbandingan perintah firewalld dan UFW
Bila kamu terbiasa dengan UFW di Ubuntu, tabel berikut membantu menerjemahkan kebiasaan itu. Panduan UFW lengkapnya ada di setting UFW di Ubuntu 24.04.
| Tujuan | firewalld (AlmaLinux 9) | UFW (Ubuntu) |
|---|---|---|
| Cek status | firewall-cmd --state dan --list-all | ufw status verbose |
| Buka port | --permanent --add-port=8080/tcp lalu --reload | ufw allow 8080/tcp |
| Buka service | --permanent --add-service=https | ufw allow https |
| Tutup port | --permanent --remove-port=8080/tcp | ufw delete allow 8080/tcp |
| Izinkan satu IP | rich rule atau --zone=trusted --add-source | ufw allow from 203.0.113.5 |
| Aturan sementara | tanpa --permanent atau dengan --timeout | tidak ada padanan langsung |
| Konsep utama | zona per antarmuka atau sumber | satu daftar aturan |
Kapan memakai service, kapan port, kapan rich rule?
Pakai service untuk layanan standar seperti web, SSH, dan email. Nama service membuat --list-all mudah dibaca oleh admin lain, dan bila definisinya mencakup beberapa port, semuanya ikut terbuka. Pakai port untuk aplikasi buatan sendiri atau port nonstandar. Pakai rich rule atau zona trusted saat aksesnya harus dibatasi ke alamat tertentu, misalnya database, phpMyAdmin, atau dashboard monitoring. Daftar port yang umum dipakai server ada di port penting di server.
Hal yang sering membingungkan
Port container Docker tetap terbuka walau tidak diizinkan di zona public. Docker menulis aturan NAT sendiri untuk port yang dipublikasikan, sehingga lalu lintas ke port itu bisa melewati aturan zona yang kamu kira berlaku. Cara menanganinya dibahas di mengamankan Docker di VPS agar port tidak bocor.
Port sudah dibuka tapi tetap tidak bisa diakses. Cek tiga hal: aplikasinya benar-benar mendengarkan (ss -tlnp), aplikasinya mendengarkan di alamat publik dan bukan hanya 127.0.0.1, dan firewall di panel penyedia VPS tidak memblokir port yang sama.
Pertanyaan yang sering diajukan
Apa bedanya firewall-cmd --reload dan systemctl restart firewalld?
Reload memuat ulang aturan permanent tanpa memutus koneksi yang sudah berjalan. Restart menghentikan dan menyalakan layanan sepenuhnya. Untuk perubahan aturan, reload sudah cukup.
Apakah boleh memakai iptables langsung di AlmaLinux 9?
Sebaiknya jangan dicampur. Firewalld memakai nftables sebagai backend, dan aturan yang ditulis manual dengan alat lain bisa bertabrakan atau hilang saat firewalld di-reload.
Bagaimana menutup semua koneksi dalam keadaan darurat?
firewall-cmd --panic-on memblokir seluruh lalu lintas masuk dan keluar, termasuk sesi SSH-mu. Pakai hanya bila punya akses konsol dari panel VPS, lalu matikan dengan firewall-cmd --panic-off.
Di mana file konfigurasi zona disimpan?
Konfigurasi yang kamu ubah disimpan di /etc/firewalld/zones/. Definisi bawaan ada di /usr/lib/firewalld/ dan sebaiknya tidak diedit langsung.


