Weboldal keresés

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.

  1. Ingyenes verzió: Az ingyenes verzióban a Geo City és az Country adatbázisok 99,5%-os pontossággal érhetők el.
  2. 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
  1. Az RHEL 7 és a CentOS 7 Minimal telepítése.
  2. RHEL 8 és CentOS 8 Minimal telepítése.
LAMP beállítása RHEL/CentOS rendszeren
  1. A LAMP (Linux, Apache, MySQL, PHP) telepítése RHEL és CentOS 7 rendszeren
  2. 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.