Kuinka asentaa Mod_GeoIP for Apache RHEL- ja CentOS-järjestelmiin


Mod_GeoIP on Apache-moduuli, jonka avulla voidaan saada vierailijan IP-osoitteen maantieteellinen sijainti Apache-verkkopalvelimelle. Tämän moduulin avulla voit määrittää vierailijan maan, organisaation ja sijainnin. Se on erityisen hyödyllinen maantieteellisten mainosten näyttämiseen, kohdesisältöön, roskapostin torjuntaan, petosten havaitsemiseen ja uudelleenohjaukseen. /Estää vierailijat heidän maansa perusteella ja paljon muuta.

GeoIP-moduulin avulla järjestelmänvalvojat voivat ohjata tai estää verkkoliikennettä asiakkaan maantieteellisen sijainnin mukaan. Maantieteellinen sijainti opitaan asiakkaan IP-osoitteen kautta.

Mod_GeoIP:llä on kaksi eri versiota, joista toinen on ilmainen ja toinen maksullinen ja käyttää MaxMind GeoIP/GeoCity -versiota. tietokantoja.

  1. Ilmainen versio: ilmaisessa versiossa Geo City- ja Country-tietokannat ovat saatavilla 99,5 % tarkkuudella.
  2. Maksullinen versio: Maksullisessa versiossa saat molemmat tietokannat 99,8 % tarkkuudella ja tarkempia tietoja IP-osoitteesta.

Jos haluat nähdä lisää eroja ilmaisen ja maksullisen version välillä, käy osoitteessa Maxmind.com.

Tässä artikkelissa kerrotaan, kuinka Mod_GeoIP-moduuli määritetään ja asennetaan Apachelle RHEL- ja CentOS käyttämällä EPEL -varastoa YUM-paketinhallinta-apuohjelman kanssa.

Oletamme, että sinulla on jo käynnissä RHEL- ja CentOS-järjestelmä sekä toimiva LAMP (Linux, Apache -, MySQL- ja - ja PHP-asetukset. Jos ei, lue artikkelimme, joissa olemme osoittaneet molempien käyttöjärjestelmien asennuksen LAMPin avulla.

RHEL/CentOS:n asennus
  1. RHEL 7:n ja CentOS 7 Minimalin asennus.
  2. RHEL 8:n ja CentOS 8 Minimalin asennus.
LAMP-asetus RHEL/CentOS:ssä
  1. Kuinka asentaa LAMP (Linux, Apache, MySQL, PHP) RHEL- ja CentOS 7 -käyttöjärjestelmiin
  2. Kuinka asentaa Apache, MySQL/MariaDB ja PHP RHEL- ja CentOS 8:aan

Ota EPEL-varasto käyttöön RHEL:ssä ja CentOS:ssä

Oletusarvoisesti mod_Geoip ei ole saatavilla virallisessa RHEL/CentOS -tietovarastossa, joten meidän on asennettava ja otettava käyttöön kolmannen osapuolen EPEL-arkisto.

yum install epel-release
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [On RHEL 8]

Asenna Mod_GeoIP RHELiin ja CentOS:ään

Kun olet ottanut EPEL-tietovaraston käyttöön järjestelmässäsi, voit asentaa tiedoston mod_geoip suorittamalla seuraavan komennon niiden riippuvuuspakettien kanssa.

yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel

Lataa uusin Geo City and Country -tietokanta

On hyvä idea ladata uusimmat Geo City ja Country Database, jotta pysyt ajan tasalla.

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

Ota Mod_GeoIP käyttöön Apachessa

Kun moduuli on asennettu, avaa ja muokkaa moduulin päämääritystiedostoa komentorivin tekstieditorilla, kuten vi, ja aktivoi moduuli palvelimen laajuisesti alla olevan otteen mukaisesti.

vi /etc/httpd/conf.d/geoip.conf

Aseta rivi GeoIPEnable arvosta Pois Päälle. Varmista myös, että lisäät absoluuttisen polun GeoIP-tietokantatiedostoon.

<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
</IfModule>

Käynnistä Apache-palvelu uudelleen, jotta muutokset näkyvät.

systemctl restart httpd
OR
service httpd restart

GeoIP-moduulin käyttöönottoa palvelimen laajuisesti ei kuitenkaan suositella. Ota GeoIP-moduuli käyttöön vain - tai -lohkoissa, joissa itse suoritat liikenteen uudelleenohjauksen tai eston.

Mod_GeoIP-moduulin testaus

Testaaksemme, että mod_geoip-moduuli toimii oikein Apachen kanssa, meidän on luotava PHP-tiedosto nimeltä testgeoip.php Apache. juurihakemistosta (esim. /var/www/html).

vi /var/www/html/testgeoip.php

Lisää siihen seuraava php-koodin osa.

<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>

Yritä nyt kutsua tiedostoa verkkoselaimella (esim. http://localhost/testgeoip.php). Saat IP-osoitteesi ja maasi tiedot.

Päivitetään GeoIP-tietokantaa

GeoIP-tietokanta päivitetään joka kuukauden alussa. Joten on erittäin tärkeää pitää GeoIP-tietokanta ajan tasalla. Lataa tietokannan uusin versio käyttämällä seuraavaa komentoa.

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

Automaattinen GeoIP-tietokannan päivitys

Olemme kirjoittaneet pienen shell-skriptin, joka lataa automaattisesti uusimman version GeoIP-tietokannasta kuukausittain. Aseta mikä tahansa seuraavista komentosarjasta kohtaan /etc/cron.monthly.

Käsikirjoitus 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
Käsikirjoitus 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

Käyttäjien uudelleenohjaus maan perusteella

Alla oleva esimerkkikoodi ohjaa käyttäjät uudelleen maakoodin perusteella, jonka määritimme AS (Aasia). Tällä tavalla voit ohjata kaikki käyttäjät heidän maakuntakoodinsa perusteella.

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]

Käyttäjien estäminen maan perusteella

Tämä esimerkki estää käyttäjät GeoIP:n asettaman maakoodin perusteella. Alla oleva esimerkki estää käyttäjät AS (Aasia) ja US (Yhdysvallat) maista.

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

Käyttäjien salliminen maan perusteella

Tämä alla oleva esimerkki sallii vain käyttäjät alla mainituista maista.

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

Lisätietoja mod_geoipista ja sen käytöstä on osoitteessa http://www.maxmind.com/app/mod_geoip. Jos sinulla on ongelmia mod_geoip-moduulin määrittämisessä, kerro siitä meille kommenttien kautta ja älä unohda jakaa sitä ystäviesi kanssa.