Tips untuk mengamankan server Moodle
Berikut beberapa tips untuk mengamankan sebuah Moodle Server. Pendekatannya dapat dari arah Operating System, Server-server (web server, db server, cache, dll), Instalasi Moodle, server setup dan configuration
#1 Anti clickjacking
Menambahkan X-Frame-Options dalam HTTP header berguna untuk mengamankan NGINX dari serangan Clickjacking
The X-Frame-Options pada HTTP response header dapat digunakan untuk mengindikasikan apakah browser diizinkan untuk membuka sebuah halaman web luar ke dalam sebuah frame atau iframe .
Apakah anda pernah mencoba untuk meng”embed” situs Google.com di website anda dalam sebuah frame ? Dipasikan itu tidak bisa Anda lakukan karena memang di protect, dan hal yang sama dapat Anda lakukan juga pada website Anda.
Ada tiga pilihan pengaturan untuk X-Frame-Options:
- SAMEORIGIN: This setting will allow the page to be displayed in a frame on the same origin as the page itself.
- DENY: This setting will prevent a page displaying in a frame or iframe.
- ALLOW-FROM URI: This setting will allow a page to be displayed only on the specified origin.
Berikut contoh penulisan pada file konfigurasi nginx di block [server]
add_header X-Frame-Options "SAMEORIGIN";
#2 Mengamankan direktori-direktori yang terbuka
Biasanya direktori yang ada di Moodle kebanyakan di isi dengan file index.html yang kosong untuk memberikan kesan bahwa direktori tersebut walaupun ada, tapi isinya kosong. Untuk itu disaranakn mengahpus semua file index.html dari direktori-direktori dimaksud.
#3 Mengamankan file-file tertentu dari akses melalui browser
Walaupun file-file seperti *.txt, *.md tidak berisi informasi-iinformasi yang sensitif, tapi demi kemanan yang lebih baik, akses terhadap file-file seperti ini sebaiknya tetap dihindari. Karena letak file-file tersebut tersebar di berbagai direktori dibawah direktori utama moodle, maka secara cepat, kita dapat melakukan pembatasan itu dengan cara pengaturan file konfigurasi di Nginx config atau di nginx virtual host configuration file(s)
Konfigirasi berikut ini akan mengamankan file-file dengan ekstensi *.txt|git|md|json. Letakkan kode berikut di file config dari virtualhost config nya, yang biasanya diletakkan di /etc/nginx/site-enable/*
location ~.(git|txt|md|json)$ {
deny all;
return 404;
}
#4 Menutup akses ke direktori-direktori yang di hidden
Demikian pula direktori-direktori yang di hidden, biasanya nama direktori di awalai dengan tanda “.” (titik). Tapi ada juga direktori yang diawalai tanda titik, tapi tidak boleh di block/deny, misalnya direktori .well-known. Direktori ini digunakan oleh Let’s Encrypt
Maka konfigirasi file konfigurasi nginx perlu ditambahkan perintah sebagai berikut:
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
#5 Menyembunyikan identitas web server yang digunakan yang akan muncul ketika terjadi error
…
Masih akan berlanjut ….
Reference:
Cross-site Scripting (XSS) in Moodle
https://geekflare.com/add-x-frame-options-nginx/
https://pdfs.semanticscholar.org/1aed/91301bea6030195332a990fd8d666693072c.pdf
SQL Injection false positive (https://github.com/zaproxy/zaproxy/issues/3662)