Un ingénieur système linux addict depuis 1998

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/local/libexec/xtables-addons/xt_geoip_dl
/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

Bye Bye