Automatischer Import einer Blockliste

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.
Tja, Du schreibst nichts dazu, wohin Du sie denn eigentlich importieren willst... Um damit was zu machen?
 
Oops, zur Ergänzung der automatischen Blockierung.
Man kann ja manuell IPs blocken. In diese Funktion soll die Liste importiert werden.
 
Was erhoffst du dir eigentlich hiervon? Hast du tagtägliche "Angriffe" von außen?
Wie ist deine externe Link-Adresse (Domain, DDNS oder Quickconnect)?
 
Was erhoffst du dir eigentlich hiervon?
Abwehr von Angriffen ohne 2. Verbindungsversuch um weitere Angriffe noch unattraktiver zu werden zu lassen-
Hast du tagtägliche "Angriffe" von außen?
Nein, ist auch irrelevant, es geht um die Möglichkeit und warum sollte ich es nicht nutzen? Ein tägliches oder zweitägliches Aktualisieren der Liste ist kein Problem.
Wie ist deine externe Link-Adresse (Domain, DDNS oder Quickconnect)?
Es ist ein DDNS über meinen Webhoster.
 
Salü

Ja, die IP's kannst du direkt in die Autoblock Datenbank importieren.
Rich (BBCode):
sqlite3 -csv /etc/synoautoblock.db "select * from AutoBlockIP;" |  awk -F',' '{print $1}'

Anstatt 'select' machst du ein 'insert' query. Da kannst du dir mit 'wget' relativ einfach ein Script zusammenbasteln.
 
Anbei kleines Beispiel, kannst du als Vorlage speichern oder deinen Wünschen anpassen :)
Ausführen als root



Es ist ein Bash Script, hab nur php gewählt, damit es farbig wird hier im Broswer...
PHP:
#!/bin/ash
#
# version 0.1
# Script import IP's from blocklist.de
# by Ruedi61, 15.11.2016
#
# DSM 6.0.3 AutoBlockIP Table:
# CREATE TABLE AutoBlockIP(IP varchar(50) PRIMARY KEY,RecordTime date NOT NULL,ExpireTime date NOT NULL,Deny boolean NOT NULL,IPStd varchr(50) NOT NULL);

# Download from www.blocklist.de
# Select Typ: {all} {ssh} {mail} {apache} {imap} {ftp} {sip} {bots} {strongips} {ircbot} {bruteforcelogin}
BLOCKLIST_TYP="bruteforcelogin"

# Delete IP after x Day's OR use 0 for permanent block
DELETE_IP_AFTER="1" 

# Show Time this Script need at the bottom; 0=no 1=yes
SHOW_TIME="0"


###############################################################################################################
# Do NOT change after here
UNIXTIME=`date +%s`
UNIXTIME_DELETE_IP=`date -d "+$DELETE_IP_AFTER days" +%s`
wget -q "https://lists.blocklist.de/lists/$BLOCKLIST_TYP.txt" -O /tmp/blocklist.txt

cat "/tmp/blocklist.txt" | while read BLOCKED_IP
do
    # Check if IP valid
    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
        # Convert IPv4 to 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 added to Database!   -->  $BLOCKED_IP"
        else
            echo "IP already in Database! -->  $BLOCKED_IP"
        fi
    fi
done

rm /tmp/blocklist.txt

if [[ $SHOW_TIME -eq 1 ]]; then
    END=`date +%s`
    RUNTIME=$((END-UNIXTIME))
    echo "Finish after $RUNTIME Seconds"
fi
exit 0
 
Super, danke. Dieses Script läßt Du dann sicher per Cronjob im gewünschten Intervall ausführen, korrekt?
 
Jein, ich blockiere die IP's bereits in der Firewall/Router, nicht erst an der DS...
Aber ja, kannst es im Crontab laufen lassen.
 
Hallo, das Thema ist zwar schon älter, für mich aber aktuell, da auf meiner DS sowohl Mailserver als auch der Webserver läuft, und beide öffentlich erreichbar sind.
Durch diese Liste kann man vorab schon mal eine Menge abfangen..
Nachdem ich seit geraumer Zeit mal wieder ins Log geschaut habe, steht dort vereinzelt folgende Fehlermeldung:

IP already in Database! --> 1.193.97.78
Error: table AutoBlockIP has 7 columns but 5 values were supplied
IP added to Database! --> 1.193.99.36

1. Zeile : i.O.
2. Zeile : ??
3. Zeile : i.O.

ich verstehe den Fehler aus der 2. Zeile nicht. Die Importdatei hat an der betreffenden Stelle eine normale IPV4 stehen...

hat jemand Ähnliches oder kann den Fehler deuten ??

viele Grüße

Mahoessen
 
Zeige doch mal die angeblich fehlerhafte Zeile.
 
Hi, die Zeile, die ich in #10 gezeigt hatte:

Error: table AutoBlockIP has 7 columns but 5 values were supplied

bedeutet für mich, dass in der Datenbank-Tabelle "AutoblockIP" 7 Spalten sind, aber nur 5 unterstützt werden ??

viele Grüße

Mahoessen
 
Es geht um die Zeile der Importdatei und nicht um die im Log. Vergleiche die mit denen ohne Error.
 
Die Meldung besagt, dass die Tabelle 7 Spalten hat, der vorliegende Datensatz aber nur 5 dieser Spalten bedient.
Ich tippe auf Nullwerte, die beim Importvorgang nicht berücksichtigt werden.

Beispiel
Spalte A | Spalte B | Spalte C | Spalte D | Spalte E | Spalte F | Spalte G
Wert | Wert | Wert | Wert | Wert | NULL | NULL
 
Code:
###############################################################################################################
# BLOCKLIST von 'blocklist.de' einfügen
UNIXTIME=`date +%s`
UNIXTIME_DELETE_IP=`date -d "+$DELETE_IP_AFTER days" +%s`
wget -q "https://lists.blocklist.de/lists/$BLOCKLIST_TYP.txt" -O /volume1/_WARTUNGS-SCRIPTE_/autoblock__block-list__${DSNAME}.txt

cat "/volume1/_WARTUNGS-SCRIPTE_/autoblock__block-list__${DSNAME}.txt" | while read BLOCKED_IP
do
  # Check if IP valid
  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
    # Convert IPv4 to 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','$TYPE','$META')"`
      echo "IP added to Database as deny!   -->  $BLOCKED_IP"
    else
      echo "IP already in Database as deny! -->  $BLOCKED_IP"
    fi
  fi
done

if [[ ${SHOW_TIME} -eq 1 ]]; then
  END=`date +%s`
  RUNTIME=$((END-UNIXTIME))
  echo "Finish after $RUNTIME Seconds"
fi
 
@AndiHeitzer

Hi, danke !!!, das Script läuft sauber durch !!

Gruß ausm Ruhrpott

Mahoessen
 
  • Like
Reaktionen: AndiHeitzer
Hi, leider habe ich mich etwas zu früh gefreut...
output.log vom script:
Bildschirmfoto 2020-10-26 um 21.47.19.png

und hier kommt nichts an...
Bildschirmfoto 2020-10-26 um 21.47.50.png

ausgeführt wird das script als root, manueller Import funktioniert ....
 
Die Meldung besagt, dass die Tabelle 7 Spalten hat, der vorliegende Datensatz aber nur 5 dieser Spalten bedient. Ich tippe auf Nullwerte, die beim Importvorgang nicht berücksichtigt werden.
Warum gab es dann nicht generell eine Fehlermeldung?
 
Hallo, ich bin einen Schritt weiter...
nach dem Import über das script sind die Einträge alle in der /etc/synoautoblock.db enthalten, DSM zeigt die IPs unter Freigabe-/Blockierungsliste nicht an. Ausprobiert habe ich es indem ich die .db gelöscht habe, die Listen im DS waren leer, dann der autom. Import via Script. Danach war die .db wieder da, inkl. Inhalt und die Liste im DSM ist immer noch leer.
=> funktioniert also, wird aber nicht richtig angezeigt...
 
Moin zusammen!

ich habe das Skript bei mir implementiert und ehrlich - geil! Danke an Ruedi61 und AndieHeitzer!

Man muss es sich aktuell nur "zusammenkopieren", daher hier einmal in Gänze:

Bash:
#!/bin/ash
#
# version 0.1
# Script import IP's from blocklist.de
# by Ruedi61, 15.11.2016
#
# DSM 6.0.3 AutoBlockIP Table:
# CREATE TABLE AutoBlockIP(IP varchar(50) PRIMARY KEY,RecordTime date NOT NULL,ExpireTime date NOT NULL,Deny boolean NOT NULL,IPStd varchr(50) NOT NULL);

# Download from www.blocklist.de
# Select Typ: {all} {ssh} {mail} {apache} {imap} {ftp} {sip} {bots} {strongips} {ircbot} {bruteforcelogin}
BLOCKLIST_TYP="bruteforcelogin"

# Delete IP after x Day's OR use 0 for permanent block
DELETE_IP_AFTER="1"

# Show Time this Script need at the bottom; 0=no 1=yes
SHOW_TIME="0"


###############################################################################################################
# Do NOT change after here
UNIXTIME=`date +%s`
UNIXTIME_DELETE_IP=`date -d "+$DELETE_IP_AFTER days" +%s`
wget -q "https://lists.blocklist.de/lists/$BLOCKLIST_TYP.txt" -O /volume1/_WARTUNGS-SCRIPTE_/autoblock__block-list__${DSNAME}.txt

cat "/volume1/_WARTUNGS-SCRIPTE_/autoblock__block-list__${DSNAME}.txt" | while read BLOCKED_IP
do
  # Check if IP valid
  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
    # Convert IPv4 to 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','$TYPE','$META')"`
      echo "IP added to Database as deny!   -->  $BLOCKED_IP"
    else
      echo "IP already in Database as deny! -->  $BLOCKED_IP"
    fi
  fi
done

if [[ ${SHOW_TIME} -eq 1 ]]; then
  END=`date +%s`
  RUNTIME=$((END-UNIXTIME))
  echo "Finish after $RUNTIME Seconds"
fi

Viele Grüße,
Jan
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat