Panduan Lengkap Keamanan Server untuk Pemilik Website Indonesia
Server yang aman bukan cuma soal menginstall satu atau dua alat. Keamanan server adalah lapisan pertahanan yang melindungi website, data pelanggan, dan reputasi bisnis dari ancaman siber. Panduan ini berfokus pada langkah praktis yang bisa dilakukan pemilik website Indonesia, baik yang mengelola VPS sendiri maupun shared hosting.
1. Mulai Dari Firewall
Firewall adalah pintu masuk pertama yang harus diatur. Di Ubuntu, gunakan UFW (Uncomplicated Firewall). Buka hanya port yang benar-benar dibutuhkan, biasanya 22 (SSH), 80 (HTTP), dan 443 (HTTPS). Tutup segalanya.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
2. Hardening SSH
SSH adalah jalan masuk admin. Jika diserang dengan brute force, server bisa direbut.
Edit /etc/ssh/sshd_config dan ubah:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222
MaxAuthTries 3
3. Pasang Fail2ban
Fail2ban memantau log dan memblokir IP yang mencoba login berulang kali gagal. Install:
sudo apt update
sudo apt install fail2ban
4. Update Rutin dan Manajemen Versi
Perangkat lunak yang tidak diperbarui adalah celah utama. Update sistem dan aplikasi secara berkala:
sudo apt update && sudo apt upgrade -y
Cek versi yang berjalan:
php -v
nginx -v
mysql --version
Pastikan versi masih menerima patch keamanan dari vendor. PHP 8.1 dan versi lebih lama sudah tidak mendapatkan update resmi, jadi server yang masih pakai PHP 8.1 harus segera diupgrade ke PHP 8.3 atau lebih baru.
Jika paket sistem tidak tersedia via apt, gunakan repository resmi vendor (mis. repositori PHP dari Ondřej Surý, atau paket Nginx official) daripada mengunduh file .deb secara manual dari situs yang tidak diketahui.
5. Backup Teratur dan Terdiverifikasi
Backup tidak berguna jika tidak bisa dipulihkan. Jadwalkan backup harian dan verifikasi integrity:
mysqldump -u root -p nama_database > /backup/db_$(date +%Y-%m-%d).sql
Untuk file website:
rsync -avz /var/www/html/ /backup/website_$(date +%Y-%m-%d)/
Setiap backup, periksa checksum:
sha256sum /backup/db_*.sql
Simpan backup di lokasi fisik yang berbeda dari server utama (mis. object storage, VPS lain, atau komputer pribadi yang aman). Jangan simpan backup di direktori yang sama dengan website, karena jika server direbut, backup juga ikut hilang.
Uji pemulihan setidaknya sekali per bulan di server uji coba. Backup yang tidak pernah diuji sama saja tidak ada backupnya.
6. Keamanan Aplikasi Web
Server yang aman tidak berarti aplikasi juga aman. Perhatikan:
- APP_DEBUG=false di produksi. Jika diaktifkan, halaman error bisa bocorkan detail kode, path server, dan variabel lingkungan ke publik.
- Jangan simpan file sensitif di web root. File
.env, cadangan database, dan konfigurasi harus berada di luar direktori yang diakses publik. - Batasi izin file. Direktori biasanya
755, file644, dan file sensitif seperti.envharus600atau640. - Gunakan HTTPS. Pasang sertifikat SSL via Let’s Encrypt dan paksa redirect dari HTTP ke HTTPS.
7. Apa yang Harus Dilakukan Setelah Serangan
Jika mencurigakan server telah direbut:
- Isolasi server dari jaringan publik atau batasi akses hanya dari IP admin.
- Periksa log:
/var/log/auth.log,/var/log/syslog, dan log web server. - Cek user aneh di
/etc/passwddan crontab yang tidak dikenal (crontab -lper user). - Rotate semua kata sandi dan kunci API yang mungkin pernah tersimpan di server.
- Pulihkan dari backup yang diketahui bersih, bukan dari backup yang dibuat setelah kecurigaan serangan.
Kesimpulan
Keamanan server bukan tugas satu kali, tetapi proses berkelanjutan. Firewall, SSH yang dikunci, Fail2ban, update rutin, dan backup terdiverifikasi adalah fondasi yang harus ada pada setiap server. Untuk pemilik website Indonesia yang mengelola VPS sendiri, langkah-langkah di atas cukup untuk menutup sebagian besar celah umum.
