Cara Install Mod_GeoIP untuk Apache di RHEL dan CentOS
Mod_GeoIP adalah modul Apache yang dapat digunakan untuk memasukkan lokasi geografis alamat IP pengunjung ke server web Apache. Modul ini memungkinkan Anda menentukan negara, organisasi, dan lokasi pengunjung. Hal ini sangat berguna untuk Penayangan Iklan Geo, Konten Target, Pemberantasan Spam, Deteksi Penipuan, Pengalihan /Memblokir pengunjung berdasarkan negaranya dan masih banyak lagi.
Modul GeoIP memungkinkan administrator sistem untuk mengarahkan atau memblokir lalu lintas web sesuai dengan lokasi geografis klien. Lokasi geografis dipelajari melalui alamat IP klien.
Mod_GeoIP memiliki dua versi berbeda, satu Gratis dan satu lagi Berbayar dan menggunakan MaxMind GeoIP/GeoCity basis data.
- Versi Gratis: Dalam versi Gratis, basis data Geo City dan Country tersedia dengan akurasi 99,5%.
- Versi Berbayar: Dalam versi Berbayar, Anda akan mendapatkan kedua database dengan akurasi 99,8% dengan beberapa detail lebih lanjut tentang alamat IP.
Jika Anda ingin melihat lebih banyak perbedaan antara versi Gratis dan Berbayar, silakan kunjungi Maxmind.com.
Artikel ini menjelaskan cara menyiapkan dan menginstal modul Mod_GeoIP untuk Apache di RHEL dan CentOS menggunakan repositori EPEL dengan utilitas manajer paket YUM.
Kami berasumsi bahwa Anda sudah menjalankan sistem RHEL dan CentOS dengan LAMP (Linux, Apache) yang berfungsi Penyiapan , MySQL, dan PHP). Jika belum, baca artikel kami yang menunjukkan pemasangan kedua sistem operasi dengan LAMP.
Instalasi RHEL/CentOS
- Instalasi RHEL 7 dan CentOS 7 Minimal.
- Instalasi RHEL 8 dan CentOS 8 Minimal.
Pengaturan LAMPU di RHEL/CentOS
- Cara Install LAMP (Linux, Apache, MySQL, PHP) di RHEL dan CentOS 7
- Cara Install Apache, MySQL/MariaDB, dan PHP di RHEL dan CentOS 8
Aktifkan Repositori EPEL di RHEL dan CentOS
Secara default mod_Geoip tidak tersedia di repositori resmi RHEL/CentOS, jadi kita perlu menginstal dan mengaktifkan repositori EPEL pihak ketiga.
yum install epel-release
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [On RHEL 8]
Instal Mod_GeoIP di RHEL dan CentOS
Setelah repositori EPEL diaktifkan di sistem Anda, Anda cukup menginstal mod_geoip dengan menjalankan perintah berikut bersama paket ketergantungannya.
yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
Unduh Database Kota dan Negara Geo terbaru
Sebaiknya unduh Geo City dan Country Database terbaru agar selalu mendapatkan informasi terbaru.
cd /usr/share/GeoIP/
mv GeoIP.dat GeoIP.dat_org
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
gunzip GeoLite2-Country.tar.gz
gunzip GeoLite2-City.tar.gz
Aktifkan Mod_GeoIP di Apache
Setelah modul diinstal, buka dan edit file konfigurasi utama modul, dengan editor teks baris perintah seperti vi, dan aktifkan modul di seluruh server, seperti yang diilustrasikan dalam cuplikan di bawah.
vi /etc/httpd/conf.d/geoip.conf
Atur garis GeoIPEnable dari Mati ke Aktif. Selain itu, pastikan Anda menambahkan jalur absolut ke file database GeoIP.
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
</IfModule>
Mulai ulang layanan Apache untuk mencerminkan perubahan.
systemctl restart httpd
OR
service httpd restart
Namun, tidak disarankan untuk mengaktifkan modul GeoIP di seluruh server. Anda harus mengaktifkan modul GeoIP hanya di blok
atau
tempat Anda sebenarnya akan melakukan pengalihan atau pemblokiran lalu lintas.
Menguji Modul Mod_GeoIP
Untuk menguji modul mod_geoip berfungsi dengan benar dengan Apache, kita perlu membuat file PHP bernama testgeoip.php di bawah Apache direktori root (misalnya /var/www/html).
vi /var/www/html/testgeoip.php
Masukkan potongan kode php berikut ke dalamnya.
<html>
<head>
<title>What is my IP address - determine or retrieve my IP address</title>
</head>
<body>
<?php
if (getenv(HTTP_X_FORWARDED_FOR)) {
$pipaddress = getenv(HTTP_X_FORWARDED_FOR);
$ipaddress = getenv(REMOTE_ADDR);
echo "Your Proxy IP address is : ".$pipaddress. " (via $ipaddress) " ;
} else {
$ipaddress = getenv(REMOTE_ADDR);
echo "Your IP address is : $ipaddress";
}
$country = getenv(GEOIP_COUNTRY_NAME);
$country_code = getenv(GEOIP_COUNTRY_CODE);
echo "<br/>Your country : $country ( $country_code ) ";
?>
</body>
</html>
Sekarang, coba panggil file tersebut menggunakan browser web (misalnya http://localhost/testgeoip.php). Anda akan mendapatkan alamat IP dan detail Negara Anda.
Memperbarui Basis Data GeoIP
Basis data GeoIP diperbarui setiap awal bulan. Jadi, sangat penting untuk selalu memperbarui database GeoIP. Untuk mengunduh database versi terbaru gunakan perintah berikut.
cd /usr/share/GeoIP/
mv GeoIP.dat GeoIP.dat_org
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
gunzip GeoLite2-Country.tar.gz
gunzip GeoLite2-City.tar.gz
Pembaruan Basis Data GeoIP Otomatis
Kami telah menulis skrip shell kecil yang secara otomatis akan mengunduh database GeoIP versi terbaru setiap bulan. Tempatkan saja salah satu skrip berikut di bawah /etc/cron.monthly.
Skrip 1
Automatic GeoIP Database Update
#!/bin/sh
cd /usr/share/GeoIP
mv GeoIP.dat GeoIP.dat_org
wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
gzip -d -f GeoLite2-Country.tar.gz
Skrip 2
#!/bin/sh
GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=
DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6"
if [ -d "${GEOIPDIR}" ]; then
cd $GEOIPDIR
if [ -n "${DATABASES}" ]; then
TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)
echo "Updating GeoIP databases..."
for db in $DATABASES; do
fname=$(basename $db)
wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/${db}.dat.gz" -O "${TMPDIR}/${fname}.dat.gz"
gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
chmod 0644 "${GEOIPDIR}/${fname}.dat"
done
[ -d "${TMPDIR}" ] && rm -rf $TMPDIR
fi
fi
Mengarahkan Pengguna berdasarkan Negara
Contoh kode di bawah ini akan mengarahkan pengguna berdasarkan kode negara yang kami tetapkan ke AS (Asia). Dengan cara ini Anda dapat mengarahkan pengguna mana pun berdasarkan kode wilayah mereka.
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
RewriteRule ^(.*)$ https://linux-console.net$1 [R,L]
Memblokir Pengguna berdasarkan Negara
Contoh ini akan memblokir pengguna berdasarkan kode negara yang ditetapkan GeoIP. Contoh di bawah ini akan memblokir pengguna dari negara AS (Asia) dan AS (Amerika Serikat).
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
... place more countries here
Deny from env=BlockCountry
Mengizinkan Pengguna berdasarkan Negara
Contoh di bawah ini hanya akan mengizinkan pengguna dari negara-negara yang disebutkan di bawah.
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
... place more countries here
Deny from all
Allow from env=AllowCountry
Untuk informasi lebih lanjut tentang mod_geoip dan penggunaannya dapat ditemukan di http://www.maxmind.com/app/mod_geoip. Jika Anda mengalami kesulitan dalam menyiapkan modul mod_geoip, beri tahu kami melalui komentar dan jangan lupa untuk membagikannya kepada teman-teman Anda.