Pendahuluan
Server sekolah saat ini menyimpan banyak data penting seperti data siswa, nilai, keuangan, dan akun guru.
Sayangnya, banyak server dibangun hanya dengan tujuan “aplikasi bisa berjalan”, tanpa mempertimbangkan keamanan jangka panjang.
Artikel ini menjelaskan bagaimana sebuah server sekolah berbasis Linux (Ubuntu, Apache, PHP, dan MariaDB) ditingkatkan keamanannya secara bertahap, dari server standar menjadi server yang lebih tangguh dan terkontrol.
1. Pengamanan Akses Server (SSH Hardening)
Akses ke server diamankan dengan cara:
- Login SSH hanya menggunakan SSH key, tanpa password.
- Login sebagai
rootdinonaktifkan. - Port SSH tidak menggunakan port standar (22).
- Fail2ban diaktifkan untuk memblokir percobaan login berulang.
Dampak:
- Brute force password tidak efektif.
- Hanya administrator yang memiliki private key yang dapat mengakses server.
2. Firewall: Membuka Hanya yang Diperlukan
Firewall dikonfigurasi dengan prinsip:
hanya membuka layanan yang benar-benar dibutuhkan.
Port yang dibuka:
- 80 (HTTP)
- 443 (HTTPS)
- Port SSH khusus
Port yang ditutup:
- Port database (3306)
- Port backend internal
- Port lain yang tidak digunakan
Hasil:
- Server tidak bisa di-scan bebas dari internet.
- Database hanya bisa diakses dari dalam server.
3. Apache Web Server Hardening
Apache dikonfigurasi untuk:
- Menyembunyikan versi server (
ServerTokens Prod,ServerSignature Off). - Mematikan directory listing.
- Menonaktifkan modul yang tidak diperlukan seperti
autoindexdanstatus.
Tujuan:
- Mengurangi informasi yang bisa dimanfaatkan penyerang.
- Mengurangi permukaan serangan (attack surface).
4. Header Keamanan HTTP
Header keamanan ditambahkan, seperti:
X-Frame-OptionsX-Content-Type-OptionsReferrer-PolicyPermissions-Policy
Manfaat:
- Mencegah clickjacking.
- Mengurangi kebocoran informasi.
- Membatasi fitur browser yang tidak diperlukan.
5. PHP Hardening
Konfigurasi PHP diperketat:
- Fungsi berbahaya (
exec,system,shell_exec, dll.) dinonaktifkan. - Versi PHP tidak ditampilkan ke publik.
- Error tidak ditampilkan ke pengguna.
Dampak:
- Webshell tidak bisa menjalankan perintah sistem.
- Informasi sensitif tidak bocor ke browser.
6. Perlindungan Folder Upload
Folder upload merupakan target umum serangan dengan metode:
upload file PHP → dieksekusi lewat browser.
Solusi:
- Folder seperti
upload,uploads,storage, dan sejenisnya dikonfigurasi agar:- file tetap bisa diunggah
- tetapi PHP tidak boleh dieksekusi
Hasil:
- File gambar dan PDF tetap dapat diakses.
- File
.phpdi folder upload akan ditolak (403 Forbidden).
7. HTTPS dan TLS
Server dikonfigurasi:
- Wajib menggunakan HTTPS.
- Sertifikat valid.
- TLS modern (TLS 1.3) digunakan.
Manfaat:
- Data terenkripsi.
- Cookie dan kredensial tidak bisa disadap di jaringan.
8. Isolasi Database per Aplikasi
Audit database menunjukkan masalah umum:
- User database dapat login dari mana saja (
user@%). - Satu user digunakan oleh banyak aplikasi.
Risiko:
Jika satu aplikasi bocor, semua database ikut bocor.
Solusi:
- Setiap database menggunakan user sendiri.
- Semua user database hanya boleh login dari
localhost.
Tujuan:
- Membatasi dampak kebocoran satu aplikasi.
- Menerapkan prinsip least privilege.
9. Isolasi Aplikasi dengan Socket PHP-FPM
Selain database, proses PHP juga perlu diisolasi.
Secara default, banyak aplikasi menggunakan satu pool PHP-FPM (www.conf) yang sama.
Masalahnya:
Jika satu aplikasi dieksploitasi, ia berjalan dengan user yang sama seperti aplikasi lain.
Solusi:
- Setiap aplikasi dibuatkan:
- 1 user Linux sendiri
- 1 pool PHP-FPM sendiri
- 1 socket sendiri
Contoh konsep:
- Aplikasi PKL → user
prakerin→ socket/run/php/php8.0-prakerin.sock - Aplikasi Alumni → user
alumni→ socket/run/php/php8.0-alumni.sock
Apache diarahkan ke socket masing-masing aplikasi.
Manfaat:
- Aplikasi tidak bisa membaca folder aplikasi lain.
- Jika satu aplikasi disusupi, dampaknya terbatas pada aplikasi tersebut.
- Keamanan naik signifikan tanpa mengorbankan performa.
Kesimpulan
Sebelum hardening:
- Fokus pada “jalan”.
- Banyak port terbuka.
- PHP bisa menjalankan perintah sistem.
- Folder upload bisa mengeksekusi PHP.
- Database diakses luas.
- Semua aplikasi berbagi satu user dan satu proses PHP.
Sesudah hardening:
- SSH aman.
- Firewall minimal.
- Apache dibatasi.
- PHP diperketat.
- Folder upload aman.
- Database diisolasi per aplikasi.
- Proses PHP dipisah per aplikasi dengan socket sendiri.
Dengan langkah-langkah ini:
Server sekolah tidak lagi menjadi target empuk serangan otomatis.
Penutup
Keamanan bukan berarti server menjadi sulit dipakai,
melainkan:
server tetap berfungsi, tetapi tidak mudah disalahgunakan.
Pendekatan ini menurunkan risiko:
- kebocoran data
- deface website
- penyebaran malware
- penyalahgunaan server
dan meningkatkan profesionalisme pengelolaan sistem IT sekolah.