Kif Tinstalla Mod_GeoIP għal Apache f'RHEL u CentOS


Mod_GeoIP huwa modulu Apache li jista 'jintuża biex idaħħal il-lokazzjoni ġeografika tal-indirizz IP tal-viżitatur fis-server tal-web Apache. Dan il-modulu jippermettilek tiddetermina l-pajjiż, l-organizzazzjoni u l-post tal-viżitatur. Huwa speċjalment utli għal Geo Ad Serving, Target Content, Spam Fighting, Fraud Detection, Redirecting/Blocking viżitaturi bbażati fuq pajjiżhom u ħafna aktar.

Il-modulu GeoIP jippermetti lill-amministraturi tas-sistema biex jidderieġu mill-ġdid jew jimblokkaw it-traffiku tal-web skont il-lokazzjoni ġeografika tal-klijent. Il-lokazzjoni ġeografika titgħallem permezz tal-indirizz IP tal-klijent.

Mod_GeoIP għandu żewġ verżjonijiet differenti waħda hija Ħielsa u oħra hija Mħallsa u tuża databases MaxMind GeoIP/GeoCity.

  1. Verżjoni Ħieles: Fil-verżjoni Ħieles, id-databases ta' Geo City u Country huma disponibbli bi preċiżjoni ta' 99.5%.
  2. Verżjoni Mħallsa: Fil-verżjoni Mħallsa, int se tikseb iż-żewġ databases bi preċiżjoni ta' 99.8% b'xi dettalji aktar avvanzati dwar l-indirizz IP.

Jekk tixtieq tiċċekkja l-aktar differenzi bejn il-verżjoni Ħieles u Mħallsa, jekk jogħġbok żur Maxmind.com.

Dan l-artikolu jispjega kif twaqqaf u tinstalla l-modulu Mod_GeoIP għal Apache f'RHEL u CentOS billi tuża r-repożitorju EPEL bl-utilità tal-maniġer tal-pakketti YUM.

Nassumu li diġà għandek is-sistema RHEL u CentOS li taħdem b'setup ta 'LAMP (Linux, Apache, MySQL, u PHP) li taħdem. Jekk le, allura aqra l-artikoli tagħna fejn wrejna l-installazzjoni taż-żewġ sistemi operattivi b'LAMP.

  1. Installazzjoni ta' CentOS 7 Minimal.
  2. Installazzjoni ta' CentOS 8 Minimal.

  1. Kif Tinstalla LAMP (Linux, Apache, MySQL, PHP) fuq RHEL u CentOS 7
  2. Kif tinstalla Apache, MySQL/MariaDB, u PHP fuq RHEL u CentOS 8

B'mod awtomatiku mod_Geoip mhuwiex disponibbli taħt ir-repożitorju uffiċjali ta 'RHEL/CentOS, għalhekk għandna bżonn ninstallaw u nippermettu repożitorju EPEL ta' parti terza.

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

Ladarba tkun attivat ir-repożitorju EPEL fis-sistema tiegħek, tista 'sempliċement tinstalla mod_geoip billi tmexxi l-kmand li ġej bil-pakketti tad-dipendenza tagħhom.

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

Hija idea tajba li tniżżel l-aħħar Database ta’ Geo City u Country biex tibqa’ aġġornata.

# 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

Wara li l-modulu jkun ġie installat, iftaħ u editja l-fajl tal-konfigurazzjoni prinċipali tal-modulu, b'editur tat-test tal-linja tal-kmand bħal vi, u attiva s-server tal-modulu kollu, kif muri fis-silta t'hawn taħt.

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

Issettja l-linja GeoIPEnable minn Mitfi għal Mixgħul. Ukoll, kun żgur li żżid il-mogħdija assoluta mal-fajl tad-database GeoIP.

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

Ibda mill-ġdid is-servizz Apache biex jirrifletti l-bidliet.

# systemctl restart httpd
OR
# service httpd restart

Madankollu, mhux rakkomandat li tixgħel is-server tal-modulu GeoIP kollu. Għandek tattiva l-modulu GeoIP biss fi blokki jew fejn fil-fatt twettaq ir-ridirezzjoni jew blokk tat-traffiku.

Biex tittestja l-mod_geoip modulu qed jaħdem b'mod korrett ma 'Apache, għandna bżonn noħolqu fajl PHP imsejjaħ testgeoip.php taħt id-direttorju tal-għeruq Apache (eż. /var/www/html).

# vi /var/www/html/testgeoip.php

Daħħal il-biċċa kodiċi PHP li ġejja magħha.

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

Issa, ipprova ċċempel il-fajl billi tuża web browser (eż. http://localhost/testgeoip.php). Se tirċievi l-indirizz IP tiegħek u d-dettalji tal-Pajjiż.

Id-database GeoIP tiġi aġġornata fil-bidu ta' kull xahar. Għalhekk, huwa importanti ħafna li d-database GeoIP tinżamm aġġornata. Biex tniżżel l-aħħar verżjoni tad-database uża l-kmand li ġej.

# 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

Aħna ktibna script shell żgħir li awtomatikament tniżżel l-aħħar verżjoni tad-database GeoIP kull xahar. Poġġi xi waħda mill-iskrittura li ġejja taħt /etc/cron.monthly.

# 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
#!/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

Il-kodiċi ta' eżempju ta' hawn taħt se jidderieġi mill-ġdid lill-utenti abbażi tal-kodiċi tal-pajjiż li ssettjajna għal AS (Asja). B'dan il-mod tista' tidderieġi mill-ġdid kwalunkwe utent ibbażat fuq il-kodiċi tal-kontea tagħhom.

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]

Dan l-eżempju se jimblokka l-utenti abbażi tal-kodiċi tal-pajjiż li jistabbilixxi GeoIP. L-eżempju hawn taħt se jimblokka utenti minn pajjiżi AS (Asja) u US (Istati Uniti).

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

Dan l-eżempju hawn taħt se jippermetti biss utenti mill-pajjiżi msemmija hawn taħt.

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

Għal aktar informazzjoni dwar mod_geoip u l-użu tiegħu tista 'tinstab fuq http://www.maxmind.com/app/mod_geoip. Jekk qed ikollok xi problemi biex twaqqaf modulu mod_geoip, jekk jogħġbok għarrafna permezz tal-kummenti u jekk jogħġbok tinsiex taqsamha mal-ħbieb tiegħek.