Die Skripte sind Open Source und liegen auf GitHub: Q-Feeds/Q-Feeds-Integration-for-Mikrotik-RouterOS. Holen Sie sie immer von dort, dann haben Sie sicher die aktuelle Version. Sie benötigen Adminrechte auf dem Router, ausgehendes HTTPS zu api.qfeeds.com und ein Q-Feeds API-Token. Siehe Ihre Threat Feeds abrufen.
Voraussetzungen
- RouterOS: 7.15 oder neuer, getestet mit 7.15, 7.17 und 7.20
- Rechte: ein Konto mit vollen Adminrechten
- Feed: Malware-IP-Liste (
feed_type=malware_ip) - Netzwerk: ausgehendes HTTPS vom Router zu
api.qfeeds.com - Address-List:
Malware-List, wird von den Skripten angelegt, falls noch nicht vorhanden
Skripte holen
Im Repository liegen zwei Dateien:
Malware Import FULL.rsclädt die komplette Liste.Malware Import DIFF.rscübernimmt nur die Änderungen seit Ihrem letzten Abruf.
Öffnen Sie beide auf GitHub und kopieren Sie den Inhalt, oder laden Sie das Repository als ZIP. Auf dem Router selbst wird nichts installiert, Sie fügen den Skripttext in RouterOS ein.
Token eintragen
Beide Skripte beginnen mit einem kurzen Variablenblock. Ersetzen Sie das Platzhalter-Token durch Ihr eigenes:
:local apitoken "YOUR_API_TOKEN_HERE";
Die nächste Variable entscheidet, wo die Einträge landen:
:local useDynamic "yes";
"yes"hält die Einträge im RAM. Sie verschwinden beim Neustart und der Scheduler stellt sie beim nächsten Lauf wieder her. Das ist die Vorgabe und bei häufigen Updates die richtige Wahl, weil nie in den Flash-Speicher des Routers geschrieben wird."no"schreibt die Einträge auf die Platte. Sie überstehen einen Neustart, aber bei einer Liste dieser Größe und einem Update alle zwanzig Minuten nutzen Sie den Flash ab und blähen die Konfigurationsdatei auf.
Skripte in RouterOS anlegen
Gehen Sie in Winbox oder WebFig zu System, Scripts und legen Sie zwei Skripte an. Die Namen sind wichtig, denn der volle Import sucht den differenziellen Scheduler über den Namen:
- Malware Update - Full mit dem Inhalt von
Malware Import FULL.rsc - Malware Update - Diff mit dem Inhalt von
Malware Import DIFF.rsc
Geben Sie beiden Skripten die Policies read, write, policy und test, sonst können sie Address-List und Scheduler nicht verwalten.
Scheduler anlegen
/system scheduler add name="Malware Update - Full" \
start-time=startup interval=1d \
on-event="Malware Update - Full"
/system scheduler add name="Malware Update - Diff" \
start-time=startup interval=20m \
on-event="Malware Update - Diff"
Den vollen Import täglich oder wöchentlich laufen lassen. Das Intervall des differenziellen Updates richtet sich nach Ihrer Lizenz: 1d bei Community, 4h bei Plus und 20m bei Premium. Häufiger abzurufen, als die Lizenz erlaubt, bringt nichts Neues.
Führen Sie den vollen Import einmal von Hand aus, bevor Sie sich auf das differenzielle Update verlassen. Die API liefert die Änderungen seit Ihrem letzten Abruf, ohne ersten vollen Lauf gibt es also keine Basis und die Diff bleibt leer.
/system script run "Malware Update - Full"
Verkehr blockieren
Die Skripte füllen nur die Liste. Die Filterregeln legen Sie selbst an, zum Beispiel:
/ip firewall filter
add chain=forward src-address-list="Malware-List" action=drop \
comment="Q-Feeds: drop traffic from malicious hosts"
add chain=forward dst-address-list="Malware-List" action=drop \
comment="Q-Feeds: drop traffic to malicious hosts"
Setzen Sie die Regeln weit genug oben in die Chain, damit sie vor einer allgemeinen Accept-Regel greifen, und ergänzen Sie Regeln in der input-Chain, wenn Sie auch den Router selbst schützen wollen.
So funktioniert es
- Voller Import: das Skript deaktiviert den differenziellen Scheduler, benennt die vorhandenen Einträge in
Malware-List - Oldum, holt den Feed Seite für Seite in Blöcken von 4.000 Adressen und stoppt, sobald eine Seite leer zurückkommt. - Rollback: die alten Einträge werden erst entfernt, wenn der Import tatsächlich Einträge geliefert hat. Schlägt der Download fehl, wird die vorherige Liste zurückbenannt und der Router behält seinen Schutz.
- Differenzielles Update: Zeilen mit vorangestelltem
+kommen in die Address-List, Zeilen mit-fliegen heraus. Jeder API-Schlüssel hat seine eigene Historie, Sie bekommen also genau die Änderungen seit Ihrem eigenen letzten Abruf, im Rhythmus Ihrer Lizenz. - Koordination: der volle Import schaltet den differenziellen Scheduler während des Laufs ab und danach wieder an, damit sich beide nie in die Quere kommen.
- Adressformate: IPv4, IPv6 und CIDR-Notation wie
192.0.2.0/24. RouterOS prüft jede Adresse und überspringt stillschweigend, was es nicht lesen kann. - Logging: beide Skripte schalten die erste Logging-Aktion während des Laufs ab, damit nicht tausende Einzelzeilen im Log landen, und danach wieder ein.
Überprüfen
/ip firewall address-list print count-only where list="Malware-List"
/ip firewall address-list print where list="Malware-List"
/log print where message~"Malware"
/system scheduler print
Nach einem erfolgreichen vollen Import liegt der Zähler je nach Lizenz im Hunderttausenderbereich, und das Log zeigt eine Zeile pro verarbeiteter Seite plus eine Abschlussmeldung.
Fehlerbehebung
- Die Liste bleibt leer: prüfen Sie das Token in beiden Skripten, ob der Router
https://api.qfeeds.comerreicht, und starten Sie den vollen Import von Hand im Terminal. - Das differenzielle Update ändert nie etwas: führen Sie zuerst den vollen Import aus. Verwenden Sie in beiden Skripten dasselbe API-Token, denn die Abrufhistorie hängt am Schlüssel.
- Die Liste ist nach einem Neustart weg: das gehört zu
useDynamic "yes". Der Scheduler füllt sie beim nächsten Lauf wieder. Setzen Sie die Variable nur auf"no", wenn Sie die Persistenz wirklich brauchen. - Rollback im Log: der Import ist fehlgeschlagen und die vorherige Liste wurde wiederhergestellt. Prüfen Sie Verbindung und Gültigkeit des Tokens und ob der Router genug freien Speicher hat.
- Es läuft nichts: sehen Sie mit
/system scheduler printnach, ob ein Scheduler deaktiviert ist, und prüfen Sie, ob die Skriptnamen exakt zu den Scheduler-Namen passen. - Support: support@qfeeds.com oder die Support-Seite. Fehler in den Skripten gefunden? Öffnen Sie ein Issue im GitHub-Repository.
Die Q-Feeds-Feeds mit bösartigen URLs werden auf RouterOS nicht unterstützt. Eine Address List greift auf IP-Adressen, und einen vollständigen URL-Pfad kann nur ein Proxy oder ein Web-Filter prüfen. Bleiben Sie hier beim Malware-IP-Feed.