Aller au contenu

Superthx

Membres
  • Compteur de contenus

    202
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Messages posté(e)s par Superthx

  1. Hey......Y'a du chagement depuis hier soir 😅

    Je vais tester cela un peu plus tard. Merci pour le suivi je corrigerai cela un peu plus tard.

    il y a 7 minutes, PPJP a dit :

    Ce script avec suffixe .,sh permission 755 devra avoir les options start et stop

    Est-ce que tu as un exemple "simple" ? Car j'ai une idée en tête mais il me faut un exemple avec start et stop,

    Par exemple un fichier "boot.sh" en chmod 755 dans /usr/local/etc/rc.d.

    avec comme ceci à l'interieur :

    #!/bin/bash
    touch /volume1/test.txt

     

  2. Je confirme ce que je disait avant.

    Il cree le fichier mais apres car j'ai

    cat: can't open '/volumeUSB1/usbshare1-1/scripts/tmp/ip.txt': No such file or directory

    car tu as :

    old_ip=`cat /volume1/administration/check_ip_wan/ip.txt` # destination du fichier ip.txt

    hors ce fichier n'existe pas.

    Mais c'est pas grave car après tu as touch qui le crée.

    Je modifie le tuto dans la soirée.

    C'est ok ?

     

  3. Modification, verifie si tu veux:

    Mais dans ton code il recree à chaque fois le fichier ip.txt. Non ?

     

    ##############
    ### SCRIPT ###
    ##############
    file=/volume1/administration/check_ip_wan/ip.txt
    insert_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` #verifie l'ip actuel
    if test -f "$file"; then
        echo "$file exist"
        else
        echo "create $file"
            `touch /volume1/administration/check_ip_wan/ip.txt`
            `echo $insert_ip > /volumeUSB1/usbshare1-1/scripts/tmp/current_ip.txt`
    fi
    old_ip = `/volume1/administration/check_ip_wan/ip.txt`
    if [ "$old_ip" != "$current_ip" ]; then
    	echo -e "to:${to}">${messageFile};
    	echo -e "from:${from}">>${messageFile};
    	echo -e "subject:${subject}">>${messageFile};
    	echo -e "${body}" >> ${messageFile};
    	ssmtp -v ${to} < /volume1/administration/check_ip_wan/message.txt;
    	rm ${messageFile}
    	
    else
    	echo "Adresse IP non changé !"
    fi

     

  4. il y a 8 minutes, Zeus a dit :

    Et depuis hier, je bosse sur un script similaire au tien en plus (on a les même sources ?)...

    J'avais repris un ancien script de mon ASUS RT.

    il y a une heure, Zeus a dit :

    Par contre, dans ton script, tu supprimes le fichier txt. Comment fait-il pour comparer avec un possible changement ?

    Je suis con. Tu as raison. Au debut le script devais se lancer au demarrage du routeur. Mais je ne trouve pas d'info pour lancer un script au demarrage du routeur. On aurait sleep pour eviter crontab.

    il y a une heure, Zeus a dit :

    Autre chose,  tu ne précises pas la configuration de "ssmtp" dans ton tuto, tu devrais ajouter cette étape avec la configuration des deux fichiers. De mon côté, ils étaient vide donc je suppose que ça l'est pour tout le monde de base.

    Pas besoin de fichiers pour ssmtp, car il le cree le fichier ip_current.txt et l'efface derriere avec rm.

    messageFile="/volumeUSB1/usbshare1-1/scripts/tmp/ip_current.txt"
    	echo -e "To:${emailtoaddr}">${messageFile};
    	echo -e "From:${emailfromname}">>${messageFile};
    	echo -e "Subject:${emailsubject}">>${messageFile};
    	echo -e "The New IP is ${ip}" >> ${messageFile};
    	ssmtp -v ${emailtoaddr} < /volumeUSB1/usbshare1-1/scripts/tmp/ip_current.txt;
    	rm ${messageFile}

    Je modifie le script et je reviens.

  5. il y a 3 minutes, Zeus a dit :

    #! /bin/bash #recuperation de l'ancienne ip adrip=$(grep [1-9] < /volume1/administration/check_ip_wan/ip.txt) #recuperation de la nouvelle ip adrip2=$(wget http://checkip.dyndns.org/ -O - | cut -d: -f 2 | cut -d\< -f 1) #test de l'ip if [ $adrip != $adrip2 ] then echo $adrip2 | xxxxx@ndd.tld else echo $adrip2 fi #mise a jour adresse dans le fichier echo $adrip2 > /volume1/administration/check_ip_wan/ip.txt

    Je vais le tester plus tard.

    Peut être était il valid sous DSM 5. Je sais pas. Mais sous DSM 6 et SRM la fonction d'envoi de mail est différente.......

  6. Il y a 21 heures, Zeus a dit :

    Parce que tu as déjà sur nos syno une notification d'intégrée en cas de changement d'adresse ip.

    Oui. Mais celui t'envoi un mail directement. Car je passe pas mon temps sur le bureau du DSM 😝. Car si tu as à comme un serveur DNS et l'ip change, tu peux modifier l'ip dynamique grâce à l'envoi du mail par exemple. 

    Sinon decommenter la ligne comme ceci et laisser l'option cocher comme tu dis.....

    Il y a 21 heures, Zeus a dit :

    Panneau de configuration > Sécurité

     

  7. 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....

  8. Je n'ai pas trouver d'option pour être averti automatiquement de changement de mon IP sur les produits synology.

    Donc je propose un script fonctionnel pour DSM et SRM.

    DSM

    Actuellement je suis sous DSM 6.2.2-24922 Update 2

    Il va falloir crée un script dans le planificateur de tâches en tant que root dans configuration:

    Dans exécuter la commande mettez le script suivant. Je laisse la fréquence sur toutes les minutes.

    Dans cette exemple il creera 2 fichiers : ip.txt + message.txt(ce dernier s'efface automatiquement)

    Dans cette exemple il creera le fichier dans

    /volume1/administration/check_ip_wan/

    Modifier le script selon l'endroit où vous voulez placer ces fichiers.

    #!/bin/bash
    
    file=/volume1/administration/check_ip_wan/ip.txt #indique ou se trouve ip.txt
    old_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` #verifie l'ip actuel
    
    ##Verifie que ip.txt existe, sinon creation du fichier##
    if test -f "$file"; then
        echo "$file exist"
        else
        echo "create $file"
            `touch /volume1/administration/check_ip_wan/ip.txtip.txt`
            `echo $insert_ip > /volume1/administration/check_ip_wan/ip.txt/ip.txt`
    fi
    ##Fin de verification que ip.txt existe##
    
    current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` #verification de l'ip actuel
    old_ip=`cat /volume1/administration/check_ip_wan/ip.txt` # destination du fichier ip.txt
    
    #####################
    ### CONFIGURATION ###
    #####################
    to="monmail@ndd.com" #changez par votre mail de destination
    from="Serveur xxxx <monmail@ndd.com>"#Nom de l'expediteur et changez par votre mail de destination 
    subject="Votre adresse IP publique (IPv4) a changé !\r\n"
    
    # contenu du message
    body=`printf "Bonjour,\r\n\rVotre adresse IP publique a changé !\r\n\r\nVotre ancienne adresse IP était : $old_ip\r\nVotre nouvelle adresse IP est : $current_ip\r\n\r\nCordialement..."`
    # destination du message temporaire
    messageFile="/volume1/administration/check_ip_wan/message.txt"
    
    ##############
    ### SCRIPT ###
    ##############
    if [ "$old_ip" != "$current_ip" ]; then
            # création du fichier ip.txt et envoi d'un mail avec les informations
            `touch /volume1/administration/check_ip_wan/ip.txt`
            `echo $current_ip > /volume1/administration/check_ip_wan/ip.txt`
    
            echo -e "to:${to}">${messageFile};
            echo -e "from:${from}">>${messageFile};
            echo -e "subject:${subject}">>${messageFile};
            echo -e "${body}" >> ${messageFile};
            ssmtp -v ${to} < /volume1/administration/check_ip_wan/message.txt;
            rm ${messageFile}
    
    else
            echo "Adresse IP non changé !"
    fi

    SRM

    Actuellement je suis sou SRM 1.2.2-7915 avec un RT2600ac

    Actuellement SRM ne propose pas de fonction comme DSM pour une tâche planifiée. Donc va falloir utiliser crontab et créer ses fichiers.

    Activez l’accès ssh sur votre SRM (Panneau de configuration / Services).

    J'utilise actuellement une carte sd sur mon RT2600ac.

    Dans cette carte via File Station j'ai crée un répertoire scripts et un sous répertoire tmp dans script.

    Vous pouvez bien sur crée un répertoire directement dans la mémoire du routeur si vous utilisez pas de carte sd. Il vous suffit juste d'adapter le code à votre besoin.

    Rentrer en ssh en tant que avec putty sur votre routeur.

    faites ceci pour creer le fichier script :

    vi /volumeUSB1/usbshare1-1/scripts/ip_notify.sh
    chmod 755 ip_notify.sh

    appuyez sur i pour inserer le code suivant :

    #!/bin/sh
    
    file=/volumeUSB1/usbshare1-1/scripts/tmp/ip.txt #indique ou se trouve ip.txt
    old_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` #verifie l'ip actuel
    
    ##Verifie que ip.txt existe, sinon creation du fichier##
    if test -f "$file"; then
        echo "$file exist"
        else
        echo "create $file"
            `touch /volumeUSB1/usbshare1-1/scripts/tmp/ip.txt`
            `echo $insert_ip > /volumeUSB1/usbshare1-1/scripts/tmp/ip.txt`
    fi
    ##Fin de verification que ip.txt existe##
    
    current_ip=`curl -silent -L http://checkip.amazonaws.com|tail -n 1` #verification de l'ip actuel
    old_ip=`cat /volumeUSB1/usbshare1-1/scripts/tmp/ip.txt` # destination du fichier ip.txt
    
    #####################
    ### CONFIGURATION ###
    #####################
    to="monmail@ndd.com" #changez par votre mail de destination
    from="Serveur xxxx <monmail@ndd.com>"#Nom de l'expediteur et changez par votre mail de destination 
    subject="Votre adresse IP publique (IPv4) a changé !\r\n"
    
    # contenu du message
    body=`printf "Bonjour,\r\n\rVotre adresse IP publique a changé !\r\n\r\nVotre ancienne adresse IP était : $old_ip\r\nVotre nouvelle adresse IP est : $current_ip\r\n\r\nCordialement..."`
    # destination du message temporaire
    messageFile="/volumeUSB1/usbshare1-1/scripts/tmp/message.txt"
    
    ##############
    ### SCRIPT ###
    ##############
    if [ "$old_ip" != "$current_ip" ]; then
            # création du fichier ip.txt et envoi d'un mail avec les informations
            `touch /volumeUSB1/usbshare1-1/scripts/tmp/ip.txt`
            `echo $current_ip > /volumeUSB1/usbshare1-1/scripts/tmp/ip.txt`
    
            echo -e "to:${to}">${messageFile};
            echo -e "from:${from}">>${messageFile};
            echo -e "subject:${subject}">>${messageFile};
            echo -e "${body}" >> ${messageFile};
            ssmtp -v ${to} < /volumeUSB1/usbshare1-1/scripts/tmp/message.txt;
            rm ${messageFile}
    
    else
            echo "Adresse IP non changé !"
    fi

    Maintenant il va falloir créer une tâche planifiée.

    Pour cela il va falloir ajouter une ligne dans crontab.

    faites :

    vi /etc/crontab

    insérer une nouvelle ligne comme ceci :

    *       *       *       *       *       root    /bin/sh /volumeUSB1/usbshare1-1/scripts/ip_notify.sh

    avec ceci le script vérifie automatiquement toutes les minutes si l'ip change.

    Remerciement : @Zeus

  9. 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 :

    1. Allez dans "Panneau de configuration" 
    2. Puis "Planificateur de tâches"
    3. Cliquez sur "Créer"
    4. 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.

    1. Tâche - BLACKLIST
    2. Utilisateur - Sélectionnez "root"
    3. 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.

    vi /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

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.