Ketika mengelola server Linux, apalagi yang pakai CyberPanel atau panel hosting lainnya,
biasanya kita ingin agar port tertentu (misalnya 3306 untuk MariaDB/MySQL) tidak bisa diakses sembarangan.
Idealnya, port tersebut hanya bisa dibuka untuk IP tertentu saja — atau istilahnya di-whitelist.
Nah, di artikel ini kita akan bahas dua cara paling umum untuk melakukan whitelist IP di server Linux, yaitu menggunakan CSF (ConfigServer Firewall) dan Firewalld. Keduanya sama-sama powerful, tinggal disesuaikan dengan setup server kamu.
🧱 1. Whitelist IP di ConfigServer Firewall (CSF)
CSF atau ConfigServer Security & Firewall adalah firewall populer berbasis iptables
yang banyak digunakan di server hosting, termasuk CyberPanel.
Konfigurasinya sederhana karena semua pengaturan disimpan di file teks.
Langkah-langkah Whitelist IP di CSF
1️⃣ Buka file konfigurasi whitelist
sudo nano /etc/csf/csf.allow
2️⃣ Tambahkan IP yang diizinkan untuk port tertentu
tcp|in|d=3306|s=192.168.xx.xx
tcp|in|d=3306|s=203.0.xx.xx
Artinya: izinkan koneksi TCP inbound ke port 3306 hanya dari IP yang disebut di atas.
3️⃣ Reload CSF supaya aturannya aktif
sudo csf -r
4️⃣ Tutup akses global (opsional tapi disarankan)
TCP_IN = "20,21,22,25,53,80,443,5522"
Dengan begitu, hanya IP yang ada di csf.allow yang bisa terhubung ke port database.
🔥 2. Whitelist IP di Firewalld
Kalau server kamu menggunakan Firewalld (biasanya bawaan CentOS, AlmaLinux, atau Rocky Linux), kamu bisa membuat zone khusus agar hanya IP tertentu bisa mengakses port tertentu.
Langkah-langkah Whitelist IP di Firewalld
1️⃣ Buat zone khusus
sudo firewall-cmd --permanent --new-zone=trusted3306
2️⃣ Tambahkan port 3306 ke zone tersebut
sudo firewall-cmd --permanent --zone=trusted3306 --add-port=3306/tcp
3️⃣ Tambahkan IP yang diizinkan ke zone
sudo firewall-cmd --permanent --zone=trusted3306 --add-source=192.168.xx.xx
sudo firewall-cmd --permanent --zone=trusted3306 --add-source=203.0.xx.xx
4️⃣ Tutup port 3306 dari zone default (misalnya public)
sudo firewall-cmd --permanent --zone=public --remove-port=3306/tcp
5️⃣ Reload Firewalld agar aktif
sudo firewall-cmd --reload
Sekarang port 3306 hanya bisa diakses dari IP yang kamu whitelist. IP lain otomatis ditolak.
💡 Pengalaman Tambahan: Kenapa Port Lain (5522 & 8090) Jadi Tidak Bisa Diakses?
Saat mencoba whitelist port 3306 menggunakan Firewalld, mungkin kamu akan menemui kejadian
di mana port lain seperti 5522 (SSH) dan 8090 (CyberPanel)
tiba-tiba tidak bisa diakses dari IP yang di-whitelist.
Ternyata ini bukan bug, melainkan cara kerja Firewalld yang berbasis zone.
⚙️ 1. Firewalld Bekerja Berdasarkan “Zone”
Setiap IP (source address) atau interface di Firewalld hanya bisa aktif di satu zone pada satu waktu. Biasanya ada dua zone aktif:
- public — untuk semua IP umum (default)
- trusted3306 — untuk IP yang kamu whitelist (misalnya 192.168.xx.xx)
Kalau kamu menambahkan IP ke zone trusted3306, maka IP itu tidak lagi termasuk ke zone public.
Artinya, semua aturan di public (termasuk port 5522 dan 8090) tidak berlaku untuk IP tersebut.
⚡ 2. Akibatnya
- ✅ Port 3306 → bisa diakses (karena dibuka di zone trusted3306)
- ❌ Port 5522 dan 8090 → tertolak (karena tidak ada di zone trusted3306)
✅ 3. Solusi (Pilih Salah Satu)
Opsi 1 – Tambahkan port lain ke zone trusted3306
Kalau kamu ingin IP whitelist tadi tetap bisa akses SSH dan CyberPanel:
sudo firewall-cmd --zone=trusted3306 --add-port=5522/tcp --permanent
sudo firewall-cmd --zone=trusted3306 --add-port=8090/tcp --permanent
sudo firewall-cmd --reload
Cek apakah sudah berhasil:
sudo firewall-cmd --zone=trusted3306 --list-ports
Harus muncul seperti ini:
3306/tcp 5522/tcp 8090/tcp
Opsi 2 – Hapus IP dari zone trusted3306
Kalau kamu ingin dua IP tadi kembali mengikuti aturan global (zone public):
sudo firewall-cmd --zone=trusted3306 --remove-source=192.168.xx.xx --permanent
sudo firewall-cmd --reload
Dengan begitu, IP tersebut akan kembali masuk ke zone public dan bisa akses port 5522 dan 8090.
Jadi kesimpulannya: ini bukan error, tapi efek dari pembagian zone di Firewalld. Setiap zone punya aturan sendiri-sendiri, jadi pastikan port penting seperti SSH dan panel juga kamu tambahkan ke zone whitelist kalau memang dibutuhkan.
🧠 Tips Keamanan Tambahan
- Gunakan port non-standar untuk SSH (misalnya
2222) dan whitelist IP yang boleh masuk. - Jangan buka port database ke publik tanpa pembatasan IP.
- Reload firewall setiap kali ada perubahan.
- Simpan daftar IP whitelist di tempat aman (misalnya Google Drive atau Notion).
✍️ Penutup
Baik CSF maupun Firewalld punya keunggulannya masing-masing:
- CSF cocok untuk server hosting karena pengaturannya sederhana dan langsung lewat file teks.
- Firewalld lebih cocok untuk konfigurasi enterprise karena mendukung sistem zone-based.
Dengan setup whitelist yang benar, port sensitif seperti 3306 (MariaDB/MySQL) akan jauh lebih aman karena hanya bisa diakses oleh IP yang kamu izinkan — tanpa ganggu akses penting seperti SSH (5522) atau CyberPanel (8090). 🔐
Semoga bermanfaat! Jangan lupa share artikel ini kalau membantu ya 😊
0 Komentar