Prérequis:

1 serveur APACHE2 avec DEDIAN 10, 11 ou 12 installé
PHP8 installé
1 site web installé

Connectez vous en SSH avec ROOT

1) Installer dépendance:

Installer la dépendance suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
apt-get update
apt-get install apache2-dev
2) Installer la librairie MaxMind:

Placez vous dans TMP, télécharger, décompresser et aller dans le répertoire:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
cd /tmp
wget https://github.com/maxmind/libmaxminddb/releases/download/1.9.1/libmaxminddb-1.9.1.tar.gz
tar xzvf libmaxminddb-1.9.1.tar.gz
cd libmaxminddb-1.9.1/
Installer la librairie avec les 4 commandes suivantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
./configure
make clean
make
make install
3) Installer GeoipUpdate:

Placez vous dans TMP, télécharger:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cd /tmp
wget https://github.com/maxmind/geoipupdate/releases/download/v6.1.0/geoipupdate_6.1.0_linux_amd64.deb
Installer GeoipUpdate avec la commande suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
dpkg -i geoipupdate_6.1.0_linux_amd64.deb

4) Créer un compte MaxMind:

Créer votre compte:
https://www.maxmind.com/

Se rendre dans: Account --> Manage License Keys
Puis cliquer sur: Generate new license key
Sauvegarder AccountID et LicenseKey

5) Configurer GeoIP.conf:

Revenir à la racine de ROOT, éditer le fichier de configuration

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cd
sudo nano /etc/GeoIP.conf
Indiquer votre AccountID, LicenseKey et les EditionIDs suivantes:

AccountID votre_id
LicenseKey votre_licence_mmk
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
6) Mettre à jour les bases de données:

7) Installer le module mod_maxminddb:

Placez vous dans TMP, télécharger, décompresser et aller dans le répertoire:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
cd /tmp
wget https://github.com/maxmind/mod_maxminddb/releases/download/1.2.0/mod_maxminddb-1.2.0.tar.gz
tar xzvf mod_maxminddb-1.2.0.tar.gz
cd mod_maxminddb-1.2.0
Installer le module avec les 4 commandes suivantes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
./configure
make clean
make
make install
8) Configurer httpd.conf:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cd
nano /var/www/vhosts/system/nom_du_repertoire_de_votre_site_web/conf/httpd.conf
Rajouter les lignes suivantes à votre VirtualHost

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# GEOIP2 MaxMind
<IfModule maxminddb_module>
MaxMindDBEnable On
 
MaxMindDBFile                ASN_DB                    /usr/share/GeoIP/GeoLite2-ASN.mmdb
MaxMindDBFile                CITY_DB                   /usr/share/GeoIP/GeoLite2-City.mmdb
 
MaxMindDBEnv                 GEOIP_ASN                 ASN_DB/autonomous_system_number
MaxMindDBEnv                 GEOIP_ASORG               ASN_DB/autonomous_system_organization
MaxMindDBNetworkEnv          CITY_DB                   GEOIP_NETWORK
 
MaxMindDBEnv                 GEOIP_CONTINENT_CODE      CITY_DB/continent/code
MaxMindDBEnv                 GEOIP_CONTINENT_NAME      CITY_DB/continent/names/en
 
MaxMindDBEnv                 GEOIP_COUNTRY_CODE        CITY_DB/country/iso_code
MaxMindDBEnv                 GEOIP_COUNTRY_NAME        CITY_DB/country/names/en
 
MaxMindDBEnv                 GEOIP_REGION_CODE         CITY_DB/subdivisions/0/iso_code
MaxMindDBEnv                 GEOIP_REGION_NAME         CITY_DB/subdivisions/0/names/en
 
MaxMindDBEnv                 GEOIP_CITY_NAME           CITY_DB/city/names/en
MaxMindDBEnv                 GEOIP_CITY_POSTAL_CODE    CITY_DB/postal/code
 
MaxMindDBEnv                 GEOIP_LONGITUDE           CITY_DB/location/longitude
MaxMindDBEnv                 GEOIP_LATITUDE            CITY_DB/location/latitude
</IfModule>
9) Redémarrer APACHE2:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
systemctl restart apache2
10) Test:

A la racine de votre site, créer la page test.php

Indiquer ce code pour voir les variables que vous pourrez utiliser:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?php
foreach($_SERVER as $key => $value)
echo '$_SERVER['.$key.']='.$value .'<br />';
?>
Résultat:

$_SERVER[GEOIP_NETWORK]=2a01:cb08:980::/41
$_SERVER[GEOIP_REGION_NAME]=Île-de-France
$_SERVER[GEOIP_COUNTRY_NAME]=France
$_SERVER[GEOIP_CONTINENT_NAME]=Europe
$_SERVER[GEOIP_REGION_CODE]=IDF
$_SERVER[GEOIP_COUNTRY_CODE]=FR
$_SERVER[GEOIP_LATITUDE]=48.84950
$_SERVER[GEOIP_CONTINENT_CODE]=EU
$_SERVER[GEOIP_LONGITUDE]=2.63250
$_SERVER[GEOIP_CITY_NAME]=Noisiel
$_SERVER[GEOIP_CITY_POSTAL_CODE]=77186
$_SERVER[GEOIP_ASN]=3215
$_SERVER[GEOIP_ASORG]=Orange
$_SERVER[MMDB_INFO]=result found
$_SERVER[MMDB_ADDR]=2a04:cb08:97d:5a00:d008:4dee:6h04:8by5
10) Exemples:

Editer votre fichier .htaccess

Acceptez les IP FR,BE,CH,DE,IT,NL et ES et rediriger les autres visiteurs vers un répertoire de votre site

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(FR|BE|CH|DE|IT|NL|ES)$
RewriteRule ^$ /monrépertoire/ [L]
</IfModule>
Acceptez les IP FR,BE,CH,DE,IT,NL et ES et rediriger les autres visiteurs vers une page de votre site

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(FR|BE|CH|DE|IT|NL|ES)$
RewriteRule ^$ /mapage.php [L]
</IfModule>
Refuser les IP FR,BE,CH,DE,IT,NL et ES qui sont redirigées vers un répertoire de votre site, les autres visiteurs sont acceptés

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(FR|BE|CH|DE|IT|NL|ES)$
RewriteRule ^$ /monrépertoire/ [L]
</IfModule>
Refuser les IP FR,BE,CH,DE,IT,NL et ES qui sont redirigées vers une page de votre site, les autres visiteurs sont acceptés

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(FR|BE|CH|DE|IT|NL|ES)$
RewriteRule ^$ /mapage.php [L]
</IfModule>