Berikut prosedur instalasi CyberPanel pada VPS AlmaLinux 9 sekaligus hardening server. Urutannya sengaja dibuat agar SSH tidak terkunci dan CyberPanel tetap berfungsi.
CyberPanel saat ini mendukung instalasi baru AlmaLinux 8–9, membutuhkan minimal 1 GB RAM, tetapi 2 GB RAM atau lebih lebih disarankan, serta disk minimal 10 GB. Gunakan VPS bersih tanpa panel/web server lain.
Penting: jangan menonaktifkan login root atau password SSH sebelum user baru dan SSH key benar-benar berhasil diuji di terminal kedua.
1. Persiapan DNS dan VPS
Siapkan subdomain khusus panel, misalnya:
panel.domainanda.comBuat DNS:
Type : A
Name : panel
Value: IP_VPS
Proxy: DNS Only
TTL : AutoHostname sebaiknya berupa FQDN dan sudah diarahkan ke IP server sebelum konfigurasi SSL panel.
Masuk sebagai root:
ssh root@IP_VPSPeriksa sistem:
cat /etc/os-release
hostnamectl
free -h
df -h
ip addressAtur hostname:
hostnamectl set-hostname panel.domainanda.comTambahkan ke /etc/hosts:
nano /etc/hostsContoh:
127.0.0.1 localhost localhost.localdomain
IP_VPS panel.domainanda.com panelPeriksa:
hostname -fHasil yang diharapkan:
panel.domainanda.com2. Update AlmaLinux
dnf clean all
dnf makecache
dnf update -yInstal utilitas dasar:
dnf install -y \
curl \
wget \
nano \
vim \
git \
unzip \
tar \
bind-utils \
net-tools \
policycoreutils-python-utils \
firewalld \
fail2ban \
fail2ban-firewalld \
rsync \
chrony \
dnf-automaticAktifkan sinkronisasi waktu:
systemctl enable --now chronyd
timedatectl set-timezone Asia/Jakarta
timedatectlReboot jika kernel diperbarui:
rebootMasuk kembali:
ssh root@IP_VPS3. Buat user administrator Linux
Ganti andika jika ingin nama lain:
useradd -m -s /bin/bash andika
passwd andikaTambahkan ke grup administrator AlmaLinux:
usermod -aG wheel andikaPastikan grupnya:
id andikaUji sudo:
su - andika
sudo whoamiHasilnya harus:
rootKeluar kembali:
exit4. Pasang SSH key untuk user baru
Dari komputer Windows
Buka PowerShell:
ssh-keygen -t ed25519 -a 100Tekan Enter untuk lokasi default dan gunakan passphrase yang kuat.
Tampilkan public key:
type $env:USERPROFILE\.ssh\id_ed25519.pubSalin seluruh isinya.
Di server
mkdir -p /home/andika/.ssh
nano /home/andika/.ssh/authorized_keysTempel public key, lalu:
chown -R andika:andika /home/andika/.ssh
chmod 700 /home/andika/.ssh
chmod 600 /home/andika/.ssh/authorized_keys
restorecon -Rv /home/andika/.sshBuka terminal baru dan uji:
ssh andika@IP_VPSKemudian:
sudo whoamiJangan melanjutkan SSH hardening bila login key belum berhasil.
5. Instal CyberPanel
Installer CyberPanel harus dijalankan sebagai root.
Masuk root:
sudo -iUnduh terlebih dahulu agar dapat diperiksa:
cd /root
curl -fsSL https://cyberpanel.net/install.sh -o install-cyberpanel.shPeriksa hash dan bagian awal:
sha256sum install-cyberpanel.sh
head -n 40 install-cyberpanel.shJalankan:
sh install-cyberpanel.shPilihan instalasi yang disarankan untuk server website biasa:
1. Install CyberPanel with OpenLiteSpeed
Full Service: N
Remote MySQL: N
CyberPanel Version: Latest
Password: s
Memcached: Y
Redis: Y
Watchdog: YGunakan password panel minimal 20 karakter acak, misalnya dibuat dengan:
openssl rand -base64 32Mengapa memilih Full Service N?
Jika server hanya digunakan untuk website, jangan memasang layanan yang tidak dibutuhkan seperti:
Mail server;
DNS server;
FTP server.
Semakin sedikit layanan aktif, semakin kecil permukaan serangannya. Untuk transfer file, gunakan SFTP melalui SSH.
Apabila server memang akan menjadi mail server atau nameserver, pilih Full Service dan buka portnya secara selektif setelah instalasi.
Setelah selesai, reboot:
rebootCyberPanel dapat diakses melalui:
https://IP_VPS:8090Port 8090 merupakan port panel, sedangkan port 7080 digunakan untuk konsol WebAdmin OpenLiteSpeed.
6. Periksa layanan setelah instalasi
Masuk kembali:
ssh andika@IP_VPS
sudo -iPeriksa:
systemctl --failed
ss -tulpnPeriksa CyberPanel:
systemctl status lscpd --no-pager
systemctl status lsws --no-pagerPeriksa versi:
cyberpanel version 2>/dev/null || cyberpanel helpPerbarui CyberPanel menggunakan metode resmi jika versi belum terbaru:
sh <(curl -fsSL https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)7. Firewall tingkat provider
Di firewall VPS/provider, gunakan aturan paling ketat.
Server website tanpa mail dan DNS
Port | Protokol | Sumber |
|---|---|---|
22 atau port SSH baru | TCP | IP pribadi Anda |
80 | TCP | Semua |
443 | TCP | Semua |
443 | UDP | Semua, untuk HTTP/3 |
8090 | TCP | IP pribadi Anda |
7080 | TCP | IP pribadi Anda |
Jangan membuka 8090 dan 7080 ke seluruh internet apabila Anda memiliki IP publik tetap.
CyberPanel secara resmi menyebut port 80/443 untuk web, 8090 untuk panel, 7080 untuk WebAdmin, serta port tambahan apabila FTP, mail, dan DNS digunakan.
Apabila IP rumah berubah-ubah, pilihan lebih aman adalah mengakses panel menggunakan:
VPN seperti WireGuard/Tailscale; atau
SSH tunnel.
Contoh SSH tunnel:
ssh -L 8090:127.0.0.1:8090 -L 7080:127.0.0.1:7080 andika@IP_VPSLalu buka:
https://127.0.0.1:8090
https://127.0.0.1:70808. Konfigurasi firewalld di server
AlmaLinux menggunakan firewalld sebagai firewall bawaan dan mendukung konfigurasi berbasis zona.
Aktifkan:
systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --get-active-zonesBuka web publik
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-port=443/udpBatasi SSH dan panel hanya dari IP administrator
Ganti:
IP_ADMIN_ANDAdengan IP publik rumah/kantor Anda.
ADMIN_IP="IP_ADMIN_ANDA"Izinkan IP administrator:
firewall-cmd --permanent --zone=trusted --add-source="${ADMIN_IP}/32"
firewall-cmd --permanent --zone=trusted --add-port=22/tcp
firewall-cmd --permanent --zone=trusted --add-port=8090/tcp
firewall-cmd --permanent --zone=trusted --add-port=7080/tcpHapus akses publik ke port panel bila sebelumnya terbuka:
firewall-cmd --permanent --zone=public --remove-port=8090/tcp
firewall-cmd --permanent --zone=public --remove-port=7080/tcpJangan langsung menghapus SSH publik sebelum memastikan trusted zone berfungsi.
Terapkan:
firewall-cmd --reload
firewall-cmd --list-all --zone=public
firewall-cmd --list-all --zone=trustedCyberPanel memiliki pengelola firewall tersendiri dengan prinsip menolak port selain yang dibuka. Namun, jangan mengelola aturan yang sama secara sembarangan dari beberapa tempat karena bisa menyebabkan konflik atau akses terputus.
9. Pindahkan port SSH
Gunakan port tinggi, misalnya 22779. Ini tidak menggantikan autentikasi key, tetapi mengurangi noise bot.
Karena AlmaLinux menggunakan SELinux, daftarkan port terlebih dahulu:
semanage port -a -t ssh_port_t -p tcp 22779Jika ternyata sudah terdaftar:
semanage port -m -t ssh_port_t -p tcp 22779Buka firewall sebelum mengubah SSH:
firewall-cmd --permanent --zone=trusted --add-port=22779/tcp
firewall-cmd --reloadBuat konfigurasi drop-in:
mkdir -p /etc/ssh/sshd_config.d
nano /etc/ssh/sshd_config.d/10-custom-port.confIsi:
Port 22779Validasi:
sshd -tRestart:
systemctl restart sshdBuka terminal baru dan uji:
ssh -p 22779 andika@IP_VPSSetelah berhasil, hapus port 22 dari trusted zone:
firewall-cmd --permanent --zone=trusted --remove-port=22/tcp
firewall-cmd --reloadJangan lupa mengubah firewall provider dari port 22 menjadi 22779.
10. Hardening konfigurasi SSH
Pastikan login key pada port baru berhasil. Kemudian buat:
nano /etc/ssh/sshd_config.d/99-hardening.confIsi:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
IgnoreRhosts yes
HostbasedAuthentication no
X11Forwarding no
PermitUserEnvironment no
AllowAgentForwarding no
AllowTcpForwarding yes
PermitTunnel no
GatewayPorts no
MaxAuthTries 3
MaxSessions 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers andikaAllowTcpForwarding yes dipertahankan agar SSH tunnel ke CyberPanel tetap dapat digunakan.
Periksa konfigurasi efektif:
sshd -T | grep -E \
'port|permitrootlogin|passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|maxauthtries|allowusers'Validasi:
sshd -tRestart:
systemctl restart sshdDokumentasi Red Hat merekomendasikan autentikasi SSH berbasis key sebagai satu-satunya metode setelah key dipastikan dapat digunakan. (Dokumentasi Red Hat)
Jangan tutup sesi root lama sampai login berikut berhasil:
ssh -p 22779 andika@IP_VPS11. Amankan sudo
Buat aturan khusus:
visudo -f /etc/sudoers.d/andikaIsi:
Defaults:andika use_pty
Defaults:andika timestamp_timeout=5
andika ALL=(ALL) ALLAtur izin:
chmod 440 /etc/sudoers.d/andika
visudo -cJangan menggunakan:
NOPASSWD: ALLuntuk akun administrator utama.
12. Aktifkan Fail2Ban
Buat konfigurasi:
nano /etc/fail2ban/jail.localIsi:
[DEFAULT]
banaction = firewallcmd-rich-rules
banaction_allports = firewallcmd-rich-rules
findtime = 10m
bantime = 1h
maxretry = 4
backend = systemd
ignoreip = 127.0.0.1/8 ::1 IP_ADMIN_ANDA
[sshd]
enabled = true
port = 22779
mode = aggressive
maxretry = 4
findtime = 10m
bantime = 24hAktifkan:
systemctl enable --now fail2ban
systemctl restart fail2banPeriksa:
fail2ban-client status
fail2ban-client status sshd
journalctl -u fail2ban --no-pager -n 5013. Aktifkan pembaruan keamanan otomatis
Edit:
nano /etc/dnf/automatic.confPastikan bagian ini:
[commands]
upgrade_type = security
random_sleep = 300
download_updates = yes
apply_updates = yes
[emitters]
emit_via = stdio
[base]
debuglevel = 1Aktifkan timer:
systemctl enable --now dnf-automatic.timer
systemctl list-timers | grep dnfPerlu diperhatikan bahwa pembaruan otomatis sistem tidak selalu memperbarui CyberPanel. Periksa pembaruan CyberPanel secara berkala dan lakukan backup/snapshot sebelum upgrade besar.
14. Aktifkan audit sistem
Instal dan aktifkan audit daemon:
dnf install -y audit
systemctl enable --now auditdTambahkan pemantauan berkas sensitif:
cat > /etc/audit/rules.d/hardening.rules <<'EOF'
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k sshd
-w /etc/ssh/sshd_config.d/ -p wa -k sshd
-w /etc/firewalld/ -p wa -k firewall
EOFMuat ulang:
augenrules --load
auditctl -lMelihat perubahan:
ausearch -k sshd
ausearch -k sudoers15. Hardening kernel dan jaringan
Buat:
nano /etc/sysctl.d/99-server-hardening.confIsi:
# Proteksi spoofing dan redirect
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# SYN protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rfc1337 = 1
# Log paket mencurigakan
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# Proteksi informasi kernel
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.yama.ptrace_scope = 1
# Proteksi symlink dan hardlink
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.protected_fifos = 2
fs.protected_regular = 2
# Core dump
fs.suid_dumpable = 0
kernel.core_uses_pid = 1
EOFTerapkan:
sysctl --systemJangan menambahkan parameter jaringan agresif yang belum diuji karena dapat mengganggu mail, container, DNS, atau koneksi web.
16. Periksa SELinux
getenforce
sestatusJangan langsung menonaktifkan SELinux hanya untuk menghilangkan error. Periksa audit log terlebih dahulu:
ausearch -m AVC -ts recentNamun, jangan memaksa perubahan dari permissive ke enforcing setelah instalasi CyberPanel tanpa pengujian staging. Panel, OpenLiteSpeed, mail, dan komponen lain harus diuji karena kebijakan yang tidak sesuai dapat memutus layanan.
AlmaLinux 9 juga menggunakan kebijakan kriptografi sistem untuk menolak protokol dan algoritme lama. Jangan mengubahnya ke LEGACY kecuali benar-benar diperlukan, karena kebijakan tersebut lebih lemah. (Dokumentasi Red Hat)
Periksa:
update-crypto-policies --showRekomendasi:
DEFAULT17. Nonaktifkan layanan yang tidak digunakan
Lihat semua port:
ss -tulpnLihat layanan aktif:
systemctl --type=service --state=runningJika tidak memakai FTP:
systemctl disable --now pure-ftpd 2>/dev/null || true
firewall-cmd --permanent --remove-service=ftp
firewall-cmd --permanent --remove-port=21/tcp
firewall-cmd --permanent --remove-port=40110-40210/tcpJika tidak memakai DNS authoritative:
systemctl disable --now pdns 2>/dev/null || true
firewall-cmd --permanent --remove-service=dnsJika tidak memakai email server:
systemctl disable --now postfix 2>/dev/null || true
systemctl disable --now dovecot 2>/dev/null || trueKemudian hapus port mail dari firewall bila ada.
Terapkan:
firewall-cmd --reloadJangan menonaktifkan MariaDB, Redis, Memcached, lscpd, atau OpenLiteSpeed tanpa memastikan komponen tersebut tidak dipakai CyberPanel maupun website.
18. Amankan akun CyberPanel
Setelah login ke panel:
https://panel.domainanda.com:8090Lakukan hal berikut:
Ganti password
admindengan password unik minimal 20 karakter.Aktifkan 2FA.
Buat user panel lain hanya dengan ACL yang dibutuhkan.
Jangan memakai akun administrator untuk pekerjaan website sehari-hari.
Jangan mengaktifkan API CyberPanel bila tidak digunakan.
Pastikan SSL hostname panel terpasang.
Batasi akses 8090 berdasarkan IP atau VPN.
CyberPanel menyediakan 2FA melalui menu:
Users → Modify User → pilih user → aktifkan 2FASetelah itu, pindai QR menggunakan aplikasi authenticator.
CyberPanel memiliki beberapa jenis ACL. User dengan ACL admin merupakan superuser, sehingga user website atau klien sebaiknya diberikan ACL terbatas, bukan admin.
Untuk reset password admin dari SSH:
adminPass 'PASSWORD_BARU_YANG_SANGAT_KUAT'19. Aktifkan ModSecurity secara hati-hati
CyberPanel tidak selalu memasang ModSecurity secara default. Instalasinya tersedia dari bagian Security/ModSecurity panel.
Urutan aman:
Instal ModSecurity.
Aktifkan OWASP Core Rule Set.
Gunakan mode audit/detection dahulu.
Uji login, upload, API, form, WordPress, Laravel, dan callback pembayaran.
Baru ubah ke blocking.
Buat pengecualian hanya untuk false positive tertentu.
Jangan langsung mengaktifkan semua aturan pada sensitivitas tertinggi di production karena dapat menyebabkan HTTP 403 atau memblokir request aplikasi yang sah.
20. Buat user CyberPanel untuk pemilik website
Di panel:
Users → Create New UserContoh:
First Name : Andika
Last Name : Prasetiawan
Email : email Anda
Username : andikaweb
ACL : userGunakan password berbeda dari:
Password Linux;
Password root;
Password admin CyberPanel;
Password database.
Kemudian buat website menggunakan user tersebut atau transfer ownership website kepadanya. CyberPanel mendukung pemisahan user dan kepemilikan website sehingga pekerjaan rutin tidak perlu dilakukan dengan akun admin.
21. Backup wajib
Minimal gunakan tiga lapis:
1. Backup CyberPanel harian
2. Backup eksternal ke server/object storage berbeda
3. Snapshot VPS sebelum upgrade besarBackup yang berada pada disk VPS yang sama bukan backup penuh, karena ikut hilang jika disk rusak atau server diretas.
Buat direktori backup root dengan izin ketat:
install -d -m 700 -o root -g root /root/secure-backupJangan menyimpan backup database, .env, atau private key di folder website publik seperti:
public_html/
public/
htdocs/22. Pemeriksaan keamanan akhir
Jalankan:
echo "=== OS ==="
cat /etc/os-release
echo "=== HOSTNAME ==="
hostnamectl
echo "=== FIREWALL ==="
firewall-cmd --state
firewall-cmd --list-all --zone=public
firewall-cmd --list-all --zone=trusted
echo "=== PORT ==="
ss -tulpn
echo "=== SSH EFFECTIVE CONFIG ==="
sshd -T | grep -E \
'port|permitrootlogin|passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication|maxauthtries|allowusers'
echo "=== FAILED SERVICES ==="
systemctl --failed
echo "=== FAIL2BAN ==="
fail2ban-client status
fail2ban-client status sshd
echo "=== SELINUX ==="
getenforce
echo "=== CRYPTO POLICY ==="
update-crypto-policies --show
echo "=== AUTO UPDATE ==="
systemctl status dnf-automatic.timer --no-pager
echo "=== CYBERPANEL ==="
systemctl status lscpd --no-pager
echo "=== OPENLITESPEED ==="
systemctl status lsws --no-pagerTarget akhirnya:
Root SSH login : nonaktif
SSH password login : nonaktif
SSH key : aktif
User sudo terpisah : aktif
SSH port : dibatasi IP/VPN
CyberPanel 8090 : dibatasi IP/VPN
OpenLiteSpeed 7080 : dibatasi IP/VPN
2FA CyberPanel : aktif
Firewall provider : aktif
Firewalld : aktif
Fail2Ban : aktif
Security updates : aktif
Unused services : nonaktif
Backup eksternal : aktifKonfigurasi paling aman untuk production website: publik hanya membuka 80/tcp, 443/tcp, dan opsional 443/udp. SSH, CyberPanel 8090, dan OpenLiteSpeed WebAdmin 7080 hanya dapat diakses dari IP administrator, VPN, atau SSH tunnel.
Komentar 0
Belum ada komentar. Jadilah yang pertama!