File “configuration.php” yang terletak di root folder dari Joomla site kita menjadi target utama Hacker untuk bisa akses masuk / login ke Control Panel / Backend Administrator Joomla, juga ke isi perut joomla yaitu database MySQL. Berikut ini tips ampuh untuk mengamankan file “configuration.php” tersebut.
Dengan teknik RFI (Remote File Inclusion) hacker bisa menemukan celah / lubang di Joomla site kita, jika celah / lubang ini tidak ditutup (setting PHP.ini, baca artikel saya sebelumnya), maka hacker bisa meletakkan Script Kiddies di salah satu sub folder dalam joomla site kita, begitu Script Kiddies ini dijalankan oleh hacker, maka dengan mudah file “configuration.php” ditemukan dan dibaca isinya oleh hacker.
File “configuration.php“, dari versi awal CMS Joomla sampai ke versi terakhir tidak banyak mengalami perubahan / kemajuan yang berarti, hanya berubah diisinya saja. Hal ini telah saya amati sejak Joomla versi 1.0.X sampai versi terbaru 1.7.0.
Kelemahan utama file “configuration.php” ini :
– nama filenya tidak pernah berubah
– Terletak (selalu) di root folder dari joomla sitenya
– isinya yang merupakan “text murni” sehingga bisa dibaca dengan mudah.
Tiga kelemahan ini, bisa dengan mudah dimanfaatkan oleh hacker, untuk menembus Joomla site kita.
Untuk mengatasi tiga kelemahan ini, saya coba melakukan sedikit riset terhadap file “configuration.php” dari semua versi Joomla dan cara Joomla site mengaksesnya. Hasilnya saya menemukan teknik pengamanan yang cukup efektif terkait file “configuration.php” ini.
Pengamanannya terdiri dari 2 bagian :
1. Mengubah nama file / rename file “configuration.php” dan memindahkan lokasinya.
2. Mengenkripsi variable nama database dan password akses ke database MySQL joomla site.
Berikut ini langkah-langkahnya dalam berbagai versi Joomla, sesuaikan dengan versi Joomla yang anda gunakan. Scroll ke bawah untuk melihat versi yang sesuai.
Pengamanan di Joomla versi 1.0.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
– index.php – index2.php – globals.php – administrator/index.php – administrator/index2.php – administrator/index3.php – administrator/components/com_admin/admin.admin.html.php – administrator/components/com_config/admin.config.html.php – administrator/components/com_config/admin.config.php – administrator/components/com_config/config.class.php – administrator/components/com_languages/admin.languages.php – administrator/includes/auth.php – includes/database.mysql5.php – includes/database.mysqli.php – includes/database.php – includes/joomla.php – includes/sef.php |
2. Letakkan file-file yang anda download tersebut sesuai dengan subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda. samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace” seperti gambar berikut :
10. Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat anda mendownload file2x tadi (nomor 1), browse ke root foldernya. misalnya : C:\download\joomla
11. Lalu klik tombol . Jika muncul dialog konfirmasi seperti berikut.
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php”
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database. pada file “includes/myset.php”
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
21. Masih dari dalam editor Dreamweaver, buka / open file “includes/database.php”
22. Scroll / temukan syntax berikut :
function database( $host=’localhost’, $user, $pass, $db=”, $table_prefix=”, $goOffline=true ) { |
Tepat sesudahnya tambahkan syntax berikut :
$db = base64_decode($db); $pass = base64_decode($pass); |
23. Buka / open file “includes/database.mysql5.php”
24. Scroll / temukan syntax berikut :
function database( $host=’localhost’, $user, $pass, $db=”, $table_prefix=”, $goOffline=true ) { |
25. Tepat sesudahnya tambahkan syntax berikut :
$db = base64_decode($db); $pass = base64_decode($pass); |
26. Simpan / save semua perubahan / editing yang telah kita lakukan, sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.). termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.5.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
– administrator/components/com_admin/tmpl/sysinfo_config.php – administrator/components/com_config/controllers/application.php – administrator/includes/framework.php – libraries/joomla/application/application.php – libraries/joomla/database/database/mysql.php – libraries/joomla/database/database/mysqli.php – plugins/editors/xstandard/attachmentlibrary.php – plugins/editors/xstandard/imagelibrary.php – xmlrpc/includes/framework.php |
2. Letakkan file-file yang anda download tersebut sesuai dengan subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda. samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10. Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
11. Lalu klik tombol . Jika muncul dialog konfirmasi seperti berikut
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php”
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
22. Scroll / temukan syntax seperti berikut ini :
// perform a number of fatality checks, then return gracefully if (!function_exists( ‘mysql_connect’ )) { |
23. Tepat sebelumnya, tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
24. Open / buka file “libraries/joomla/database/database/mysqli.php”
25. Scroll / temukan syntax berikut ini :
// Unlike mysql_connect(), mysqli_connect() takes the port and socket |
26. Tepat sebelumnya, tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
27. Simpan / save semua perubahan / editing yang telah kita lakukan, sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.). termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.6.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
– administrator/components/com_config/models/application.php – administrator/includes/framework.php – libraries/joomla/database/database/mysql.php – libraries/joomla/database/database/mysqli.php |
2. Letakkan file-file yang anda download tersebut sesuai dengan subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda. samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10. Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
11. Lalu klik tombol . Jika muncul dialog konfirmasi seperti berikut
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php”
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
22. Scroll / temukan syntax berikut ini :
// Perform a number of fatality checks, then return gracefully |
23. Tepat sebelumnya tambahkan syntax berikut ini :
$password = base64_decode($password); $database = base64_decode($database); |
24. Open / buka file “libraries/joomla/database/database/mysqli.php“.
25. Scroll / temukan syntax berikut ini :
// Unlike mysql_connect(), mysqli_connect() takes the port and socket |
26. Tepat sebelumnya, tambahkan syntax berikut :
$password = base64_decode($password); $database = base64_decode($database); |
27. Simpan / save semua perubahan / editing yang telah kita lakukan, sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.). termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda. Silahkan scroll ke bagian Penutup (paling bawah) di artikel ini.
Pengamanan di Joomla versi 1.7.X :
1. Gunakan aplikasi FTP (Cute_FTP atau WS_FTP), untuk mendownload file-file berikut ini dari Joomla site milik anda :
– administrator/components/com_admin/models/sysinfo.php – administrator/components/com_config/models/application.php – administrator/includes/framework.php – libraries/joomla/database/database/mysql.php – libraries/joomla/database/database/mysqli.php |
2. Letakkan file-file yang anda download tersebut sesuai dengan subfoldernya (bikin sub foldernya jika belum ada) di harddisk PC anda. samakan persis penamaan subfoldernya.
3. Masih melalui aplikasi FTP, download file “configuration.php” dari root folder Joomla site anda. Letakkan hasil downloadnya terpisah dari lokasi file-file sebelumnya (nomor 1).
4. Tutup / close aplikasi FTP-nya.
5. Copy dan letakkan duplikatnya di folder “includes” hasil download nomor (1) di atas. sehingga juga terdapat file “configuration.php” di dalam folder “includes”.
6. Rename / ubah nama file “includes/configuration.php” menjadi misalnya :
myset.php
Terserah anda, sebaiknya nama filenya bersifat pribadi dan tidak mudah ditebak oleh orang lain, yang penting akhirannya harus “.PHP”.
7. Gunakan aplikasi (Macromedia / Adobe) Dreamweaver, Jalankan tanpa membuka / open satu file pun.
8. Dalam editor Dreamweaver, tekan tombol Ctrl+F, untuk membuka kotak dialog “Find & Replace”.
9. Isi kotak “Find” dan “Replace seperti gambar berikut :
10. Ubah bagian “Find in :” menjadi “Folder”, lalu browse ke folder tempat anda mendownload file2x tadi (nomor 1), browse ke root foldernya.
misalnya : C:\download\joomla
11. Lalu klik tombol . Jika muncul dialog konfirmasi seperti berikut
klik tombol “Yes”.
12. Hasilnya semua text “configuration.php” pada file2x tersebut akan berganti menjadi “includes/myset.php“.
13. Masih dalam editor Dreamweaver, open / buka file “includes/myset.php”
14. Perhatikan bagian info nama database & passwordnya, seperti berikut :
15. Gunakan browser internet, buka link berikut ini : http://www.crypo.com/eng_base64c.php
16. Copy text nama databasenya : u4231_dbjoomla
17. Lalu paste ke browser internet, seperti gambar berikut.
18. Klik tombol “encrypt”, sehingga hasilnya jadi seperti berikut :
19. Copy hasil text enkripsi (base64) tersebut ke dalam variable nama database.
20. Lakukan hal yang sama dengan isi variabel passwordnya, sehingga hasil akhirnya (terenkripsi / base64), jadi seperti ini :
21. Dari editor Dreamweaver, open / buka file “libraries/joomla/database/database/mysql.php“.
23. Scroll / temukan syntax berikut ini :
// Make sure the MySQL extension for PHP is installed and enabled. |
24. Tepat sebelumnya tambahkan syntax berikut ini :
$options[‘password’] = base64_decode($options[‘password’]); $options[‘database’] = base64_decode($options[‘database’]); |
25. Open / buka file “libraries/joomla/database/database/mysqli.php“.
26. Scroll / temukan syntax berikut ini :
$options[‘socket’] = null; |
27. Tepat sesudahnya, tambahkan syntax berikut :
$options[‘password’] = base64_decode($options[‘password’]); $options[‘database’] = base64_decode($options[‘database’]); |
28. Simpan / save semua perubahan / editing yang telah kita lakukan, sekarang upload kembali file2xnya ke Joomla site anda (gunakan aplikasi FTP), sesuaikan dengan foldernya masing-masing file (lihat nomor 1.). termasuk file “configuration.php” yang telah kita rename menjadi “myset.php” tadi ke folder “includes”. Lalu hapus file “configuration.php” di root folder Joomla site anda.
Penutup
Dengan pengamanan yang telah kita lakukan, maka tingkat keamanan Joomla site kita menjadi naik satu level lagi, karena hacker menjadi susah mencari file konfigurasi joomla dan tidak mudah memecahkan nama database dan password akses ke database MySQL-nya.
Guna hasil lebih baik pada bagian enkripsi nama database dan passwordnya, kita bisa buat fungsi Encrypt / Decrypt buatan kita sendiri yang tidak mengikuti fungsi enkripsi / dekripsi kepunyaan PHP standard. Sisipkan fungsinya di dalam file-file :
– includes/database.php – includes/database.mysql5.php – includes/database.mysqli.php – libraries/joomla/database/database/mysql.php – libraries/joomla/database/database/mysqli.php |
Sesuai dengan versi Joomla yang kita gunakan.
Semoga Bermanfaat
XNY
mantappss bro.. ijin bookmark yah…
silahkan 🙂
mantap om infonya…mau tanya nich om..ngrubah di script geto gag gampang error..saya setiap kali coba uprek2 script nanti hasilnya eror 404..makasih salam newbie joomla
Kalo’ error 404 biasanya berhubungan dengan lokasi file / folder yang tidak ditemukan,
makanya saat melakukan “oprek / core edit”, selalu diperhatikan :
– penamaan file
– lokasi file & foldernya, biasanya butuh alamat dalam format URL relative, contoh :
../includes/[nama_file].php
../.. /includes/[nama_file].php
maksih penjelasanya..nice artikel nich buat newbie kyk gw..
semoga ilmunya bermanfaat ..
Tks.
Salam kenal mas,, salut untuk artikelnya . . .
Btw, saya lagi punya masalah nich mas. Di localhost, website yg saya buat pake joomla bisa login user maupun admin. Gak ada masalah samasekali. Tapi setelah di hosting, admin dan user tidak bisa login. Hanya bisa melihat website tampa login. Setelah googling sech sepertinya ada masalah dengan folder session. Tapi saya msh blm mengerti. Mohon Bantuannya mas,, Thx b4
Kalo’ boleh tahu, anda pakai Joomla versi berapa ??
perbedaan konfigurasi antara di PC lokal kita dengan di Server Web (Hosting),
biasanya ada di dalam file “configuration.php”, khususnya yang berkaitan
dengan lokasi folder / pathnya, seperti :
$tmp_path
$log_path
$mosConfig_absolute_path
$mosConfig_cachepath
Antara PC Lokal dengan Server Web (Hosting),
pastinya isi / nilai variabelnya berbeda, tidak mungkin sama.
Kalau’ problemnya di Server Web (hosting),
coba anda cek lagi isi variabel “$tmp_path”.
Harusnya isinya disesuaikan dengan setting Server Web (hosting) anda.
Tanya bro, saya sudah ikuti panduannya ngubah nama file & alamat configuration.php sebelum upload di web hosting. Semuanya berjalan lancar di localhost. Tapi setelah sy upload ke webhosting, gak bisa jalan. Cs mereka bilang katanya joomlanya harus standar. Apa memang begitu?
error yang muncul apa, mas ??
caranya coba di telusuri satu-satu dahulu :
a. Lewat Backend Control Panel CMS Joola, disable seluruh komponen / module / plugin yang bukan standard / bawaan Joomla-nya
b. Lalu coba aktifkan satu-persatu kembali, mulai dari plugin, lalu module, terakhir komponen, sambil dicek kemungkinan tampilan error karena salah satunya.
Jika errornya karena plugin / module / komponen, tinggal dicek aja isi file .php-nya jika ada yang masih pakai “configuration.php” standard, silahkan diedit.
NB : ada kemungkinan cache content-nya belum sempat di clear / clean dari Backend Administrator Joomla-nya
Maaf bro, tanya lagi tapi agak di luar topik sih. Error: “‘No configuration file…..” memang sudah beres, tapi sekarang kokwebsite saya tidak bisa muncul skin template-nya plus gambar2. halaman administrator juga jadi blank. Tapi yang bikin saya heran, kok di web server lokal saya tidak ada masalah seperti ini?