Mengatur akses Joomla site dengan IP Address Manajemen


Ingin membatasi IP address yang bisa akses Joomla site anda ?

Ingin memblok / banned IP Address tertentu ?

Mengatur pola IP address tertentu (pattern) yang bisa akses ?

Berikut ini jawabannya.

Sebenarnya telah ada extension / add-on khusus Joomla untuk hal ini
(lihat link ini).

Namun setelah saya pelajari extension Joomla itu ternyata masih belum
memuaskan saya pribadi🙂

Akhirnya saya putuskan untuk membuat sendiri
IP Address Manajemen yang menurut saya bisa memenuhi kriteria yang saya
butuhkan.

Cara ini sama sekali tidak "menyentuh" database MySQL yang digunakan oleh
Joomla site kita.

Cara ini saya sebut cara "PHP core coding", karena
berhubungan langsung dengan programming script PHP.

Susah ?? Jangan khawatir🙂 karena cara ini hanya perlu sedikit modifikasi
variabel array jika anda ingin mengubah setting IP Address Manajemen-nya.

Anda hanya membutuhkan 3 file PHP.

Berikut ini langkah-langkah membuat IP Address Manajemennya :

1. Gunakan text editor, lalu buat file teks biasa, copy & paste php script
berikut ini :

 

<?

$myip = getenv("REMOTE_ADDR");

include_once("ipaddress_list.php");

$valid_ip = true;

//Bagian Check Banned IP

if (isset($banned_ip) && count($banned_ip)>0) {

   if (array_search($myip,$banned_ip)!==false) $valid_ip = false;

}

//Bagian Check Pattern IP

if ($valid_ip==true && isset($pattern_ip) && count($pattern_ip)>0) {

   $myip_cek = explode(".",$myip);

   $cpattern = $pattern_ip;

   $ketemu = false;

   for ($i=0; $i<count($cpattern); $i++) {

        $mypattern = explode(".",$cpattern[$i]);

        $hasil = ($mypattern[0] & $myip_cek[0]) .".". ($mypattern[1] & $myip_cek[1])         .".". ($mypattern[2] & $myip_cek[2]) . . ($mypattern[3] & $myip_cek[3]);

        if ($cpattern[$i] == $hasil ) $ketemu = true;

   }

   $valid_ip = $ketemu;

}

//Bagian Check Special IP

if ($valid_ip==false && isset($special_ip) && count($special_ip)>0) {

   if (array_search($myip,$special_ip)!==false) $valid_ip = true;

   else $valid_ip = false;

}

if ($valid_ip==false) {

   header("Location: forbidden.php");

}

?>

2. Simpan / Save dengan nama file "prevent_ipaddress.php"

3. Gunakan teks editor kembali, buat file teks baru, copy & paste php script
berikut ini :

  <?

$banned_ip = array();

$pattern_ip = array();

$special_ip = array("127.0.0.1");

?>

4. Simpan / Save dengan nama file "ipaddress_list.php"

5. Gunakan teks editor kembali, buat file teks baru, copy & paste php script
berikut ini :

  <?

echo "Sorry, you don’t have any authority to access this facilities";

exit;

?>

6. Simpan / Save dengan nama file "forbidden.php"

7. Upload file "prevent_ipaddress.php" dan "ipaddress_list.php" ke folder "includes" dari Joomla site anda

8. Upload file "forbidden.php" ke root folder Joomla site anda

9. Download file "index.php" dari root folder Joomla site anda

10. Gunakan text editor, edit file "index.php" yang anda download itu,
pada baris paling awal dari isi file "index.php", yang berisi :

  <?php

11. Anda ganti / timpa / replace dengan script php berikut ini :

  <?php

include_once("includes/prevent_ipaddress.php");

12. Simpan / Save hasil perubahan file "index.php"-nya.

13. Tutup text editornya, lalu upload file "index.php" kembali ke root folder

Joomla site anda.

Beres ??

nanti dulu, sekarang bagian "intinya" implementasi IP Address Manajemen
berdasarkan kasus / problem khusus
:

1. Problem pertama, Joomla site anda ternyata berjalan di area LAN / Network

atau jaringan kecil yang ternyata terhubung ke jaringan yang lebih besar (WAN).

Bagaimana caranya kita membatasi hanya IP address group tertentu (pattern)

yang bisa akses Joomla site kita ?? Contohnya group IP Address : 10.18.*.*

Solusinya :

edit file "includes/ipaddress_list.php" yang berisi :

  <?

$banned_ip = array();

$pattern_ip = array();

$special_ip = array("127.0.0.1");

?>

menjadi :

  <?

$banned_ip = array();

$pattern_ip = array("10.18.0.0");

$special_ip = array("127.0.0.1");

?>

Keterangan : group IP address diwakili oleh variabel "$pattern_ip".

Karakter
* diganti dengan angka 0 (nol).

2. Problem kedua, Joomla site anda ternyata berdasarkan log statistik (CPanel),
mendapat "serangan" dari 3 IP Address ini :

174.123.235.1

174.123.202.11

176.123.200.10

Bagaimana cara kita memblok akses ketiga IP address ini terhadap Joomla site
kita ?

Solusinya :

edit file "includes/ipaddress_list.php" menjadi :

  <?

$banned_ip = array("174.123.235.1", "174.123.202.11", "176.123.200.10");

$pattern_ip = array("10.18.0.0");

$special_ip = array("127.0.0.1");

?>

Keterangan : ip address yang diblok / banned itu diwakili oleh variabel "$banned_ip"

3. Problem ketiga, didalam suatu group IP address, contohnya 10.18.*.* ,
ternyata anda diminta untuk membolehkan IP address tertentu

diluar group
IP address tersebut agar bisa mengakses Joomla site anda. Contohnya IP
address :

202.190.20.15

Solusinya :

edit file "includes/ipaddress_list.php" menjadi :

  <?

$banned_ip = array("174.123.235.1", "174.123.202.11", "176.123.200.10");

$pattern_ip = array("10.18.0.0");

$special_ip = array("127.0.0.1", "202.190.20.15");

?>

Keterangan : ip address yang diperbolehkan (whitelist) itu diwakili oleh
variabel "$special_ip".

Khusus untuk ip address "127.0.0.1" itu merupakan
IP Address alias dari "localhost"
biasanya dijadikan default akses
di semua web server termasuk Apache web server yang banyak digunakan oleh
Joomla site.

Kesimpulan :

kombinasi dari ketiga variabel array (string / text) dalam file "includes/ipaddress_list.php" itulah yang mengatur hak akses terhadap Joomla
site anda.

Cara yang sama juga bisa anda terapkan di "Backend Administrator" joomla
site anda.

Cara ini berlaku di semua versi Joomla, baik versi lama (1.0.X) maupun versi
yang baru (1.5.X).

Bahkan cara "PHP core coding" ini juga bisa diterapkan
di website (PHP) yang tidak menggunakan Joomla🙂

Yang paling utama, anda harus yakin terhadap IP tertentu yang anda curigai sebagai "sumber serangan" terhadap Joomla site anda,
sebelum anda memasukkan ke dalam data blok / banned IP.

Semoga bermanfaat🙂

 

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s