Filtrer les paquets par pays
IPTables permet d'autoriser le SSH uniquement pour les IP françaises :
apt-get install xtables-addons-common xtables-addons-dkms libtext-csv-xs-perl linux-headers-amd64 unzip
mkdir -p /usr/share/xt_geoip
mkdir -p /tmp/geoip
cd /tmp/geoip
/usr/lib/xtables-addons/xt_geoip_dl
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip /tmp/geoip/GeoIP*.csv
Une fois fait, on peut définir une règle de filtrage IPTables avec :
iptables -A INPUT -p tcp -m geoip ! --src-cc FR --dport 22 -j DROP
Cet exemple filtre toutes les connexions vers un serveur SSH qui ne proviennent pas de France.
Les options sont :
--src-cc : Source Country code
--dst-cc : Destination Country code
Les différents codes sont ceux définis dans ISO-3366
Cette fonction est disponible pour iptables (IPv4) ou ip6tables (IPv6).
On peut créer un script de mise à jour automatique :
#!/bin/sh
# Launch by cron.d/updategeoipiptables
# 5 1 * * * root /usr/scripts/updateGeoIPIPtables
if [ ! -x /usr/lib/xtables-addons/xt_geoip_dl ]; then
echo "No /usr/lib/xtables-addons/xt_geoip_dl available"
echo " apt-get install xtables-addons-common"
exit
fi
if [ ! -x /usr/lib/xtables-addons/xt_geoip_build ]; then
echo "No /usr/lib/xtables-addons/xt_geoip_build available"
echo " apt-get install xtables-addons-common"
exit
fi
mkdir -p /tmp/geoip
cd /tmp/geoip
/usr/lib/xtables-addons/xt_geoip_dl && \
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip /tmp/geoip/GeoIP*.csv
rm -rf /tmp/geoip