Berikut adalah rincian teknis tahapan pengamanan aplikasi Laravel yang berjalan di Ubuntu dengan Nginx, database MySQL, dan file storage MinIO. Tujuannya adalah mengamankan server, aplikasi, dan data dari potensi hacking.
Gunakan layanan WAF seperti Cloudflare, atau pasang ModSecurity di Nginx.
???? Monitoring & Log
Aktifkan Laravel log di storage/logs/.
Pasang monitoring seperti:
Fail2ban
Auditd
Logwatch
Sentry / Bugsnag / Laravel Telescope
✅ 7. Backup & Disaster Recovery
Otomatisasi backup:
Database (mysqldump)
Storage file (rsync / rclone ke S3/GDrive)
.env file
Simpan di lokasi terpisah.
Uji restore secara berkala.
Tentu! Kita bisa tambahkan beberapa lapisan pengamanan lanjutan untuk memperkuat keamanan aplikasi Laravel kamu dari sisi aplikasi, server, dependensi, dan praktik DevOps. Berikut lanjutannya:
✅ 8. Laravel: Best Practice & Hardening
???? Route Protection
Lindungi route admin dengan middleware dan prefix.
Pisahkan layanan Laravel, MySQL, dan MinIO ke dalam container berbeda.
Gunakan network bridge untuk membatasi akses antar container.
Tambahkan network firewall internal via iptables atau Docker internal firewall.
✅ 13. CI/CD & Deployment Aman
⚙️ Pastikan Deploy Otomatis Aman
Jangan hardcode .env atau credential ke Git.
Gunakan GitHub Actions, GitLab CI, dsb. dengan secret environment variable.
???? Monitoring Kode Berbahaya
Aktifkan Laravel Telescope atau Laravel Debugbar di dev only, jangan pernah di production.
✅ 14. Tools Eksternal yang Disarankan
Tujuan
Tools/Service
Monitoring & Alert
Uptime Robot, StatusCake, Sentry
Vulnerability Scanning
OWASP ZAP, SonarCloud, Nessus (advanced)
Penetration Test Otomatis
Nikto, Burp Suite, Metasploit (advanced)
File Integrity Monitoring
AIDE (Advanced Intrusion Detection Env.)
Mantap! Kita lanjutkan dengan lapisan keamanan tambahan tingkat lanjut yang sering luput tapi krusial, terutama untuk environment production-level Laravel stack seperti milikmu.
✅ 15. Keamanan Session & Auth Laravel
???? Gunakan Driver Session yang Aman
Pilih redis atau database dibandingkan file:
SESSION_DRIVER=database
⏳ Session Expiry & Idle Timeout
Atur lifetime yang masuk akal di config/session.php:
'lifetime' => 30,
'expire_on_close' => true,
???? Batasi Login Ganda (Opsional)
Implementasi satu sesi per user, atau logout otomatis saat login dari device lain.
✅ 16. Proteksi Terhadap SQL Injection, XSS, dan LFI
???? SQL Injection
Selalu gunakan Eloquent ORM atau Query Builder.
// aman:
User::where('email', $request->email)->first();
// rentan:
DB::select("SELECT * FROM users WHERE email = '$email'");
???? Local File Inclusion (LFI)
Jangan pernah load file dari input user langsung. Validasi path/file yang digunakan.
✅ 17. Keamanan Cache & Queue
???? Redis/Queue Auth Protection
Redis jangan di-expose publik. Pastikan bind ke 127.0.0.1:
Laravel log menunjukkan error 500/403/401 yang tinggi
???? Kirim ke Slack, Telegram, atau Email via webhook/notif custom.
Mantap, semangat pengamanannya luar biasa! ???????? Kita lanjut ke lapisan paling dalam dan tambahan ekstrem security yang biasanya diterapkan di enterprise-level systems.
✅ 24. Isolation dan Network-Level Security
???? UFW atau iptables (Firewall Ubuntu)
Batasi akses ke port yang digunakan aplikasi saja:
sudo ufw default deny incoming
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw allow from 127.0.0.1 to any port 3306 # MySQL hanya local
sudo ufw enable
Atau gunakan iptables dengan lebih detail untuk kontrol antar service (MySQL, MinIO, Redis, dll.).
✅ 25. Anti Malware & Intrusion Detection
????️ Install & Konfigurasi Fail2Ban
Melindungi dari brute-force (SSH, Nginx, Laravel login):
sudo apt install fail2ban
Tambahkan jail untuk nginx dan SSH di /etc/fail2ban/jail.local.
???? Install & Konfigurasikan rkhunter atau chkrootkit