|

Spamhaus und DShield Blocklisten in RouterOS nutzen

Da das Internet voll mit Spam und böswilligen Attacken ist, gibt es sehr gut gepflegte Spamlisten von Plattformen wie Spamhaus, DShield und Abuse. Es gibt noch eine Vielzahl weiterer Listen, aber wir wollen uns heute auf diese 3 Listen beschränken.

Diese Listen in MikroTik Router einzubinden ist mithilfe eines Skriptes und einem Scheduler ohne großen Aufwand möglich.

Erstellt in der Winbox einen neuen Skript mit dem Namen „spamhaus_ipv4“ und kopiert den unten stehenden Skript.

:log info "Start Download Blacklist"
ip firewall address-list
:local update do= {
    :do {
        :local data ([:tool fetch url=$url output=user as-value]->"data")
        remove [find list=blacklist comment=$description]
        :while ([:len $data]!=0) do= {
            :if ([:pick $data 0 [:find $data "\n"]]~"^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}") do= {
                :do {add list=blacklist address=([:pick $data 0 [:find $data $delimiter]].$cidr) comment=$description timeout=1d} on-error={}
            }
            :set data [:pick $data ([:find $data "\n"]+1) [:len $data]]
        }
    } on-error={:log warning "Address list <$description> update failed"}
}

$update url=https://www.dshield.org/block.txt description=DShield delimiter=("\t") cidr=/24
$update url=https://www.spamhaus.org/drop/drop.txt description="Spamhaus DROP" delimiter=("\_")
$update url=https://www.spamhaus.org/drop/edrop.txt description="Spamhaus EDROP" delimiter=("\_")
$update url=https://sslbl.abuse.ch/blacklist/sslipblacklist.txt description="Abuse.ch SSLBL" delimiter=("\r")

:log info "Download Blacklist finish"

Wer die Spamlisten auch für IPv6 benötigt, sollte einen weiteren Skript mit dem Namen „spamhaus_ipv6“ anlegen und folgenden Inhalt kopieren.

:log info "Start Download Blacklist"
ipv6 firewall address-list
:local update do= {
    :do {
        :local data ([:tool fetch url=$url output=user as-value]->"data")
        remove [find list=blacklist comment=$description]
        :while ([:len $data]!=0) do= {
            :if ([:pick $data 0 [:find $data "\n"]]~"^([a-f0-9]{1,4}::?){1,7}[a-f0-9]{1,4}") do= {
                :do {add list=blacklist address=([:pick $data 0 [:find $data $delimiter]].$cidr) comment=$description timeout=1d} on-error={}
            }
            :set data [:pick $data ([:find $data "\n"]+1) [:len $data]]
        }
    } on-error={:log warning "Address list <$description> update failed"}
}
$update url=https://www.spamhaus.org/drop/dropv6.txt description="Spamhaus DROP" delimiter=("\_")
:log info "Download Blacklist finish"

Nun legen wir noch eine Regel in der Firewall fest, damit die Spamlisten auch genutzt werden und IP Adressen, welche sich auf den Listen befinden, geblockt werden.

ip firewall/raw/add chain=prerouting action=drop comment="Drop Spamhaus Blacklist" src-address-list=blacklist

Für IPv6 müsstet ihr ebenfalls eine Regel erstellen.

ipv6 firewall/raw/add chain=prerouting action=drop comment="Drop Spamhaus Blacklist" src-address-list=blacklist

Als letzten Schritt legen wir noch den Scheduler an, der einmal am Tag die Listen aktualisiert, damit diese immer auf aktuellen Stand sind.

/system scheduler
add comment="Spamhaus IPv4" interval=1d name=spamhaus_ipv4 on-event=spamhaus_ipv4 policy=read,write,policy,test start-time=startup
add comment="Spamhaus IPv6" interval=1d name=spamhaus_ipv6 on-event=spamhaus_ipv6 policy=read,write,policy,test start-time=startup

Das war alles … Ab jetzt seit ihr ein Stück mehr geschützt… 😉

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert