Moodle Tools (Advance)
1. MOOdle SHell
Moosh stands for MOOdle SHell. It is a commandline tool that will allow you to perform most common Moodle tasks.
Open Source Software in My Daily Life
Moosh stands for MOOdle SHell. It is a commandline tool that will allow you to perform most common Moodle tasks.
Saat tulisan ini dibuat block ini dapat digunakan pada Moodle versi 3.8 hingga versi 4.3
Plugin ini dapat ditemukan di: https://moodle.org/plugins/block_filtered_course_list
Blok Filtered course list menampilkan daftar course yang dapat dikonfigurasi. Hal ini dimaksudkan sebagai pengganti blok My Course, meskipun keduanya tetap dapat digunakan bersama-sama. Plugin ini dikelola oleh Collaborative Liberal Arts Moodle Project (CLAMP).
Administrator dapat menerapkan berbagai filter yang digunakan untuk mengatur daftar course di blok. Course dapat diurutkan berdasarkan:
Administrator dapat menetapkan beberapa judul yang dapat diciutkan dan memilih judul mana, jika ada, yang harus diperluas secara default.
Pilihan lainnya mencakup kemampuan untuk menyembunyikan blokir dari tamu atau pengunjung anonim, untuk memilih apakah admin melihat semua kursus atau miliknya sendiri, dan untuk menyembunyikan atau menampilkan tautan ke pencarian kursus yang lebih komprehensif.
https://owasp.org/www-community/attacks/Clickjacking
Header add_header X-Frame-Options “SAMEORIGIN”;
Reference: here
When this header is being sent along with a response and the website contains an XSS attack, the browser will see this XSS attack and stop it from loading. This protection knows 3 levels:
Example:
add_header X-XSS-Protection "1; mode=block";
atau
add_header X-XSS-Protection "1;";
Reference
https://youtu.be/pV_uX0jDAh4?si=W6gbBjvpvniVDSDB
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
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:
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)
1. moodledata directory dan semua all konten-kontennya (dan subdirectories, termausk sessions):
owner: apache user (apache, httpd, www-data, whatever; see above) group: apache group (apache, httpd, www-data, whatever; see above) permissions: 700 on directories, 600 on files
2. moodle directory dan semua konten-kontent nya dan subdirektori (termasuk: config.php):
owner: root group: root permissions: 755 on directories, 644 on files.
Jika dimungkinkan login secara lokal oleh user biasa, maka ada 2 (dua) hal yang perlu diatur:
owner: root group: apache group (apache, httpd, www-data, whatever; see above) permissions: 750 on directories, 640 on files.
Reference:
https://docs.moodle.org/403/en/Security_recommendations#Most_secure.2Fparanoid_file_permissions
Masuk ke menu : SystemAdministrator > Appearance > Additional HTML
Kemudian tambahkan script berikut pada form Within HEAD
<script>
document.addEventListener('contextmenu', (e)=>{
e.preventDefault();
})
</script>
<video width="600" height="350" controls controlsList="nodownload">
<source data-src="video1.ogg" type="video/mp4">
</video>
Plugin ini tergolong sudah tua, latest release saat tulisan ini dibuat adalah 4 tahun yang lalu. Walaupun demikian plugins ini tetap bisa digunakan, walaupun Anda tetap perlu memastikannya.
Plugin yang digunakan : Backup and Restore Command-Line Interface
Admin tools ::: tool_brcli
Plugin site : BrCLI
Tujuan penggunaan:
Melakukan backup dan restore courses yang berada pada/ke sebuah course category.
Courses yang berada pada category yang dipilih akan dibuat backup sebuah file *mbz untuk masing-masing course
Sedangkan untuk restore, file-file course-backup (*.mbz) harus berada pada sebuah direktory/folder tertentu dan akan menuju ke category_id tertentu pula
Moodle specification:
Version 3.9.x, 3.10.x
Theme: Enlightlite
changing in enlightlite/classes/core/course_renderer.php
search: top_course_menu
$sql = "SELECT a.category , a.cnt from ( SELECT category , count(category) as cnt FROM {course} C";
$sql .= " INNER JOIN {course_categories} cc ON cc.id = c.category WHERE category != 0 and c.visible <>1 and cc.visible<>1 group by category ) as a order by a.cnt desc ";
Follow these steps to customize the user profile page.
1. Go to theme/config.php file and find this code.
// My public page.
‘mypublic’ => array(
‘file’ => ‘columns2.php’,
‘regions’ => array(‘side-pre’),
‘defaultregion’ => ‘side-pre’,
),
2. Create your custom layout file in layout folder and replace it like below
// My public page.
‘mypublic’ => array(
‘file’ => ‘yourcustomlayout.php’,
‘regions’ => array(‘side-pre’),
‘defaultregion’ => ‘side-pre’,
),3. Create a template file(yourcustom.mustache) in templates folder in theme.
4. in your custom layout php file get all user information and render it on .mustache file like below
echo $OUTPUT->render_from_template(‘theme_custom/mypublic’, $templatecontext);
Reference:
https://moodle.org/mod/forum/discuss.php?d=370809