Aller au contenu principal

Guide d’intégration

Adlist MikroTik de domaines malveillants, récupérée avec votre clé API

Le fetch de RouterOS envoie l’authentification HTTP Basic dès sa première requête : le routeur télécharge lui-même la liste isMalicious complète, puis charge le fichier en adlist DNS. Un script planifié la rafraîchit.

Aucune carte bancaire requise · Clé API gratuite

Chemin des données
  1. isMalicious

    api.ismalicious.com

    blocklist-domains-c2.txt

    Régénérée toutes les 12 h

  2. MikroTik

    Étape 5

    Télécharger la liste et ajouter l’adlist

  3. Faire du routeur le résolveur de vos clients

    Étape 4
Sur cette page08

Ce que vous obtenez

Une adlist DNS prend des fichiers de domaines simples et garde chaque nom dans le cache DNS, environ 75 octets chacun. Les listes par catégorie ci-dessous tiennent sur un routeur ; les 2 millions de domaines de niveau critical, non.

ListeEntréesRégénéréeOffres
blocklist-domains-c2.txtAdlist par défaut : domaines de commande et contrôle (C2) signalés par des trackers de C2.environ 22 000toutes les 12 hBasic, Pro et Enterprise
blocklist-domains-ransomware.txtDomaines de la catégorie ransomware, quel que soit leur niveau.environ 3 600toutes les 12 hBasic, Pro et Enterprise
blocklist-domains-cryptomining.txtDomaines de la catégorie cryptomining, quel que soit leur niveau.environ 6 100toutes les 12 hBasic, Pro et Enterprise

Nombres arrondis d’après la génération du  ; chaque liste est régénérée toutes les 12 heures. Les chiffres du jour sont publics et ne demandent aucune clé.

Ce que reçoit chaque offre

  • FreeCompte Free, ou aucune clé : les premiers 10 % de chaque liste, signalés par X-Blocklist-Version: lite.
  • Basic, Pro et EnterpriseBasic, Pro et Enterprise : toutes les listes, complètes.
  • Pro et EnterpriseCollections TAXII 2.1, pour les plateformes qui lisent les indicateurs STIX : Pro et Enterprise.

Comparer les offres

Ce que renvoie un téléchargementHTTP

GET https://api.ismalicious.com/blocklist/download/blocklist-domains-c2.txt

Liste complète ou échantillon de 10 %

ChampBasic, Pro et EnterpriseFree
X-Blocklist-Version:fulllite
X-Blocklist-Percentage:10010
Total entries:<COUNT><COUNT> (Lite Version - 10% of <TOTAL>)

Premières lignes du fichier

# IsMalicious.com Blocklist - Domains (All Levels)
# Format: Plain
# Generated: <BUILD_TIME>
# Total entries: <COUNT>
# Update frequency: every 12 hours
# Category: C2
# Threat level: All Levels
# Website: https://ismalicious.com
# © <YEAR> IsMalicious (compilation). Licensed to the downloading account under https://ismalicious.com/terms; redistribution of the compilation prohibited. Third-party entries remain under their providers' licences — see https://ismalicious.com/sources.
# Filtered by category: c2
#

Les valeurs entre chevrons sont fixées à chaque génération.

Prérequis

  • RouterOS 7.16 ou ultérieur : les adlists DNS sont arrivées en 7.15, et la 7.16 a corrigé la gestion d’un 401 par fetch.
  • Fetch et le planificateur autorisés par le device-mode : les routeurs domestiques livrés avec RouterOS 7.17 ou ultérieur sont en mode home, qui désactive les deux (étape 2).
  • L’horloge du routeur réglée par NTP : la vérification des certificats compare leurs dates avec elle.
  • Une clé API et son secret isMalicious, dans Compte › Accès API.
  • Un accès HTTPS sortant (TCP 443) en IPv4 depuis MikroTik vers api.ismalicious.com, qui n’a pas d’adresse IPv6.

Mise en place

  1. Copier la clé API et le secret

    Ouvrez Compte › Accès API et copiez la Clé API et le Secret API. La liste complète demande une offre Basic, Pro ou Enterprise ; une clé Free, ou une offre interrompue, charge l’échantillon de 10 %.
  2. Autoriser fetch et le planificateur

    Vérifiez le device-mode avec /system/device-mode/print. Si fetch ou scheduler vaut no, lancez /system/device-mode/update fetch=yes scheduler=yes, puis appuyez sur le bouton reset ou mode, ou débranchez l’alimentation, dans les 5 minutes : le routeur n’applique le changement qu’après cette confirmation.
    Device-mode (routeurs domestiques, 7.17+)RouterOS
    # Home routers that ship with RouterOS 7.17 or later come in home mode,
    # which turns off fetch and the scheduler. Check:
    /system/device-mode/print
    # If fetch or scheduler shows no:
    /system/device-mode/update fetch=yes scheduler=yes
    # then press the reset or mode button, or unplug the power, within 5 minutes.
  3. Faire confiance aux racines Let’s Encrypt

    RouterOS 7.19 et ultérieur ont un magasin de confiance intégré que fetch utilise. Lancez d’abord le fetch manuel décrit dans Vérifier le résultat : s’il se termine par status: finished, passez cette étape ; s’il échoue avec no trusted CA certificate found, importez les deux racines, puis comparez leurs empreintes aux valeurs ci-dessous, car ce premier téléchargement ne peut pas être vérifié. C’est toujours nécessaire de 7.15 à 7.18, et sur hAP lite, hAP lite TC et hAP mini avant 7.23.3.
    Racines Let’s Encrypt, si le magasin de confiance ne les a pasRouterOS
    # Only when the manual fetch under Verify fails with "no trusted CA certificate found".
    /tool/fetch url="https://letsencrypt.org/certs/isrgrootx1.pem" dst-path=isrgrootx1.pem
    /tool/fetch url="https://letsencrypt.org/certs/isrg-root-x2.pem" dst-path=isrg-root-x2.pem
    /certificate/import file-name=isrgrootx1.pem trusted=yes
    /certificate/import file-name=isrg-root-x2.pem trusted=yes
    
    # The download above cannot be verified yet: compare the SHA-256 fingerprints.
    /certificate/print detail where common-name~"^ISRG Root X"
    # ISRG Root X1  96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6
    # ISRG Root X2  69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470
    # If either differs: /certificate/remove [find common-name~"^ISRG Root X"]
  4. Faire du routeur le résolveur de vos clients

    Autorisez les requêtes DNS vers le routeur et agrandissez le cache DNS, qui contient les noms de l’adlist : 8 Mio laissent la place à la liste C2. Les clients doivent utiliser le routeur comme résolveur : distribuez-le par DHCP (/ip/dhcp-server/network/set … dns-server= l’adresse du routeur) ; un client qui a son propre résolveur ou du DNS over HTTPS contourne l’adlist. Sans le pare-feu par défaut, ajoutez les règles ci-dessous pour que le routeur ne réponde pas au DNS venu d’Internet.
    RésolveurRouterOS
    /ip/dns/set allow-remote-requests=yes cache-size=8192
    
    # Only without the default firewall, which already drops DNS from the WAN.
    # Put these above any rule that accepts it (place-before):
    /ip/firewall/filter/add chain=input in-interface-list=WAN protocol=udp dst-port=53 action=drop comment="drop DNS from WAN"
    /ip/firewall/filter/add chain=input in-interface-list=WAN protocol=tcp dst-port=53 action=drop comment="drop DNS from WAN"
    /ipv6/firewall/filter/add chain=input in-interface-list=WAN protocol=udp dst-port=53 action=drop comment="drop DNS from WAN"
    /ipv6/firewall/filter/add chain=input in-interface-list=WAN protocol=tcp dst-port=53 action=drop comment="drop DNS from WAN"
  5. Télécharger la liste et ajouter l’adlist

    Récupérez la liste dans un fichier avec la clé API en user et le secret API en password, et check-certificate=yes, puis ajoutez le fichier comme adlist. Une adlist par URL ne prend pas d’identifiants : c’est pourquoi le fichier vient d’abord.
    Premier chargementRouterOS
    /tool/fetch url="https://api.ismalicious.com/blocklist/download/blocklist-domains-c2.txt" \
        user="<API_KEY>" password="<API_SECRET>" check-certificate=yes \
        dst-path=ismalicious-c2.txt
    /ip/dns/adlist/add file=ismalicious-c2.txt
  6. La rafraîchir selon un planning

    • Ajoutez le rafraîchissement comme script, exécuté au démarrage puis toutes les 6 heures : il retélécharge la liste, puis retire et rajoute l’adlist pour que le nouveau fichier soit lu.
    • Un téléchargement raté (une erreur HTTP, un délai dépassé, une erreur de certificat) arrête le script avant qu’il ne touche à l’adlist.
    • Une réponse 200 remplace les noms quoi qu’elle contienne, échantillon de 10 % compris : vérifiez name-count après tout changement d’offre ou de clé.
    • Sur un routeur doté d’un dossier flash, écrivez le fichier sous flash/ : ailleurs, il se trouve sur un disque en mémoire et disparaît au redémarrage.
    • Le délai de 90 secondes au démarrage peut être court pour un lien PPPoE ou LTE.
    Script de rafraîchissement et planningRouterOS
    /system/script/add name=ismalicious-dns policy=ftp,read,write,test source={
    /tool/fetch url="https://api.ismalicious.com/blocklist/download/blocklist-domains-c2.txt" \
        user="<API_KEY>" password="<API_SECRET>" check-certificate=yes \
        dst-path=ismalicious-c2.txt
    /ip/dns/adlist/remove [find file="ismalicious-c2.txt"]
    /ip/dns/adlist/add file=ismalicious-c2.txt
    }
    /system/scheduler/add name=ismalicious-dns-boot start-time=startup interval=0s \
        policy=ftp,read,write,test on-event=":delay 90s; /system/script/run ismalicious-dns"
    /system/scheduler/add name=ismalicious-dns-6h start-time=00:20:00 interval=6h \
        policy=ftp,read,write,test on-event="/system/script/run ismalicious-dns"

Vérifier le résultat

  • /ip/dns/adlist/print affiche name-count, les noms importés, et match-count, les requêtes bloquées.
  • name-count correspond au count de la liste dans /blocklist/stats, à une régénération près. Environ un dixième, c’est l’échantillon de 10 %.
  • Un fetch manuel de la liste se termine par status: finished.
  • Le sujet de journal fetch consigne chaque téléchargement et ses erreurs.
VérificationsRouterOS
# Names imported (name-count) and queries blocked (match-count):
/ip/dns/adlist/print

# The download itself, outside the schedule, without keeping a copy:
/tool/fetch url="https://api.ismalicious.com/blocklist/download/blocklist-domains-c2.txt" \
    user="<API_KEY>" password="<API_SECRET>" check-certificate=yes \
    output=none

Dépannage

not allowed by device-mode

Le routeur est en mode home, qui désactive fetch et le planificateur. Lancez la commande device-mode de l’étape 2 et confirmez-la avec le bouton reset ou mode, ou en coupant l’alimentation, dans les 5 minutes.

Le fetch échoue avec une erreur 401

La clé ou le secret est faux ou incomplet. Le script s’arrête et l’adlist garde ses noms. Le corps de la réponse indique « Blocklist not found or empty » ; fiez-vous au code HTTP. Recopiez les deux valeurs depuis Compte › Accès API : y régénérer la clé invalide l’ancienne paire.

name-count vaut environ un dixième de la liste

Aucun identifiant n’est parvenu au serveur, ou l’offre est Free ou interrompue : un abonnement impayé, en retard de paiement, annulé, incomplet ou suspendu compte comme Free. La ligne Total entries du fichier téléchargé indique alors Lite Version.

adlist read: max cache size reached

Agrandissez cache-size, puis retirez et rajoutez l’adlist : l’agrandir après coup ne complète pas la liste.

Lignes d’en-tête dans l’adlist

L’adlist ignore les lignes qui commencent par # : l’en-tête n’est pas chargé. Ne lui donnez jamais un fichier -adguard ou -dnsmasq : elle lit des noms simples ou des lignes hosts.

no trusted CA certificate found

Réglez d’abord l’horloge. Puis importez ISRG Root X1 et X2 (étape 3) : toujours de 7.15 à 7.18, et sur hAP lite, hAP lite TC et hAP mini avant 7.23.3. À partir de 7.19, vérifiez que fetch utilise toujours le magasin intégré : le réglage s’appelle builtin-trust-anchors en 7.19 et 7.20, builtin-trust-store à partir de 7.21.

not enough permissions (9)

Il manque une politique au script ou à l’entrée du planificateur : fetch demande ftp et test, et les commandes de l’adlist read et write.

403 depuis ismalicious.com

Le frontal d’ismalicious.com refuse certaines sources. Utilisez api.ismalicious.com.

Limites

  • Aucun script de chargement de listes d’adresses n’est encore publié. RouterOS ne sait pas charger une liste simple dans une address list sans un script qui ajoute chaque ligne, et celui que nous avons rédigé n’a pas été exécuté sur un routeur.
  • Une adlist ne bloque que les noms exacts, pas leurs sous-domaines, et ne répond qu’aux requêtes A et AAAA : les enregistrements TXT, MX et HTTPS se résolvent toujours en amont.
  • Le secret API figure en clair dans le script, et un export l’affiche : limitez qui peut lire la configuration.
  • Ni CIDR, ni .rsc, ni aucun autre format propre à RouterOS ne sont servis : l’adlist lit la liste simple.
  • L’échantillon de 10 % est le premier dixième d’un fichier non trié, pas le dixième le plus risqué.

Questions fréquentes

RouterOS peut-il récupérer une blocklist avec une clé API ?

Oui. /tool/fetch prend user et password et les envoie en HTTP Basic dès la première requête : la clé API sert d’utilisateur, le secret API de mot de passe. L’adlist DNS elle-même ne prend pas d’identifiants : récupérez la liste dans un fichier et chargez le fichier.

Puis-je charger les listes d’IP dans une address list MikroTik ?

Pas encore avec un script publié. Une address list demande un script qui ajoute chaque ligne, et celui que nous avons rédigé n’a pas été testé sur un routeur : ce guide ne couvre donc que l’adlist DNS.

L’adlist bloque-t-elle les sous-domaines ?

Non. Une adlist RouterOS bloque les noms exacts qu’elle contient, pas leurs sous-domaines.

À quelle fréquence le routeur doit-il rafraîchir la liste ?

Au démarrage et toutes les 6 heures, comme le fait le planning de ce guide. Les listes sont régénérées toutes les 12 heures.

Quelle taille donner au cache DNS ?

Chaque nom d’adlist occupe environ 75 octets de cache DNS, et le cache par défaut est de 2 Mio. La liste C2 seule en demande environ 1,6 Mio : le guide porte donc le cache à 8 Mio.

Commencer

Prêt à commencer ?

Aucune carte bancaire requise · Clé API gratuite