Bonjour Philippe,
Je trouve que le réflexe sanitaire du moment (quand tu peux) c'est un geofilter 
+ CrowdSec.

J'ai donc suivi tes conseils, cette instance étant susceptible d'être particulièrement exposée.

Et rassemblé mes notes, si ça peut servir à quelqu'un...


GEOFENCING
==========

À la recherche de la base de données perdue en accès libre (merci maxmind)

ip2location.com

Mention à mettre : This software uses the IP2Location LITE database for <a href="https://lite.ip2location.com";>IP geolocation</a>.

Création du compte gratuit

email : **************
password : **************
token obtenu: Js**************7tI

Installation convertisseur ip décimales

https://github.com/ip2location/ip2location-python-csv-converter
pip install ipaddress
pip install ip2location-python-csv-converter

Installation ipset

apt install ipset

Extraction automatisée

Also available here (without token, with less options) : https://download.ip2location.com/lite

https://lite.ip2location.com/database-download

wget "https://www.ip2location.com/download/?token=Js**************tI&file=DB1LITECSV"; -O db1litecsv.zip
unzip db1litecsv.zip
...
  inflating: IP2LOCATION-LITE-DB1.CSV

Le format est en ip décimales et multi-colonnes, il nécessite un retraitement pour être compatible ipset

https://blog.ip2location.com/knowledge-base/convert-ip2location-csv-data-into-ip-ranges-or-cidr

cat IP2LOCATION-LITE-DB1.CSV | grep FR > fr1.csv
ip2location-csv-converter -cidr -replace fr1.csv fr2.csv
awk -F',' '{print $1}' fr2.csv > fr3.csv
awk '{gsub(/"/,"")};1' fr3.csv > fr.cidr

Exemple d'utilisation dans le script de service firewall

# Init french IPv4 ~8000 ranges

ipset -q destroy fr4
ipset create fr4 hash:net family inet
for ip in $(cat ./geoloc/fr.cidr); do ipset add fr4 $ip; done

# Exemple pour un accès SSH

iptables -A INPUT  -i $EXTIF -m set --match-set fr4 src  -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -o $EXTIF -m set --match-set fr4 dst  -m state --state ESTABLISHED     -p tcp --sport 22 -j ACCEPT

Test ON/OFF avec divers VPN internationaux OK


CROWD-SOURCING IP
=================

https://fr.wikipedia.org/wiki/CrowdSec

/!\ le port 8080 doit être libre...

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | bash (ou sudo bash si sudo installé)
apt install crowdsec
apt install crowdsec-firewall-bouncer-iptables

Enrôler l'instance

https://app.crowdsec.net/signup

email : **************
password : **************

Dans le back office, exécuter la ligne proposée sur la nouvelle instance
cscli console enroll cl**************np

systemctl restart crowdsec
systemctl status crowdsec
systemctl status crowdsec-firewall-bouncer.service

Dans le back office, rafraîchir et accepter la nouvelle instance

Il y a des scénarios pour toute une foultitude de cas d'usage, l'expérience utilisateur est limpide, beaucoup de doc et de tools divers, tant que ça reste en free pour nos moyens, c'est topisssime...

Merci pour le tuyau !

--
Stéphane Rivière
Ile d'Oléron - France

---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/

Répondre à