Tuto: Bloquer les requêtes selon le pays

Je continue à expérimenter les location.

J’ai un soucis :

Lorsque je tente de mettre ceci dans le fichier security :

# block the country
location ~* /(sso|admin|login) {
 if ($allowed_country = no) {
  return 444;
 }
}

Voilà le résultat que j’'obtiens avec un pays autorisé en cherchant à me logguer sur une appli (ici Gitea) :

xxx.xxx.xxx.xxx - - [13/Mar/2022:15:49:14 +0100] "GET /gitea/user/login HTTP/2.0" 404 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"
xxx.xxx.xxx.xxx - - [13/Mar/2022:15:49:14 +0100] "GET /favicon.ico HTTP/2.0" 302 154 "https://xxx.noho.st/gitea/user/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"
xxx.xxx.xxx.xxx - - [13/Mar/2022:15:49:14 +0100] "GET /yunohost/sso/?r=aHR0cHM6Ly9jaGF0b24ubm9oby5zdC9mYXZpY29uLmljbw== HTTP/2.0" 200 3120 "https://xxx.noho.st/gitea/user/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"

Une belle erreur 404.

On dirait qu’il y a un appel/une redirection vers le portail du serveur à la fin (/yunohost/sso).

Note : pas de soucis pour me logguer directement sur le serveur (réponse 200) :

xxx.xxx.xxx.xxx - - [13/Mar/2022:15:56:12 +0100] "GET /yunohost/sso/?r=aHR0cHM6Ly9jaGF0b24ubm9oby5zdC8= HTTP/2.0" 200 3022 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"
xxx.xxx.xxx.xxx - - [13/Mar/2022:15:56:12 +0100] "GET /yunohost/sso/assets/js/ynh_portal.js HTTP/2.0" 200 14013 "https://xxx.noho.st/yunohost/sso/?r=aHR0cHM6Ly9jaGF0b24ubm9oby5zdC8=" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"
xxx.xxx.xxx.xxx - - [13/Mar/2022:15:56:12 +0100] "GET /yunohost/sso/assets/themes/xxx/custom_portal.js HTTP/2.0" 200 1436 "https://xxx.noho.st/yunohost/sso/?r=aHR0cHM6Ly9jaGF0b24ubm9oby5zdC8=" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0"

Je continue à creuser (doucement, parce que je suis nul, que j’ai pas trop le temps et que ce n’est pas critique).

Si je reprends l’exemple précédent, à savoir l’accès à l’url https://xxx.noho.st/gitea/user/login en étant dans un pays autorisé, et que regarde dans le fichier de log /var/log/nginx/xxx.noho.st-error.log, j’ai cette ligne qui apparait :


2022/03/20 12:47:11 [error] 8972#8972: *46627 open() "/usr/share/nginx/html/gitea/user/login" failed (2: No such file or directory), client: xxx.xxx.xxx.xxx, server: xxx.noho.st, request: "GET /gitea/user/login HTTP/2.0", host: "xxx.noho.st"

Et effectivement, si je vais fouiller dans /usr/share/nginx/html/ :

root@xxx:~# ls /usr/share/nginx/html
index.html

Effectivement, il n’y a pas de dossier gitea, d’où l’erreur 404 j’imagine.

Ce principe de Géobloquage est super puissant en terme de sécurité du serveur.
Il serait vraiment bénéficiaire à implémenter de base dans yunohost et de coder dans l’interface utilisateur.

J’ai un souci avec les listes d’IP qui sont proposées par mailfud.org, car elles n’incluent pas les adresses des VPN commerciaux.
Donc du coup si j’utilise mon service VPN, et bien je suis rejeté par ngnix.
Vous connaissez une alternative gratuite qui inclue ces IPs ?

Te fais-tu rejeter en utilisant un serveur FR?
S’il s’agit d’une domiciliation à l’étranger, c’est normal d’être bloqué, c’est le principe même de ce hook. Tu peux toujours mettre en whitelist les IP de ton choix si tu veux comme c’est le cas pour les IP locales.

Bonjour,

La sécurité du serveur dépend certainement bien plus de la maîtrise des droits accordés sur les fichiers, des mots de passe robustes, d’un accès sécurisé à SSH par clefs, d’un pare-feu efficace, des mises à jour régulières, de la limitation des applications au seuls besoins réels, de limiter l’ouverture des ports aux seuls qui sont utiles, etc…
Ce hook est plus à voir un peu comme fail2ban qui limite le bruit dans les logs en bloquant les IP indésirables. Ici tous ce qui est étranger est indésirable, mais ça n’exclut pas justement qu’un étranger utilise un VPN français et outrepasse cette géo-restriction qui je le rappelle ne concerne que les accès Web (Nginx).
Même si ça limite la surface d’attaque, ce n’est pas quelque chose de super puissant en terme de sécurité, pas plus que Fail2ban qui ne fait que bannir après coup, ce sont simplement des outils qui aident à protéger mais il ne faut surtout pas perdre de vue que la véritable sécurité se trouve dans les exemples que j’ai cité au début.

Complètement d’accord.
Ma perception est que c’est quand même super à ajouter, car contrairement à Fail2Ban, c’est préventif, et pas après coup.
Bref, c’est vrai que c’est pas la solution ultime, et merci de rappeller les règles d’hygiène des admins.

J’ai ajouté d’autres listes et j’ai consulté l’admin de mailfud.org (un mec super sympa) et maintenant tout marche parfaitement même à travers le VPN.

Très content :slight_smile:

Peux-tu partager ce que tu as fais exactement, ça pourrait intéresser d’autres yuno-users.

Biensur,

J’ai simplement ajouté les adresses suivantes au fichier cron

    wget https://mailfud.org/geoip-legacy/GeoIPASNum.dat.gz
    gunzip -f GeoIPASNum.dat.gz
    wget https://mailfud.org/geoip-legacy/GeoIPASNumv6.dat.gz
    gunzip -f GeoIPASNumv6.dat.gz
    wget https://mailfud.org/geoip-legacy/GeoIPISP.dat.gz
    gunzip -f GeoIPISP.dat.gz
    wget https://mailfud.org/geoip-legacy/GeoIPOrg.dat.gz
    gunzip -f GeoIPOrg.dat.gz
1 Like

Bonjour à tous.

Sujet intéressant …

A la lecture du topic, je me suis demandé comment étai reparti (par pays) les tentatives de connexion sur ma machine, donc :

# Liste des IPs avec leurs pays
for i in `grep "Connection from" /var/log/auth.log |cut -d' ' -f 8 |sort -u` ; do 
    echo "$i" $(whois $i |grep -i -m1 country) >> ip.lst 
done

# Organisation par pays
for i in `awk '{print $3}' ip.lst |sort -u` ; do 
    echo $i
    grep $i ip.lst |awk '{print "  "$1}' |sort -u
done
Résultat
AR
  181.117.245.58
  181.13.51.177
  190.12.120.29
  201.252.248.122
AU
  129.226.146.233
  129.226.166.113
  139.198.118.90
  139.255.87.213
  139.59.103.136
  139.59.26.97
  139.59.3.114
  139.59.39.39
  139.59.7.138
  139.59.90.147
  139.59.90.37
  140.207.100.82
  140.246.118.203
  143.92.58.78
  148.70.195.242
  165.154.75.69
  170.106.167.247
  192.144.216.91
  54.223.170.179
BO
  181.114.109.54
BR
  177.102.140.51
  177.91.80.178
  179.108.181.161
  179.99.213.102
  186.236.170.23
  187.32.84.234
  189.7.25.246
  190.115.208.250
  191.242.188.103
  201.32.178.190
  45.232.75.253
CA
  142.113.99.142
  144.217.4.123
  149.56.102.60
  66.98.127.52
CH
  46.19.139.42
CL
  186.10.245.152
CN
  101.43.89.185
  103.219.32.171
  106.12.144.171
  106.12.219.17
  106.13.120.250
  106.13.184.52
  106.13.41.71
  106.13.50.219
  106.13.74.61
  106.13.82.231
  106.75.27.111
  111.12.63.34
  111.132.7.174
  111.193.230.136
  111.206.120.172
  111.74.11.83
  112.28.209.251
  112.64.33.38
  113.235.125.169
  114.67.100.224
  114.67.114.107
  114.67.126.242
  114.67.250.30
  114.67.89.192
  114.67.96.200
  114.92.197.104
  116.196.82.107
  117.122.211.181
  117.139.234.87
  117.161.75.116
  117.50.173.225
  117.50.176.127
  120.48.17.128
  120.48.25.141
  120.48.2.70
  120.48.8.133
  121.4.118.208
  121.46.24.73
  121.4.83.113
  121.69.135.162
  123.59.120.107
  124.152.76.180
  125.65.82.7
  125.77.20.60
  14.29.241.146
  150.158.15.215
  180.76.121.37
  180.76.149.205
  180.76.149.99
  180.76.151.130
  180.76.172.84
  180.76.235.165
  182.132.24.241
  182.254.140.176
  182.42.126.36
  202.101.186.218
  221.213.129.46
  222.85.136.45
  223.247.180.78
  27.128.233.119
  27.128.236.142
  27.204.6.252
  36.110.228.254
  36.111.187.212
  36.153.118.90
  36.99.45.227
  39.129.9.180
  42.193.162.112
  42.84.34.155
  58.49.127.150
  58.56.183.82
  61.177.172.160
  61.177.172.174
  61.177.172.59
  61.177.172.60
  61.177.172.61
  61.177.172.76
  61.177.172.87
  61.177.172.91
  61.177.173.40
  61.177.173.41
  61.177.173.42
  61.177.173.43
  61.177.173.44
  61.177.173.54
  61.177.173.55
  61.177.173.56
  61.177.173.61
  61.177.173.62
  61.189.43.58
CO
  181.63.248.149
  186.113.41.184
  186.98.40.125
  190.128.118.185
  190.70.164.16
  200.29.116.194
DE
  185.215.164.206
  193.17.30.211
  46.101.104.175
  46.101.225.227
  62.171.152.216
  88.218.227.225
  91.20.149.179
  91.230.111.82
DO
  200.125.169.254
EG
  45.240.88.36
EU
  194.204.194.11
  51.79.255.41
  81.68.123.185
fr
  2001:910:1410::1
FR
  176.140.131.46
  5.196.74.238
  80.14.12.161
  80.67.172.144
  82.65.239.16
  92.152.33.20
GB
  178.62.119.91
  46.101.3.234
GH
  102.223.173.17
  41.242.112.44
GR
  212.205.99.56
HK
  101.32.177.59
  101.32.208.237
  103.150.55.85
  113.28.243.105
  42.200.11.54
  42.200.197.148
  45.125.65.126
ID
  116.197.135.187
  123.231.217.92
  180.250.124.227
  203.130.255.2
  36.80.48.9
IE
  79.97.146.19
IN
  101.33.62.73
  103.155.204.6
  103.246.240.30
  114.143.205.146
  114.69.249.194
  115.112.71.254
  121.200.55.93
  122.166.2.181
  220.225.126.55
IR
  185.186.243.130
  5.200.70.148
IT
  93.148.246.51
JP
  126.77.170.137
KR
  106.240.49.115
  114.108.150.156
  115.88.38.58
  116.39.207.4
  123.212.190.82
  124.137.205.59
  202.79.175.54
LA
  202.137.130.75
LT
  141.98.10.157
  141.98.10.174
  141.98.10.175
  141.98.10.42
  141.98.11.20
  141.98.11.29
  77.241.194.100
MA
  105.73.80.25
MT
  195.158.82.141
MU
  164.88.199.243
  196.216.73.90
  197.227.8.186
MX
  189.180.65.123
  200.52.221.17
MY
  103.215.139.109
NL
  109.107.173.77
  128.199.103.239
  128.199.1.140
  128.199.150.10
  134.17.16.196
  134.17.94.149
  185.28.39.119
  188.166.70.184
  37.139.15.214
  51.158.152.67
  65.21.59.90
  75.119.133.162
NZ
  222.154.150.160
PA
  179.43.142.180
  179.43.142.48
  179.43.142.49
  179.43.142.83
  179.43.167.74
  179.43.168.126
  179.43.175.103
  179.43.183.34
PE
  181.65.45.167
PK
  119.159.234.131
PS
  213.6.130.133
PT
  188.250.58.172
  93.108.242.140
PY
  190.128.230.98
RU
  176.113.115.82
  178.35.169.154
  185.143.173.170
  185.199.8.46
  193.228.108.122
  195.239.243.84
  212.33.250.241
  45.135.232.155
  45.67.34.253
  5.3.87.134
  81.200.212.13
  83.229.149.191
  92.255.195.59
  92.255.85.135
  92.255.85.190
  95.66.135.129
SG
  178.128.25.31
  178.128.31.9
  188.166.180.17
  188.166.188.120
  45.13.132.157
TH
  101.51.225.88
  122.155.169.49
TN
  196.203.207.165
TR
  213.155.103.147
  89.252.140.21
TW
  220.135.7.122
UA
  80.91.167.71
US
  104.131.102.169
  104.131.180.54
  104.152.52.112
  104.236.52.94
  104.248.117.154
  104.248.119.94
  104.248.168.145
  13.125.136.111
  13.229.224.184
  134.122.126.197
  134.209.102.116
  134.209.147.174
  134.209.179.100
  134.209.228.253
  134.209.84.124
  134.209.91.138
  137.184.184.156
  137.184.225.58
  138.197.184.178
  138.68.10.182
  138.68.21.125
  138.68.58.138
  13.90.36.195
  140.238.94.160
  142.93.178.95
  142.93.203.254
  142.93.65.9
  142.93.79.192
  143.110.241.136
  143.198.133.234
  143.198.135.140
  143.198.157.77
  143.198.49.250
  143.198.66.0
  143.244.128.72
  143.244.158.201
  143.244.175.225
  144.126.217.16
  147.182.235.17
  15.165.236.44
  157.230.233.185
  157.230.26.137
  157.230.35.9
  157.245.157.93
  159.203.179.230
  159.203.97.7
  159.223.55.246
  159.223.65.152
  159.65.150.151
  159.65.205.178
  161.35.26.171
  162.142.125.222
  162.244.77.140
  164.90.210.8
  164.92.240.227
  165.227.142.62
  165.227.228.72
  165.227.239.76
  165.22.99.216
  165.232.131.8
  167.248.133.45
  167.71.207.160
  167.71.210.244
  167.71.224.92
  167.94.145.60
  167.94.146.58
  167.99.61.176
  167.99.82.172
  172.104.175.18
  172.247.14.114
  174.81.8.120
  18.166.50.160
  185.165.190.17
  192.241.141.118
  192.241.193.87
  192.241.220.192
  192.241.223.27
  192.241.252.87
  192.81.218.108
  198.12.255.244
  198.199.116.39
  198.23.233.28
  2001:470:1:c84::19
  2001:470:1:c84::21
  20.223.168.223
  20.226.1.51
  20.228.209.161
  204.48.22.232
  20.49.201.49
  205.185.117.82
  20.52.232.156
  206.189.151.151
  206.189.192.55
  206.189.226.38
  207.244.241.72
  208.109.33.133
  20.87.73.140
  20.88.121.148
  209.141.40.19
  209.97.162.138
  23.224.111.206
  23.225.194.32
  35.237.244.47
  40.76.95.234
  44.202.115.25
  45.61.184.111
  47.45.19.148
  50.73.185.124
  52.173.86.248
  54.206.74.107
  64.227.165.108
  64.227.190.66
  64.62.197.152
  64.62.197.32
  66.110.114.178
  67.205.156.45
  67.207.94.180
  67.63.94.101
  68.183.216.91
  68.183.77.86
  68.183.81.38
  68.183.88.186
  68.183.97.225
  69.76.9.246
  73.191.114.216
UY
  138.94.75.17
  143.208.134.84
  148.202.1.200
  148.235.82.68
  161.132.98.155
VE
  190.202.124.93
vn
  222.252.243.104
VN
  103.162.98.59
  103.170.246.34
  103.35.65.169
  116.105.167.63
  116.105.212.31
  116.105.216.128
  116.110.3.253
  116.110.55.136
  118.69.82.100
  123.30.149.76
  123.30.157.239
  125.212.251.45
  14.225.255.14
  171.244.139.236
  27.71.233.66
  45.119.81.236
ZA
  163.197.34.207
ZZ
  49.12.188.106

Voilà, cela donne un bon début de réponse a mon interrogation …

Du coup, une petite question :
Pourquoi ne pas bloquer les plages d’adresse IP attribuées à certain pays, directement avec iptables ?
Parce qu’avec la liste des IPs Chine (par exemple) une boucle for avec iptables -I INPUT -s "$IP" -j DROP -v suffi à bloquer les adresses du pays.

Qu’en pensez-vous ?

1 Like

@jarod5001 l’évoquait déjà:

Je n’étais pas parti sur cette piste pour 2 raisons:

1-Je ne suis pas forcément à l’aise avec iptables, disons que je ne m’y suis jamais intéressé, et je voulais quelque chose de souple pour ajouter et retirer facilement un pays occasionnellement avec simplement un code geo à ajouter. Mais c’est vrai que c’est certainement adaptable ce principe avec iptables.

2-Je ne veux pas forcément bloquer tous l’accès car j’utilise le mail. Je suppose (sans certitude car non testé mais ça semble probable) que bloquer un pays avec iptables empêcherait aux serveurs mails situés dans ce pays d’envoyer du mail. Seul un blocage de l’accès Web me parait dans ce cas suffisant d’autant plus que je n’utilise SSH qu’en local.

3- Plutôt qu’une boucle for, l’utilisation du module geoip pour iptables me parait plus adapté. Autant utiliser ce qui existe déjà. Par contre il est possible qu’il faille utiliser une autre source que Maxmind comme je l’ai fais pour ce hook car il me semble que les listes Maxmind ne sont plus en libre accès.

Je reste cependant intéressé par un hook qui utiliserait iptables et modifiable facilement avec le code geo. Selon les pays, soit on utilise iptables et on bloque tout, soit on utilise le hook de Nginx et on restreint seulement l’accès Web. Les 2 couplés permettrait encore plus de souplesse dans la geo-restriction.

Je n’ai pas le temps de me pencher là-dessus. Voici une autre page que j’ai trouvé qui traite du sujet si ça te dit de faire le hook:
https://docs.rackspace.com/support/how-to/block-ip-range-from-countries-with-geoip-and-iptables/

@kit : As-tu avancé dans ta recherche?

2 Likes

@metyun , non, je ne comprend pas pourquoi ça fait ça. Je soupçonne une redirection de yunohost qui déconne.

Y a des spécialistes nginx dans le coin ?

Edit : Il y a peut-être un truc à creuser du côté de try_files $uri

@metyun, merci pour cette réponse.

Je ne suis pas un expert d’iptables, j’ai seulement quelques bases. (Je ne connais pas du tout le fonctionnement des modules)

Avec iptables il est possible de faire des règles de traitement des paquets relativement fines.
Par exemple si je souhaite que les paquets en provenance de la plage d’adresse 1.0.0.0/24, qui utilise le protocole tcp et à destination du port 22 ne soient pas traité :

# Ajoute la régle
iptables -I INPUT -s 1.0.0.0/24 -p tcp --dport 22 -j DROP

Attention : Si on exécute deux fois cette commande, cela ajoute deux fois la même règle.

Détails :
  • -I : Insert dans la liste ici INPUT
  • -s : Source du paquet ip ou cidr ici cidr
  • -p : Protocole tcp, udp, etc ici tcp car ssh, port 22, utilise du tcp
  • –dport : Port de destination ici 22
  • -j : Traitement du paquet qui correspond aux règles de filtrage ici DROP juste on jette le paquet
# Supprime la régle
iptables -D INPUT -s 1.0.0.0/24 -p tcp --dport 22 -j DROP

Je me suis amusé à faire un script pour créer ou supprimer les règles de blocage par pays.
Attention : ce script ne devrait pas être utilisé si vous ne comprenez pas ce qu’il fait (comme tous les scripts que l’on trouve au hasard des forums) et surement pas sur une machine en production :wink:

De plus, comme @ljf l’a déjà dit sur le post 21 :

Script
#!/bin/bash -e

# Bloque/unbloque les requêtes selon le pays et le port avec iptables

# 2022-04-30 creation

action=$1
pays=$2
port=$3

# Recup les ips du pays
function get_ips_pays {
    pays=$1
    url="http://www.ipdeny.com/ipblocks/data/aggregated/${pays,,}-aggregated.zone"
    dest=/tmp/${pays,,}.zone
    wget -q $url -O $dest
    if [ $? == 0 ] ; then
        pays=$dest 
    else
        echo "ERR: get $url"
        exit 1
    fi
}

# Deux action possible (block/unblock)
function check_action {
    action=$1
    if [ ${action,,} == "block" ] ; then
        action=" -I INPUT "
    elif [ ${action,,} == "unblock" ] ; then
        action=" -D INPUT "
    else
        echo "ERR: action is block or unblock"
        exit 1
    fi
}

# Verif le port 
function check_port {
    port=$1
    if [ $port -ge 1 ] && [ $port -le 65535 ] ; then
        port=" --dport $port "
    else
        echo "ERR: port in range 1-65535"
        exit 1
    fi
}

function help {
    echo "geo_block.sh ACTION PAYS PORT"
    echo
    echo " ACTION    block or unblock"
    echo " PAYS      code pays (cn, au, fr, ...)"
    echo " PORT      number port destination in 1-65535"
    echo
    echo "example: geo_block.sh block cn 22"
}

# main
if [ "$EUID" -ne 0 ] ; then 
    echo "Please run as root"
fi
if [ $# != 3 ] ; then
    help
else
    check_action "$action"
    check_port "$port"
    get_ips_pays "$pays"
   
    for ip in $(cat $pays) ; do
        iptables $action -s $ip -p tcp $port -j DROP
    done
fi

exit 0

Exemple d’utilisation :

  • bash geo_block.sh block cn 22 → bloque les ips de chine pour le port 22
  • bash geo_block.sh unblock cn 22 → débloque les ips de chine pour le port 22

J’ai fait des tests sur une VM de test cela fonctionne, mais il y a encore des point à améliorer par exemple pouvoir spécifier plusieurs ports à bloquer.

Note : Sur ma machine de test le unblock était relativement long…

Si vous avez de retour, avis ou suggestion à faire je suis preneur

1 Like

Hello
Il y a quelque chose que je ne comprends pas dans les scripts:
Le script /etc/cron.weekly/Geoipudapte télécharge la liste des IPv4 dans GeoIP.dat et des IPv6 dans GeoIPv6.dat.
Par contre, dans ce qu’on map dans country.conf, on ne fait référence qu’à GeoIP.dat:


# GeoIP databases
geoip_country /usr/share/GeoIP/GeoIP.dat;

map $geoip_country_code $allowed_country {
default no;
FR yes;
...

Nul part il n’est fait référence à GeoIPv6.dat : donc comment fait-il pour filtrer ou non les adresses IPv6?

Je pose la question car soudainement depuis cet ap-m, je me fait filtrer depuis une adresse ipv6 (pourtant en france) et j’ai donc du désactiver le hook pour pouvoir continuer à travailler.

Bon, ben j’aurais passer 10 minutes à chercher avant de poser la question j’aurais gagner du temps: d’après ce topic, GeopIPv6.dat contient les IPv6 ET les IPv4.
Il suffit donc de modifier dans le hook

echo "# GeoIP databases
geoip_country /usr/share/GeoIP/GeoIP.dat;

par

echo "# GeoIP databases
geoip_country /usr/share/GeoIP/GeoIPv6.dat;

et de régénérer et tout fonctionne de nouveau!!

Bonsoir @Krakinou ,

j’ai également passé 5-10 min à faire une recherche après avoir vu ta question et c’est bien ça, GeoIPv6.dat contient les ipv6 et ipv4.
J’ai fais l’erreur tout simplement car mon serveur tourne en ipv4 uniquement et j’ai adapté rapidement le script…avec quelques oublis malheureusement. Si j’avais passé 5 min. à vérifier avant de poster je t’aurais évité une prise de tête.

Imho tu devrais monter un dépôt git pour le projet.

On peut aussi virer le dl de la partie IPv4.

Edith : Test ok en utilisant uniquement la base IPv6 : j’ai réussi à me bloquer avec mon adresse IPv4.

Pas faux mais pour ça il faut connaître git ou tout du moins avoir la motivation pour l’apprendre… ce que je n’ai pas en ce moment. Ce script reste un partage d’une utilisation personnelle, si ça peut servir tant mieux et encore désolé pour les erreurs.

Je mettrai à jour demain ou dans la semaine en postant une version ipv4 et ipv6 car si j’ai bien compris, les ipv4 sont mappées en ipv6 dans le second fichier et il faut bien le fichier ipv4 si le serveur est uniquement en ipv4. Corrigez moi si ce n’était pas le cas.

Je suppose que la majorité des serveurs sont également en ipv6 de nos jours. Pour la petite histoire, J’avais désactivé l’ipv6 sur le serveur à l’origine pour permettre l’acceptabilité des mails et je n’ai jamais modifié depuis. Désormais ce n’est plus nécessaire, il existe le setting smtp.allow_ipv6 dans yunohost pour désactiver l’ipv6 uniquement pour les mails.

Pour moi, c’est à peu près ça sauf que le fait d’être en IPv6 est piloté par le client plutot que par le serveur (dans mon cas, je l’ai désactivé dans Firefox par exemple)
Je ne pense pas qu’il y ait besoin de 2 versions car le fichier GeoIPv6.dat couvre aussi bien les cas d’usage IPv4 que les cas d’usage IPv6 de ce que j’ai compris : maintenant il faudrait tester en vrai, si tu continue de pouvoir te connecter à ton serveur avec tes réglages IPv4 en utilisant le fichier GeoIPv6.dat, c’est que c’est bon.

Tiens j’ai un truc un peu vilain qui vient de se passer : je scanne le fichier IPv6, et je me fais dégager avec une 444 alors que je suis en IPv4 (j’ai vérifié, mon IP est bien dans un pays autorisé).

Si je change dans country.conf pour revenir à GeoIP.dat au lieu de GeoIPv6.dat ça marche à nouveau.

Du coup êtes vous bien certains que la v6 inclus les IP v4 ?

Si non, ne faudrait-il pas agréger les deux fichiers ?