Postingan

Tips Pengamanan OJS: Panduan Lengkap Mencegah Serangan Malware, Cloaking, dan Peretasan

Platform Open Journal Systems (OJS) merupakan CMS berbasis PHP yang sangat populer di dunia akademik, CMS ini banyak digunakan dalam mengelola dan menerbitkan jurnal ilmiah secara daring (online). Karena kepopuleran dan celah keamanan yang dimilikinya, OJS menjadi target bagi peretas yang melakukan serangan:

  • SEO Gambling Cloaking
  • Header injection
  • File-based malware
  • Arbitrary PHP upload
  • Bot scanning & brute force login

Kasus peretasan yang pernah terjadi pada OJS biasanya mengakibatkan:

  • Judul jurnal di Google berubah menjadi promosi judi/slot online (judol)
  • Meta description disisipi konten judi
  • Halaman yang dilihat oleh pengunjung tampak normal dan baik-baik saja
  • Tetapi Googlebot (dan bot lainnya) diarahkan ke halaman lain yang menampilkan konten judol (cloaking)
  • File inti OJS disusupi kode berbahaya

Artikel ini merangkum tips pengamanan OJS paling penting dan praktis, berdasarkan pengalaman nyata proses pembersihan dan hardening sistem.


1. Waspadai Tanda-Tanda OJS Diretas

Beberapa indikasi OJS Anda telah terinfeksi:

  • Deskripsi Google berubah menjadi seperti “SLOT”, “Gacor”, dll
  • Google Search Console menampilkan pemilik baru yang tidak dikenal
  • Ada file HTML verifikasi palsu di root OJS
  • Terdapat akun Journal Manager atau Admin yang bukan milik Anda
  • Hasil curl Googlebot berbeda dibanding tampilan browser
  • File inti OJS seperti index.php atau /lib/pkp/include/bootstrap.inc.php mengalami modifikasi

Jika tanda-tanda ini muncul, besar kemungkinannya OJS Anda menjadi korban Malware SEO Gambling Cloaking.


2. Perbaiki dan Bersihkan File Berbahaya

Serangan cloaking biasanya bekerja dengan cara:

  1. Mendeteksi apakah pengunjung adalah Googlebot
  2. Jika ya, malware mengirim halaman judi palsu
  3. Jika bukan, OJS tampil normal
  4. Semua dilakukan melalui file PHP yang dimodifikasi

Hal ini berdampak pada hasil pencarian di mesin pencari (Google), dimana hasil pencarian jurnal Anda akan menampilkan kontek judi/slot online (judol). Jika Anda mengalami hal tersebut, bersihkan file berikut:

  • index.php dan bootstrap.inc.php (sering menjadi target injeksi, tidak menutup kemungkinan injeksi dilakukan di file lain)
  • file verifikasi palsu googlexxxx.html
  • file PHP mencurigakan di /public, /../files_dir, /cache, /plugins

Gunakan perintah pencarian melalui SSH dengan perintah seperti:

1
2
3
grep -R "slot" -n .
grep -R "fetch(" -n .
grep -R "is_bot(" -n .

Cek file inti apakah masih bersih. Unduh file OJS dari situs PKP, lalu bandingkan dengan instalasi OJS Anda:

1
diff -r OJS-original/ OJS-live/

Terakhir, periksa cron job mencurigakan.


3. Tambah Pengamanan dengan .htaccess

Banyak serangan OJS terjadi karena file PHP berbahaya dapat dieksekusi langsung di direktori publik. Pastikan Anda menyimpan data jurnal (direktori files) di luar direktori public_html. Di samping itu, gunakan .htaccess berikut ini di root OJS untuk meningkatkan keamanannya:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
###########################################
# Security Headers
###########################################
<IfModule mod_headers.c>
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set X-XSS-Protection "1; mode=block"
</IfModule>

###########################################
# Force HTTPS
###########################################
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

###########################################
# RESTful URLs
###########################################
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

###########################################
# Block Sensitive Files
###########################################
<FilesMatch "(?i)(config.inc.php|composer\.json|composer\.lock|package\.json|package-lock\.json|\.env|\.git)">
    Require all denied
</FilesMatch>

Di samping itu, tambahkan .htaccess khusus di folder /public dan/atau /../files_dir:

/public/.htaccess dan/atau /files/.htaccess

1
2
3
<FilesMatch "\.(php|phtml|php5|php7|php8)$">
    Require all denied
</FilesMatch>

Ini memblokir sebagian besar serangan malware berbasis upload file.


4. Hardening OJS dari Panel Admin

Beberapa langkah penting:

  1. Nonaktifkan pendaftaran user publik
    Serangan sering dimulai dengan pembuatan akun Author/Editor palsu. Jika tidak memungkinkan untuk menonaktifkan pendaftaran mandiri, aktifkan ReCaptcha dan gunakan plugin Form Honeypot untuk menyaring bot yang melakukan pendaftaran.
  2. Batasi role yang dapat mengunggah file dan jenis file yang boleh diunggah
    Gunakan plugin Control Public Files untuk membatasi jenis file yang diizinkan untuk diunggah ke Open Journal Systems (OJS). File yang sebaiknya diizinkan untuk diunggah umumnya meliputi format standar untuk manuskrip, data tambahan, dan dokumen pendukung lainnya. Format yang paling umum dan direkomendasikan adalah:
    • Microsoft Word (.docx atau .doc): Ini adalah format yang paling umum digunakan oleh penulis dan editor karena kemudahan pengeditan dan peninjauan sejawat (peer-review). Format ini memungkinkan penggunaan fitur “track changes” untuk kolaborasi.
    • OpenDocument Text (.odt): Alternatif sumber terbuka untuk dokumen teks yang didukung oleh berbagai perangkat lunak perkantoran.
    • Rich Text Format (.rtf): Format teks yang lebih universal yang dapat dibuka oleh hampir semua program pengolah kata.
    • Portable Document Format (.pdf): Format ini sangat penting. File PDF memastikan tata letak dan pemformatan dokumen tetap konsisten di berbagai perangkat dan sistem operasi. OJS sering kali menggunakan PDF sebagai versi “bukti baca” (proof) atau versi final yang diterbitkan untuk pembaca.
    • Format Data Tambahan: Jika jurnal Anda menerima data pendukung (misalnya, kumpulan data penelitian, kode sumber, atau file multimedia), format yang diizinkan harus spesifik untuk jenis data tersebut, seperti:
      • Spreadsheet (.csv atau .xlsx)
      • Gambar (.jpeg, .png, .tiff)
      • File multimedia (jika relevan, seperti .mp3, .mp4, atau .wav, meskipun ini kurang umum untuk jurnal standar)
  3. Nonaktifkan plugin lama yang tidak digunakan
    Plugin lama adalah sumber celah keamanan seperti RCE (Remote Code Execution).
  4. Gunakan kata sandi yang kuat
    Kata sandi yang kuat bertindak sebagai garis pertahanan pertama terhadap akses tidak sah terutama ke akun journal manager dan editor. Gunakan plugin Better Password untuk mengimplementasikan kebijakan password bagi pengguna.
  5. Pastikan files_dir berada di luar public_html
    Contoh aman:
    1
    
     files_dir = "/home/user/ojs-files"
    

    Contoh berbahaya:

    1
    
     files_dir = "/home/user/public_html/files"
    

5. Hardening Level Server

Untuk memperkuat dari sisi hosting/server:

  1. Pasang reCAPTCHA pada login, dengan ini brute-force attack tidak akan berhasil. Konfigurasinya dilakukan melalui file config.inc.php.
  2. Atur require_validation menjadi On pada config.inc.php agar pengguna baru diwajibkan memvalidasi alamat email mereka sebelum menggunakan akun baru.
  3. Aktifkan ModSecurity (OWASP CRS)
  4. Aktifkan ImunifyAV atau Imunify360
  5. Nonaktifkan fungsi PHP berbahaya
    1
    
     disable_functions = system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, proc_open, apache_child_terminate, virtual, mb_send_mail
    
  6. Gunakan permission yang sesuai agar lebih aman
    1
    2
    3
    
     folder 755
     file   644
     config.inc.php 600
    
  7. Matikan directory listing

Jika menggunakan CDN seperti HCDN, pastikan untuk purge cache setelah membersihkan malware.


6. Hardening SEO untuk Mencegah Cloaking Ulang

Tidak sedikit serangan OJS yang memodifikasi meta tag, schema JSON-LD, atau OpenGraph untuk tujuan SEO gambling.

Langkah-langkah penting:

  1. Periksa Google Search Console → Ownership
    Hapus pemilik yang tidak dikenal.
  2. Hapus file verifikasi Google palsu
    Biasanya berbentuk googleXXXX.html.
  3. Gunakan URL Inspection untuk reindex ulang halaman
    Ini memperbaiki deskripsi & title di hasil pencarian.

7. Lakukan Monitoring Berkala

Setelah sistem bersih, lakukan monitoring:

  • Cek error log setiap 1–2 minggu
  • Jalankan grep untuk mencari injeksi baru
  • Pantau Search Console
  • Periksa pembaruan yang tersedia dan upgrade secara rutin ke OJS versi terbaru

Dengan menerapkan monitoring, Anda dapat mencegah dan mendeteksi serangan dengan cepat.


Kesimpulan

OJS adalah platform yang stabil dan handal, tetapi karena sifatnya yang kompleks, sering berjalan pada shared hosting, dan konfugurasi yang lemah, ia menjadi target favorit penyerang. Akan tetapi, Anda dapat meningkatkan keamanan OJS dengan melakukan beberapa hal seperti yang telah kita bahas di atas. Dengan begitu Anda dapat membuat instalasi OJS jauh lebih sulit diretas, sekaligus menjaga reputasi jurnal Anda.

Postingan ini dilisensikan di bawah CC BY 4.0 oleh penulis.