Superthx PostĂ©(e) le 10 juillet 2019 PostĂ©(e) le 10 juillet 2019 (modifiĂ©) Salut! J'en avais assez que Synology ne propose pas un soft dans DSM ou SRM pour automatiser le blocages d'adresse IP depuis une liste. Car en effet si on veut blacklister une ip pour Ă©viter de se faire "pirater" ou se faire sniffer son ip il vaut mieux en avoir une. Mais malheureusement Synology ne propose que de uploader son fichier txt et il faut le faire selon son envie de mettre a jour ses ip. Donc avec ce script on va juste mettre Ă jour les ip depuis une liste sur internet. Pour l'instant mon choix se porte sur blocklist.de. Si vous en avez d'autres merci de les poster. Pour DSM : Allez dans "Panneau de configuration" Puis "Planificateur de tĂąches" Cliquez sur "CrĂ©er" SĂ©lectionnez "TĂąche planifiĂ©e" et l'option "Script dĂ©fini par l'utilisateur" Vous aurez la fenĂȘtre "CrĂ©er une tĂąche", dans "GĂ©nĂ©ral" mettez ceci. TĂąche - BLACKLIST Utilisateur - SĂ©lectionnez "root" Cochez "Activer" Dans "ParamĂštres de tĂąche" dans la case sous "Script dĂ©fini par l'utilisateur" Mettez ceci : #!/bin/bash # Liste de www.blocklist.de # Liste Choix: {all} {ssh} {mail} {apache} {imap} {ftp} {sip} {bots} {strongips} {ircbot} {bruteforcelogin} LISTE_BLOCKLIST="all" # Effacer IP apres x jours ou bien utiliser 0 pour blocage permanent DELETE_IP_AFTER="30" # Montre le temps a la fin du script; 0=non 1=oui SHOW_TIME="1" UNIXTIME=`date +%s` UNIXTIME_DELETE_IP=`date -d "+$DELETE_IP_AFTER days" +%s` wget -q "https://lists.blocklist.de/lists/$LISTE_BLOCKLIST.txt" -O /tmp/blocklist.txt cat "/tmp/blocklist.txt" | while read BLOCKED_IP do # Verifier si IP valide VALID_IPv4=`echo "$BLOCKED_IP" | grep -Eo "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" | wc -l` if [[ $VALID_IPv4 -eq 1 ]]; then # Convertir IPv4 en IPv6 IPv4=`echo $BLOCKED_IP | sed 's/\./ /g'` IPv6=`printf "0000:0000:0000:0000:0000:FFFF:%02X%02X:%02X%02X" $IPv4` CHECK_IF_EXISTS=`sqlite3 /etc/synoautoblock.db "SELECT DENY FROM AutoBlockIP WHERE IP = '$BLOCKED_IP'" | wc -l` if [[ $CHECK_IF_EXISTS -lt 1 ]]; then INSERT=`sqlite3 /etc/synoautoblock.db "INSERT INTO AutoBlockIP VALUES ('$BLOCKED_IP','$UNIXTIME','$UNIXTIME_DELETE_IP',' 1','$IPv6','0','')"` echo "IP ajouter! --> $BLOCKED_IP" else echo "IP existante! --> $BLOCKED_IP" fi fi done if [[ $SHOW_TIME -eq 1 ]]; then END=`date +%s` RUNTIME=$((END-UNIXTIME)) echo "Fini apres $RUNTIME Secondes" fi exit 0 Au debut je vous conseil de lancer le script sans programmer le temps. Car cela met un certains temps au premier lancement (comptez plus d'une heure). La premiĂšre exĂ©cution fini, vous pouvez programmer la frĂ©quence du lancement du script. Pour cela allez dans Programmer laisser "ExĂ©cuter les jours suivants" sur "Quotidienne" par exemple. En gĂ©nĂ©ral la mise Ă jour le la DataBase dure beaucoup moins heureusement.  Pour SMR : Il va falloir entrer en SSH comme root, ajouter le script dans un endroit de votre choix et ajouter une ligne a crontab. Le script est lĂ©gĂšrement different car la version de date est diffĂ©rente que celle sous DSM. Moi j'ai choisi de mettre tous mes scripts dans la carte sd de mon RT2600ac. Si vous voulez faire comme moi, entrer en SSH avec putty en tant que root et faite ceci : mkdir /volumeUSB1/usbshare1-1/scripts chmod 755 /volumeUSB1/usbshare1-1/scripts mkdir /volumeUSB1/usbshare1-1/scripts/tmp chmod 755 /volumeUSB1/usbshare1-1/scripts vous aurez un dossier scripts et un sous dossier tmp. ensuite crĂ©ons le fichier ip_block.sh vi /volumeUSB1/usbshare1-1/scripts/ip_block.sh tapez sur "i" pour insĂ©rer le script suivant #!/bin/sh # Liste de www.blocklist.de # Liste Choix: {all} {ssh} {mail} {apache} {imap} {ftp} {sip} {bots} {strongips} {ircbot} {bruteforcelogin} LISTE_BLOCKLIST="all" # Montre le temps a la fin du script; 0=non 1=oui SHOW_TIME="1" UNIXTIME=`date +%s` UNIXTIME_DELETE_IP="$((`busybox date +%s`+2592000))" wget -q "https://lists.blocklist.de/lists/$LISTE_BLOCKLIST.txt" -O /volumeUSB1/usbshare1-1/scripts/tmp/blocklist.txt cat "/volumeUSB1/usbshare1-1/scripts/tmp/blocklist.txt" | while read BLOCKED_IP do # Verifier si IP valide VALID_IPv4=`echo "$BLOCKED_IP" | grep -Eo "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" | wc -l` if [[ $VALID_IPv4 -eq 1 ]]; then # Convertir IPv4 en IPv6 IPv4=`echo $BLOCKED_IP | sed 's/\./ /g'` IPv6=`printf "0000:0000:0000:0000:0000:FFFF:%02X%02X:%02X%02X" $IPv4` CHECK_IF_EXISTS=`sqlite3 /etc/synoautoblock.db "SELECT DENY FROM AutoBlockIP WHERE IP = '$BLOCKED_IP'" | wc -l` if [[ $CHECK_IF_EXISTS -lt 1 ]]; then INSERT=`sqlite3 /etc/synoautoblock.db "INSERT INTO AutoBlockIP VALUES ('$BLOCKED_IP','$UNIXTIME','$UNIXTIME_DELETE_IP',' 1','$IPv6')"` echo "IP ajouter! --> $BLOCKED_IP" else echo "IP existante! --> $BLOCKED_IP" fi fi done if [[ $SHOW_TIME -eq 1 ]]; then END=`date +%s` RUNTIME=$((END-UNIXTIME)) echo "Fini apres $RUNTIME Secondes" fi exit 0 Attention cette fois : par exemple pour 30 jours c'est 2592000 secondes Maintenant on va crĂ©er une ligne dans crontab pour automatiser le tout. Ici toutes les heures. vï»żi /etc/crontabï»żï»ż tapez sur "i" pour insĂ©rer du text et allez sur la derniĂšre, ajoutez..... 0 * * * * root /bin/sh /volumeUSB1/usbshare1-1/scripts/ip_block.sh C'est bon. Toutes les heures le script fera une mise a jour de la DB sur 30 jours Explication du Script: LISTE_BLOCKLIST permet de choisir la liste que l'on veut mettre. Ici c'est "all". Vous pouvez choisir la liste depuis https://lists.blocklist.de/lists/. Il suffit juste de choisir. Mettez "all" pour pas vous prendre la tĂȘte. MAJ du : 04/11/2019 @PPJP nous propose une nouvelle version amĂ©liorĂ© du script. Celle-ci est fonctionnel aussi bien pour DSM que SRM. Je l'ai tester sur mon DS1511+ ainsi que sur mon RT2600ac. Il est beaucoup plus rapide et on pourra ajouter d'autres listes perso dans le futur. Vous pouvez remercier @PPJP pour son implication sur le script et son Ă©norme boulot. Si d'autres veulent modifier ou bien proposer un script plus performant. J'ouvre un github que vous pouvez retrouvez ici. PS: N'oubliez pas d'ajouter un lancement au dĂ©marrage + un autre pour lancer le scripts X temps.  ### MERCI DE VOS RETOURS OU AMELIORATIONS ### blacklist.update ModifiĂ© le 4 novembre 2019 par Superthx ajout du script 3 Citer
Jojo (BE) Posté(e) le 15 juillet 2019 Posté(e) le 15 juillet 2019 Merci, c'est cool ça ! Quelle est ta recommandation pour la fréquence d'exécution du script : tous les mois / semaines / jours ? 0 Citer
Superthx PostĂ©(e) le 16 juillet 2019 Auteur PostĂ©(e) le 16 juillet 2019 Il y a 16 heures, Jojo (BE) a dit : Quelle est ta recommandation pour la frĂ©quence d'exĂ©cution du script : tousï»ż les mois / semaines / jours ?ï»ż Moi je laisse 4 Heures pour le script et DELETE_IP_AFTER="30" pour 30 jours. Si on met dĂ©finitivement on risque d'avoir une sacrĂ©e BD qui se vide jamais. 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 (modifiĂ©) Bonjour, Merci pour ce petit tuto bien sympathique cependant, j'ai une petite question n'Ă©tant pas un grand spĂ©cialiste en script bash. Si je comprend bien le script, voici les Ă©tapes : CrĂ©ation d'une liste. Importation depuis le fameux site des adresses IP Ă bloquer dans la liste créée. Importation de cette liste dans la bdd sqlite AutoBlockIP. Questions : Est-ce que ces adresses IP ajoutĂ©es sont rĂ©pertoriĂ©es dans DSM (Panneau de configuration > SĂ©curitĂ© > Compte > Autoriser/Bloquer la liste) ? Est-ce normal qu'aprĂšs exĂ©cution du script et la crĂ©ation du fichier ainsi que l'importation des adresses IP dans ce dernier, la base sqlite reste vide ? J'ai consultĂ© la mienne en ssh et elle ne fait que 5ko soit rien... Je n'ai pourtant reçu aucun mail d'erreur sur l'exĂ©cution du script. Pour lire la bdd, je test en tapant : cd /etc sqlite3 synoautoblock.db sqlite> .tables sqlite> .read AutoBlockIP RĂ©sultat : sqlite> .read AutoBlockIP sqlite>  Merci par avance pour tes rĂ©ponses đ ModifiĂ© le 20 juillet 2019 par Zeus 0 Citer
Superthx PostĂ©(e) le 20 juillet 2019 Auteur PostĂ©(e) le 20 juillet 2019 Oui. Jâavais vĂ©rifier et je lâai avaient aussi bien dans la db que dans la liste est ip bloquĂ©es. Mais je vais vĂ©rifier Ă nouveau. Est ce que quand tu lances juste le script sans le planificateur, le script se lance bien? Il met longtemps au debut. Et attend que le script fini dâajouter toutes les ips. Aux alentours de 30000!!! Sinon tu peux uploader un fichier avec par exemple avec 2 ips dans un fichier txt et modifier modifier le lien du tuto par celui du txt avec les 2 ips.... 0 Citer
unPixel Posté(e) le 20 juillet 2019 Posté(e) le 20 juillet 2019 (modifié) J'ai de base modifier les liens dans ton script pour tester et dans le planificateur de tùches, je fais appel au script via une commande bash. La tùche, je la lance manuellement et c'est pare contre assez rapide à lister les adresses IP dans le fichier. Le fichier lui se remplit bien d'adresses IP. C'est ensuite l'étape de les inscrire dans la base de donnée sqlite qui n'a pas l'air de fonctionner. Modifié le 20 juillet 2019 par Zeus 0 Citer
Superthx PostĂ©(e) le 20 juillet 2019 Auteur PostĂ©(e) le 20 juillet 2019 C'est ensuite l'Ă©tape de les inscrire dans la base de donnĂ©e sqlite qui n'a pas l'air de fonctionner.Je vais tester ce demain en vidant la table et voir si cela fonctionne. Voir si jâai foirĂ© le script ou autre..... 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 Je viens de refaire le test en supprimant la liste de mon rĂ©pertoire et ça ne fonctionne pas. Est-ce que le soucis vient de chez moi, je ne sais pas parce que je n'ai aucun retour... Je sais pas dans quel log je pourrais voir l'info. Peut-ĂȘtre un truc Ă ajouter dans ton script la crĂ©ation d'un fichier log qui rĂ©fĂ©rence Ă©tape par Ă©tape avec l'horodatage đ  0 Citer
Superthx Posté(e) le 20 juillet 2019 Auteur Posté(e) le 20 juillet 2019 @Zeus, je viens de me rendre compte que j'ai oublier ,'0','' dans le insert !!!! Essaie à nouveau..... 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 En effet, c'est quelque chose que j'aurai pas trouvĂ© moi mĂȘme đ Merci d'avoir prit le temps de regardĂ© le soucis, ça fonctionne bien Ă prĂ©sent. Les adresses IP sont bien rĂ©pertoriĂ©es dans la base sqlite. 0 Citer
Superthx Posté(e) le 20 juillet 2019 Auteur Posté(e) le 20 juillet 2019 Cool ! Merci du retour j'aurai pas fais gaffe. J'espÚre terminer la version pour SRM cette semaine..... 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 Pas le mĂȘme principe sur SRM ? 0 Citer
Superthx PostĂ©(e) le 20 juillet 2019 Auteur PostĂ©(e) le 20 juillet 2019 (modifiĂ©) Oui le mĂȘme mais je but sur. L'insert est celui d'avant. Sauf que j'ai un problĂšme avec UNIXTIME_DELETE_IP, il n'enregistre pas correctement la date. Et rajout de crontab derriere. ModifiĂ© le 20 juillet 2019 par Superthx 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 (modifiĂ©) Peut-ĂȘtre que si @lordtaki passe par lĂ , il pourra te guiderđ  ModifiĂ© le 20 juillet 2019 par Zeus 0 Citer
Superthx PostĂ©(e) le 20 juillet 2019 Auteur PostĂ©(e) le 20 juillet 2019 Peut-ĂȘtre que si [mention=46485]lordtaki[/mention] passe par lĂ , il pourra te diriger  Une aide est toujours bienvenue! 0 Citer
unPixel PostĂ©(e) le 20 juillet 2019 PostĂ©(e) le 20 juillet 2019 J'ai corrigĂ©, je voulais plutĂŽt dire "guider" đ DirigĂ© peut ĂȘtre prit de plusieurs maniĂšres et pas des meilleures... 0 Citer
Jojo (BE) PostĂ©(e) le 21 juillet 2019 PostĂ©(e) le 21 juillet 2019 Il y a 15 heures, Zeus a dit : En effet, c'est quelque chose que j'aurai pas trouvĂ© moi mĂȘme đ Merci d'avoir prit le temps de regardĂ© le soucis, ça fonctionne bien Ă prĂ©sent. Les adresses IP sont bien rĂ©pertoriĂ©es dans la base sqlite. Merci @Superthx pour l'adaptation. Merci @Zeus pour les tests. Je mets en application 0 Citer
Jojo (BE) PostĂ©(e) le 21 juillet 2019 PostĂ©(e) le 21 juillet 2019 Bonsoir les experts. Lorsque j'affiche l'Ă©tat d'exĂ©cution du script, il me met "interrompu(2)". (Une fois sur les 4, il m'a affichĂ© "Interrompu (126)" OĂč est mon erreur ? (et je ne vois rien dans  (Panneau de configuration > SĂ©curitĂ© > Compte > Autoriser/Bloquer la liste)) 0 Citer
unPixel PostĂ©(e) le 21 juillet 2019 PostĂ©(e) le 21 juillet 2019 Peut-ĂȘtre faudrait-il lancer la commande en mode verbose pour tester si c'est possible. 0 Citer
Jojo (BE) Posté(e) le 21 juillet 2019 Posté(e) le 21 juillet 2019 et en français dans le texte ? 0 Citer
unPixel Posté(e) le 21 juillet 2019 Posté(e) le 21 juillet 2019 Ajouter l'option -v pour avoir un retour dans le terminal de ce qui ce passe pendant l'exécution du script. 0 Citer
Jojo (BE) Posté(e) le 21 juillet 2019 Posté(e) le 21 juillet 2019 cela voudrait dire que je dois lancer le script depuis ssh, et non depuis le planificateurs de tùches ? Ceci dit, j'ai trouvé l'erreur :  En copiant le code, il y avait des caractÚres invisibles qui faisaient planter le script. Maintenant, il est en cours d'exécution et mon CPU est à 90% ;-) Pour éviter ce genre de désagrément, il faudrait activer l'option "insérer code", comme il y a déjà Hyperlien et citations  ok, c'est tout on, déjà fini (27718 IP bloquées) 0 Citer
unPixel PostĂ©(e) le 21 juillet 2019 PostĂ©(e) le 21 juillet 2019 Bon et bien nickel đ Et oui, je te suggĂ©rais de passer par SSH et lancer le script manuellement avec l'option -v đ  0 Citer
unPixel PostĂ©(e) le 22 juillet 2019 PostĂ©(e) le 22 juillet 2019 Citation Je pense que la ligne UNIXTIME_DELETE_IP=`date -d "+$DELETE_IP_AFTER jours" +%s` n'est pas conforme et que cette variable va rester Ă 0. Avec comme consĂ©quence que ces adresses seront bloquĂ©es indĂ©finiment ( et la BD ne cessera de grandir). Bonjour, Et tu ne te trompes pas đ J'ai testĂ© le script et constatĂ© tout Ă l'heure que les adresses IP bannies passaient en "dĂ©finitivement" dans DSM. Bien vu, j'allais venir le prĂ©ciser un peu plus tard sans pouvoir apporter de solution par contre đ  0 Citer
Superthx PostĂ©(e) le 22 juillet 2019 Auteur PostĂ©(e) le 22 juillet 2019 Le 10/07/2019 Ă 15:48, Superthx a dit : # Effacer IP apres x jours ou bien utiliser 0 pour blocage permanent DELETE_IP_AFTER="30" ï»ż Evidement, j'ai mis 30 jours.............. Mettre 0 pour blocage permanent 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.