J'ai avancé un peu sur l'idée de zoc, je suis en train de partir sur la chose suivante:
- Container LXC basé sur une Debian (On peut trouver plus léger sous Alpine, mais pour le moment je fais avec ce que je maitrise le mieux )
- Telechargement des Listes + Triturage pour retirer les commentaires...
- Concatenation des listes
- Exécution de cidr-merger
- Envoi de la liste via SCP en SSH
Avec cette solution, pas besoin de mettre en place un serveur WEB
On transfert notre liste dans le routeur
Du coup il n'y a plus qu'a importer la liste via un script via le scheduler du Mikrotik
Preparation du containerJ'ai utilisé un script de chez TTeck pour créer le container :
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/debian.sh)"
PS : Le container occupe 389Mo sur les 2Go. On peut donc réduire l'image disque lors de la création
Note : J'utilise le mode avancé pour définir moi même certaines options.
Récupération et Installation de cidr-merger :
wget https://github.com/zhanhb/cidr-merger/releases/download/v1.1.3/cidr-merger-linux-amd64
cp cidr-merger-linux-amd64 /usr/bin/cidr-merger
chmod 770 /usr/bin/cidr-merger
Recupération des Listes via un wget - Download via wget
- Suivant les listes on vire les commentaires : a coup de sed
- Pour certaines il faut mettre en forme et extraire l'ip ou le bloc d'ip via awk
- J'applique une 1ere foi cidr-merger
- J'efface le fichier téléchargé
wget -q https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level1.netset && sed '/^#/d' firehol_level1.netset | cidr-merger -eo firehol_level1.merger && rm firehol_level1.netset
wget -q https://www.dshield.org/block.txt && sed '/^#/d' block.txt | awk '{print $1 "-" $2}' | cidr-merger -eo block.merger && rm block.txt
wget -q https://www.spamhaus.org/drop/drop.txt && cat drop.txt | awk '{print $1}' | cidr-merger -eo drop.merger && rm drop.txt
wget -q https://www.spamhaus.org/drop/edrop.txt && cat edrop.txt | awk '{print $1}' | cidr-merger -eo edrop.merger && rm edrop.txt
wget -q https://sslbl.abuse.ch/blacklist/sslipblacklist.txt && sed '/^#/d' sslipblacklist.txt | cidr-merger -eo sslipblacklist.merger && rm sslipblacklist.txt
wget -q https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt && sed '/^#/d' ipblocklist_recommended.txt | cidr-merger -eo ipblocklist_recommended.merger && rm ipblocklist_recommended.txt
wget -q https://raw.githubusercontent.com/ktsaou/blocklist-ipsets/master/firehol_level2.netset && sed '/^#/d' firehol_level2.netset | cidr-merger -eo firehol_level2.netset.merger && rm firehol_level2.netset
wget -q https://iplists.firehol.org/files/iblocklist_malc0de.netset && sed '/^#/d' iblocklist_malc0de.netset | cidr-merger -eo iblocklist_malc0de.netset.merger && rm iblocklist_malc0de.netset
On concatene tous les fichiers puis on applique une derniere fois le scriptcat firehol_level1.merger block.merger drop.merger edrop.merger sslipblacklist.merger ipblocklist_recommended.merger firehol_level2.netset.merger iblocklist_malc0de.netset.merger | cidr-merger -eo myblocklist
Preparation de la partie SSHChez moi je change le port du SSH, sur le routeur :
/ip service set ssh port=XXXX
Pour l'ajout d'un user :
/user add name=sshuserdurouteur password="ZZZZZZZ" group=full
Dans votre container :
Générer une clé RSA :
ssh-keygen -t rsa -b 2048
Copier la clé public ds le routeur, un glisser déposer dans winbox par exemple.
Dans le routeur, importer la clé public sur l'utilisateur :
/user ssh-keys import public-key-file=id_rsa.pub user=sshuserdurouteur
Depuis votre container tester la connexion :
ssh sshuserdurouteur@192.168.10.1 -p leportsshdevotrerouteur
Vous devez atterir dans la console de votre routeur.
Voilà on peut maintenant envoyer notre fichier via la commande scp :
scp -P leportsshdevotrerouteur myblocklist sshuserdurouteur@192.168.10.1:/
Me reste plus qu'a mettre ca dans un script bash puis de faire une tache cron (A Faire prochainement)
Puis d'importer le fichier générer dans le routeur.
N'hésitez pas si vous avez des idées ou des suggestions.