Automatischer Import einer Blockliste

Frogman

Benutzer
Mitglied seit
01. September 2012
Beiträge
17.485
Punkte für Reaktionen
1
Punkte
412
Tja, Du schreibst nichts dazu, wohin Du sie denn eigentlich importieren willst... Um damit was zu machen?
 

Fraggle

Benutzer
Mitglied seit
15. März 2009
Beiträge
435
Punkte für Reaktionen
0
Punkte
16
Oops, zur Ergänzung der automatischen Blockierung.
Man kann ja manuell IPs blocken. In diese Funktion soll die Liste importiert werden.
 

TeXniXo

Benutzer
Mitglied seit
07. Mai 2012
Beiträge
4.948
Punkte für Reaktionen
94
Punkte
134
Was erhoffst du dir eigentlich hiervon? Hast du tagtägliche "Angriffe" von außen?
Wie ist deine externe Link-Adresse (Domain, DDNS oder Quickconnect)?
 

Fraggle

Benutzer
Mitglied seit
15. März 2009
Beiträge
435
Punkte für Reaktionen
0
Punkte
16
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.
 

ruedi61

Gesperrt
Mitglied seit
01. April 2016
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
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.
 

ruedi61

Gesperrt
Mitglied seit
01. April 2016
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
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
 

Fraggle

Benutzer
Mitglied seit
15. März 2009
Beiträge
435
Punkte für Reaktionen
0
Punkte
16
Super, danke. Dieses Script läßt Du dann sicher per Cronjob im gewünschten Intervall ausführen, korrekt?
 

ruedi61

Gesperrt
Mitglied seit
01. April 2016
Beiträge
72
Punkte für Reaktionen
0
Punkte
6
Jein, ich blockiere die IP's bereits in der Firewall/Router, nicht erst an der DS...
Aber ja, kannst es im Crontab laufen lassen.
 

Mahoessen

Benutzer
Mitglied seit
20. Juli 2016
Beiträge
362
Punkte für Reaktionen
15
Punkte
18
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
 

synfor

Benutzer
Mitglied seit
22. Dezember 2017
Beiträge
2.549
Punkte für Reaktionen
102
Punkte
103
Zeige doch mal die angeblich fehlerhafte Zeile.
 

Mahoessen

Benutzer
Mitglied seit
20. Juli 2016
Beiträge
362
Punkte für Reaktionen
15
Punkte
18
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
 

synfor

Benutzer
Mitglied seit
22. Dezember 2017
Beiträge
2.549
Punkte für Reaktionen
102
Punkte
103
Es geht um die Zeile der Importdatei und nicht um die im Log. Vergleiche die mit denen ohne Error.
 

Ulfhednir

Benutzer
Mitglied seit
26. August 2013
Beiträge
590
Punkte für Reaktionen
58
Punkte
54
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
 

AndiHeitzer

Benutzer
Mitglied seit
30. Juni 2015
Beiträge
2.117
Punkte für Reaktionen
87
Punkte
94
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
 

Mahoessen

Benutzer
Mitglied seit
20. Juli 2016
Beiträge
362
Punkte für Reaktionen
15
Punkte
18
@AndiHeitzer

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

Gruß ausm Ruhrpott

Mahoessen
 
  • Like
Reaktionen: AndiHeitzer

Mahoessen

Benutzer
Mitglied seit
20. Juli 2016
Beiträge
362
Punkte für Reaktionen
15
Punkte
18
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 ....
 

synfor

Benutzer
Mitglied seit
22. Dezember 2017
Beiträge
2.549
Punkte für Reaktionen
102
Punkte
103
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?
 

Mahoessen

Benutzer
Mitglied seit
20. Juli 2016
Beiträge
362
Punkte für Reaktionen
15
Punkte
18
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...
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.