---
title: "Firewalld di AlmaLinux 9, Cara Buka dan Tutup Port"
description: "Memahami zona, aturan runtime dan permanent, serta cara membuka dan menutup port atau service dengan firewall-cmd di AlmaLinux 9 tanpa salah konfigurasi."
url: "https://nivelva.com/insight/firewalld-almalinux-9-cara-buka-tutup-port"
category: "Server \u0026 Infrastruktur"
tags: ["firewalld","almalinux 9","firewall","port","keamanan server"]
author: "Theresia Candiawan"
published: "2026-11-07T09:28:00+07:00"
updated: "2026-11-07T09:28:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Firewalld di AlmaLinux 9, Cara Buka dan Tutup Port

> **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.

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

```bash
sudo systemctl enable --now firewalld
sudo firewall-cmd --state
```

Jawaban `running` berarti firewalld aktif. Setelah itu lihat zona yang sedang dipakai:

```bash
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.
- `internal` dan `home`: 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 `--permanent` hanya mengubah runtime. Langsung berlaku, hilang saat reload atau reboot.
- Perintah dengan `--permanent` hanya mengubah disk. Belum berlaku sampai `firewall-cmd --reload`.
- `firewall-cmd --runtime-to-permanent` menyimpan 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

```bash
# 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:

```bash
# 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](https://nivelva.com/insight/cara-setting-ufw-firewall-ubuntu-24-04-pemula).

| 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](https://nivelva.com/insight/port-penting-server).

> **Ganti port SSH? Atur SELinux juga:**
>
> Di AlmaLinux 9, SELinux aktif secara bawaan dan hanya mengizinkan sshd memakai port yang terdaftar. Selain membuka port baru di firewalld, daftarkan port tersebut dengan `sudo semanage port -a -t ssh_port_t -p tcp 2222`, lalu uji login dari terminal kedua sebelum menghapus service `ssh` dari zona.

## 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](https://nivelva.com/insight/cara-mengamankan-docker-vps-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.

## Sumber

- <https://firewalld.org/documentation/>
- <https://firewalld.org/documentation/man-pages/firewall-cmd.html>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/firewalld-almalinux-9-cara-buka-tutup-port
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
