A Mod_GeoIP telepítése az Apache számára RHEL-ben és CentOS-ben
A Mod_GeoIP egy Apache-modul, amely felhasználható a látogató IP-címének földrajzi helyének továbbítására az Apache webszerverre. Ez a modul lehetővé teszi a látogató országának, szervezetének, és helyének meghatározását. Különösen hasznos a földrajzi hirdetésmegjelenítés, célzott tartalom, levélszemét elleni küzdelem, csalásészlelés, átirányítás esetén. /A látogatók letiltásaja országuk és még sok más alapján.
A GeoIP modul lehetővé teszi a rendszergazdák számára a webes forgalom átirányítását vagy blokkolását az ügyfél földrajzi elhelyezkedésének megfelelően. A földrajzi helyzet az ügyfél IP-címén keresztül tanulható meg.
A Mod_GeoIP-nek két különböző verziója van, az egyik az ingyenes, a másik pedig a fizetős, és MaxMind GeoIP/GeoCity-t használ. adatbázisok.
- Ingyenes verzió: Az ingyenes verzióban a Geo City és az Country adatbázisok 99,5%-os pontossággal érhetők el.
- Fizetős verzió: A fizetős verzióban mindkét adatbázist 99,8%-os pontossággal kapja meg, az IP-címmel kapcsolatos további részletekkel.
Ha meg szeretné tekinteni az ingyenes és a fizetős verzió közötti különbségeket, látogasson el a Maxmind.com oldalra.
Ez a cikk elmagyarázza, hogyan állíthatja be és telepítheti a Mod_GeoIP modult az Apache-hoz RHEL és CentOS az EPEL lerakat és a YUM csomagkezelő segédprogrammal.
Feltételezzük, hogy már rendelkezik RHEL és CentOS rendszerrel működő LAMP (Linux, Apache) , MySQL, és PHP) beállítása. Ha nem, akkor olvassa el cikkeinket, ahol bemutattuk mindkét operációs rendszer telepítését LAMP segítségével.
RHEL/CentOS telepítése
- Az RHEL 7 és a CentOS 7 Minimal telepítése.
- RHEL 8 és CentOS 8 Minimal telepítése.
LAMP beállítása RHEL/CentOS rendszeren
- A LAMP (Linux, Apache, MySQL, PHP) telepítése RHEL és CentOS 7 rendszeren
- Az Apache, a MySQL/MariaDB és a PHP telepítése RHEL és CentOS 8 rendszeren
Az EPEL Repository engedélyezése az RHEL-ben és a CentOS-ben
Alapértelmezés szerint a mod_Geoip nem érhető el az RHEL/CentOS hivatalos adattárban, ezért telepítenünk kell és engedélyeznünk kell a harmadik féltől származó EPEL tárolót.
yum install epel-release
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [On RHEL 8]
Telepítse a Mod_GeoIP-t RHEL-ben és CentOS-ben
Miután engedélyezte az EPEL adattárat a rendszerén, egyszerűen telepítheti a mod_geoip fájlt a következő parancs futtatásával a függőségi csomagokkal együtt.
yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
Töltse le a legújabb Geo City and Country adatbázist
Célszerű letölteni a legújabb Geo City és Country Database-t, hogy naprakészek maradjanak.
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
Engedélyezze a Mod_GeoIP-t az Apache-ban
A modul telepítése után nyissa meg és szerkessze a modul fő konfigurációs fájlját egy parancssori szövegszerkesztővel, például a vi segítségével, majd aktiválja a modult az egész szerveren, az alábbi részletben látható módon.
vi /etc/httpd/conf.d/geoip.conf
Állítsa a GeoIPEnable sort Ki értékről Be értékre. Ezenkívül ügyeljen arra, hogy hozzáadja az abszolút elérési utat a GeoIP adatbázisfájlhoz.
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
</IfModule>
Indítsa újra az Apache szolgáltatást a változások tükrözéséhez.
systemctl restart httpd
OR
service httpd restart
A GeoIP modul szerverszintű bekapcsolása azonban nem ajánlott. A GeoIP modult csak olyan
vagy
blokkban engedélyezze, ahol ténylegesen végrehajtja a forgalom átirányítását vagy blokkolását.
Mod_GeoIP modul tesztelése
Annak ellenőrzéséhez, hogy a mod_geoip modul megfelelően működik-e az Apache-val, létre kell hoznunk egy PHP fájlt testgeoip.php néven az Apache alatt. gyökérkönyvtárban (pl. /var/www/html).
vi /var/www/html/testgeoip.php
Illessze be a következő php kódot.
<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>
Most próbálja meg meghívni a fájlt egy webböngészővel (pl. http://localhost/testgeoip.php). Megkapja IP-címét és országát.
GeoIP adatbázis frissítése
A GeoIP adatbázis minden hónap elején frissül. Ezért nagyon fontos a GeoIP adatbázis naprakészen tartása. Az adatbázis legújabb verziójának letöltéséhez használja a következő parancsot.
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
Automatikus GeoIP adatbázis frissítés
Készítettünk egy kis shell scriptet, amely minden hónapban automatikusan letölti a GeoIP adatbázis legújabb verzióját. Csak helyezze el a következő szkriptek bármelyikét az /etc/cron.monthly mappába.
1. szkript
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
2. szkript
#!/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
Felhasználók átirányítása ország alapján
Az alábbi példakód átirányítja a felhasználókat az általunk AS (Ázsia) országkód alapján. Így a megyekódjuk alapján bármely felhasználót átirányíthat.
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]
Felhasználók blokkolása ország alapján
Ez a példa letiltja a felhasználókat a GeoIP által beállított országkód alapján. Az alábbi példa letiltja a felhasználókat az AS (Ázsia) és az US (Egyesült Államok) országokból.
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
Felhasználók engedélyezése ország alapján
Ez az alábbi példa csak az alább említett országokból származó felhasználókat engedélyez.
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
A mod_geoip-ról és használatáról a http://www.maxmind.com/app/mod_geoip címen talál további információt. Ha bármilyen problémája van a mod_geoip modul beállításával, kérjük, ossza meg velünk megjegyzésekben, és ne felejtse el megosztani barátaival.