Filtrage GEOIP

Filtrage GEOIP

Un petit problème de scan et de tentatives de connexion sur un des nos serveurs m’a fait chercher une méthode pour, dans mon cas, n’autoriser l’imaps uniquement pour des ips françaises.

Solution

J’ai trouvé http://xtables-addons.sourceforge.net/, qui permet d’installer une extension geoip pour iptables.

Installation

Mon serveur étant sous centos7, je n’ai pas trouvé de rpm pour le dernier kernel 3.10.0-862.3.3 à l’heure ou j’écris ses lignes.
Il faut donc recompiler.

Dépendance

yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

Build it !

wget http://ufpr.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.14.tar.xz
tar -xvf xtables-addons-2.14.tar.xz
cd xtables-addons-2.14
./configure
sed -i '/xt_TARPIT.o$/s/^/#/' extensions/Kbuild
make && make install

Placer ce petit script dans un crontab pour qu’il s’exécute 1 fois par semaine.
Il récupère le fichier GEOIP et construit ses tables pour xtables-addons.

#!/bin/bash
set -euo pipefail

set +e
set -e

if [ ! -d /usr/share/xt_geoip ]; then
        mkdir /usr/share/xt_geoip
fi

geotmpdir=$(mktemp -d)
csv_files="${geotmpdir}/GeoIPCountryWhois.csv ${geotmpdir}/GeoIPv6.csv"
OLDPWD="${PWD}"
cd "${geotmpdir}"
#/usr/lib/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_dl

#/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip ${csv_files}
/usr/local/libexec/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip ${csv_files}


cd "${OLDPWD}"
rm -r "${geotmpdir}"
exit 0

Utilisation

-A INPUT -m geoip  --src-cc FR -m tcp -p tcp --dport 993 -j ACCEPT