Sauf que l'api CrowdSec ne fonctionne pas en ipv6 => apt purge
Le 25/01/2024 à 17:17, Stéphane Rivière a écrit :
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 !
--
Daniel Huhardeaux
+33.368460...@tootai.net sip:8...@sip.tootai.net
+41.445532...@swiss-itech.ch tootaiNET
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/