Rocky Linux: mengelola zona, layanan, dan port firewalld
Di Rocky Linux, firewalld mengelola aturan firewall dan firewall-cmd mengatur zona, layanan, serta port. Untuk server jarak jauh, periksa zona aktif dan siapkan akses konsol pemulihan, uji aturan runtime dengan sesi SSH tetap terbuka, lalu simpan setelah akses baru dan seluruh aturan diverifikasi.
Panduan ini menjelaskan perintah yang diperlukan untuk administrasi firewall Rocky Linux secara rutin dan pemeriksaan yang membantu mencegah penguncian secara tidak sengaja.
Periksa status firewalld dan zona aktif
sudo firewall-cmd --state
sudo systemctl status firewalld
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-default-zone
Zona firewalld adalah kumpulan aturan yang terkait dengan tingkat kepercayaan. Sebuah zona dapat ditugaskan ke antarmuka jaringan, koneksi NetworkManager, atau alamat sumber. Periksa zona aktif sebelum membuat perubahan karena mengabaikan --zone dapat mengubah zona default alih-alih zona yang menangani lalu lintas yang ingin Anda kontrol.
Contoh di bawah menggunakan zona public; ganti dengan zona yang benar untuk antarmuka atau sumber Anda. Periksa koneksi NetworkManager aktif dan aturan yang sudah ada. Aturan di zona yang tidak menangani lalu lintas tersebut tidak akan memberi hasil yang diharapkan.
Mulai firewalld dan aktifkan saat boot
Jika layanan belum aktif, periksa konfigurasi permanen dan pastikan akses SSH serta konsol pemulihan tersedia sebelum memulainya: mengaktifkan firewall dapat langsung mengubah akses jaringan.
sudo systemctl enable --now firewalld
Verifikasi baik pengaturan boot maupun status layanan saat ini:
systemctl is-enabled firewalld
systemctl is-active firewalld
Jangan menonaktifkan seluruh firewall di server produksi hanya untuk membuat sebuah aplikasi dapat diakses. Izinkan hanya layanan, port, protokol, dan sumber yang diperlukan. Di lingkungan cloud, ingat bahwa grup keamanan, daftar kontrol akses jaringan, atau firewall penyedia dapat memblokir lalu lintas secara independen dari firewalld.
Pahami konfigurasi runtime dan permanen
| Konfigurasi | Kapan berlaku | Perilaku |
|---|---|---|
| Runtime | Segera setelah perintah dijalankan | Berguna untuk pengujian, tetapi perubahan dapat hilang setelah dimuat ulang, layanan di-restart, atau reboot. |
| Permanen | Disimpan dengan --permanent dan diaktifkan dengan memuat ulang |
Bertahan setelah reboot, tetapi banyak perubahan permanen tidak memengaruhi konfigurasi runtime saat ini secara langsung. |
Tambahkan aturan runtime terlebih dahulu dan uji aplikasi serta koneksi SSH baru. Contoh ini hanya membuka HTTP jika memang diperlukan pada zona yang sesuai. Jalankan tiga perintah secara terpisah: setelah --query-service menghasilkan yes, periksa juga konfigurasi seluruh zona runtime dan permanen sebelum menyimpan.
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --query-service=http
sudo firewall-cmd --runtime-to-permanent
--runtime-to-permanent menyalin seluruh konfigurasi runtime ke konfigurasi permanen dan menimpanya, bukan hanya aturan HTTP. Perubahan sementara lain juga ikut tersimpan; bandingkan dan cadangkan konfigurasi sesuai prosedur sebelum menjalankan perintah itu. Untuk perubahan permanen yang sudah dibuat terpisah, tinjau dampaknya sebelum reload:
sudo firewall-cmd --reload
Memuat ulang akan menggantikan konfigurasi runtime dengan konfigurasi permanen. Perubahan hanya pada runtime yang belum disimpan akan hilang.
Izinkan dan hapus layanan yang telah ditentukan
Daftar definisi layanan yang tersedia
firewall-cmd --get-services
firewall-cmd --info-service=http
Ketika firewalld sudah mendefinisikan layanan standar seperti HTTP, HTTPS, atau SSH, menggunakan nama layanan umumnya lebih jelas dalam menyampaikan tujuan daripada membuka port individu. Definisi layanan juga dapat mencakup lebih dari satu port, protokol, atau pembantu.
Izinkan layanan dalam konfigurasi runtime
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --add-service=https
Membuka firewall tidak memulai server web. Pastikan aplikasi berjalan dan mendengarkan pada alamat dan port yang diharapkan:
ss -lntup
Hapus layanan yang diizinkan
sudo firewall-cmd --zone=public --remove-service=http
Sebelum menghapus akses SSH pada mesin jarak jauh, siapkan konsol out-of-band dan jalur pemulihan. Pertahankan sesi yang ada selama pengujian dan verifikasi koneksi baru setelah aturan luas benar-benar dihapus.
Kelola port kustom
Izinkan port TCP atau UDP
sudo firewall-cmd --zone=public --add-port=8443/tcp
sudo firewall-cmd --zone=public --add-port=5000/udp
TCP dan UDP memerlukan aturan terpisah. Periksa dokumentasi aplikasi dan buka hanya protokol serta port yang benar-benar digunakan.
Izinkan rentang port
sudo firewall-cmd --zone=public --add-port=6000-6010/tcp
Sebelum membuka rentang yang luas, pastikan rentang yang tepat yang dibutuhkan aplikasi. Jika memungkinkan, batasi akses juga ke alamat sumber yang dikenal atau jaringan manajemen khusus.
Hapus dan daftar port
sudo firewall-cmd --zone=public --remove-port=8443/tcp
sudo firewall-cmd --zone=public --list-ports
Periksa aturan saat ini
sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --list-all-zones
sudo firewall-cmd --permanent --zone=public --list-all
Perintah pertama menampilkan aturan runtime untuk zona yang ditentukan, sementara perintah terakhir menampilkan aturan permanennya. Jika hasilnya berbeda, server dapat berperilaku berbeda setelah reload atau reboot berikutnya. Bandingkan kedua konfigurasi sebelum menyelesaikan perubahan pemeliharaan.
Batasi akses ke alamat sumber
Buat aturan kaya untuk sumber SSH
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10/32" service name="ssh" accept'
192.0.2.10 adalah alamat dokumentasi, bukan alamat untuk disalin ke dalam aturan produksi. Ganti dengan alamat IP publik tetap administrator atau jaringan internal yang dipercaya. Untuk IPv6, gunakan sumber dan keluarga IPv6 yang sesuai daripada menyalin contoh IPv4.
Uji sebelum menghapus akses SSH umum
Aturan accept ini hanya mengizinkan sumber IPv4 yang cocok; aturan ini sendiri tidak menolak sumber lain. Selama layanan SSH umum masih diizinkan, koneksi baru yang berhasil belum membuktikan aturan sumber bekerja. Siapkan konsol pemulihan dan pertahankan sesi yang ada; hapus izin umum hanya setelah meninjau semua aturan, lalu uji koneksi baru dari sumber yang diizinkan dan tidak diizinkan tanpa menutup sesi lama.
sudo firewall-cmd --zone=public --list-rich-rules
sudo firewall-cmd --zone=public --remove-service=ssh
Periksa izin SSH lain, aturan port, zona sumber, kebijakan dan IPv6: menghapus layanan SSH dari satu zona saja tidak menjamin akses lain tertutup. Periksa port SSH yang sebenarnya; layanan standar dapat tidak cocok dengan port kustom. Jika hasil berbeda, pulihkan aturan sebelumnya dari sesi atau konsol dan jangan simpan. Alamat yang berubah dapat mengunci administrator; pertimbangkan IP tetap, VPN atau jaringan manajemen.
Menghubungkan koneksi NetworkManager dengan zona
nmcli connection show --active
firewall-cmd --get-active-zones
Menetapkan zona ke profil koneksi NetworkManager menjaga konfigurasi jaringan dan asosiasi zona firewalld tetap bersama. Ganti nama koneksi contoh dengan nama persis yang ditampilkan oleh nmcli.
sudo nmcli connection modify 'System eth0' connection.zone public
NetworkManager mendokumentasikan penerapan connection.zone segera untuk koneksi aktif. Periksa kembali zona aktif dan uji akses baru. Jika versi atau keadaan Anda memerlukan pengaktifan ulang profil, langkah itu dapat memutus akses: lakukan hanya pada jendela pemeliharaan dengan konsol pemulihan tersedia.
Atasi koneksi yang diblokir dalam urutan yang berguna
- Jalankan
systemctl is-active firewallduntuk memastikan bahwa firewalld aktif. - Gunakan
firewall-cmd --get-active-zonesuntuk menemukan zona yang terkait dengan antarmuka atau sumber yang relevan. - Bandingkan output runtime dan permanen
--list-alluntuk zona tersebut. - Jalankan
ss -lntupuntuk memastikan bahwa aplikasi mendengarkan pada alamat, port, dan protokol yang diharapkan. - Periksa grup keamanan cloud, firewall penyedia, daftar kontrol akses router, dan aturan NAT.
- Tinjau penolakan SELinux dan log aplikasi.
Port firewalld yang terbuka tidak menjamin koneksi berhasil. Aplikasi harus berjalan dan mendengarkan pada alamat yang dapat dijangkau, dan setiap lapisan firewall atau routing lain di jalur juga harus mengizinkan lalu lintas tersebut.
Pertanyaan yang sering diajukan
Mengapa aturan yang ditambahkan dengan --permanent tidak berlaku segera?
Aturan permanen disimpan untuk penggunaan di masa depan dan biasanya menjadi aktif setelah firewall-cmd --reload. Pada server jarak jauh, uji aturan runtime yang setara terlebih dahulu, konfirmasi akses, lalu simpan dengan --runtime-to-permanent.
Mengapa sebuah layanan tidak dapat diakses meskipun portnya terbuka?
Periksa zona aktif, alamat dan protokol yang digunakan oleh aplikasi, firewall cloud atau jaringan upstream, NAT, dan SELinux. Firewalld hanya mengontrol satu lapisan jalur koneksi.
Haruskah saya menggunakan aturan layanan atau aturan port?
Gunakan layanan yang telah ditentukan sebelumnya ketika itu secara akurat mewakili aplikasi karena aturannya lebih mudah dipahami dan dapat mencakup semua protokol yang dibutuhkan. Gunakan port dan protokol eksplisit untuk aplikasi kustom atau port nonstandar.
Apakah aman untuk menghentikan firewalld untuk pemecahan masalah?
Menghentikan seluruh firewall dapat mengekspos setiap layanan yang sedang mendengarkan dan tidak aman pada server produksi. Periksa zona aktif, log, dan aturan saat ini, lalu lakukan perubahan runtime sementara terkecil yang diperlukan untuk pengujian yang terkendali.
Ringkasan
Identifikasi zona aktif dan uji aturan runtime yang diperlukan; bandingkan keseluruhan konfigurasi runtime dan permanen sebelum menyimpannya. Gunakan layanan bernama yang sesuai atau port dan protokol eksplisit untuk layanan kustom.
Untuk administrasi SSH jarak jauh, pertahankan sesi saat ini dan jalur pemulihan konsol hingga koneksi kedua berhasil. Pencegahan ini lebih penting daripada opsi firewall-cmd individu mana pun.




