Aller au contenu principal

Guide d’intégration

Flux de menaces FortiGate d’IP et de domaines malveillants, en authentification Basic

FortiOS envoie l’authentification HTTP Basic à chaque requête d’un flux de menaces : le FortiGate télécharge lui-même la liste isMalicious complète, sans relais. Bloquez les IP dans les politiques de pare-feu et les domaines dans un filtre DNS.

Aucune carte bancaire requise · Clé API gratuite

Chemin des données
  1. isMalicious

    api.ismalicious.com

    blocklist-ips-critical.txt

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

  2. FortiGate

    Étape 2

    Créer le flux d’IP

  3. Bloquer le flux dans les politiques de pare-feu

    Étape 4
Sur cette page08

Ce que vous obtenez

Jusqu’à FortiOS 7.4.3, un flux contient 131 072 entrées ou 10 Mo ; à partir de 7.4.4, un budget par type d’entrée couvre tous les flux, 300 000 IP sur les plus petits modèles. Chaque liste ci-dessous tient sur toutes les versions et tous les modèles.

ListeEntréesRégénéréeOffres
blocklist-ips-critical.txtFlux d’IP par défaut. IP signalées par 6 sources de menaces ou plus, ou par 3 ou plus avec une catégorie critique.environ 89 000toutes les 12 hBasic, Pro et Enterprise
blocklist-ips-critical50k.txtLes 50 000 IP de niveau critical au score de risque le plus élevé, de la plus risquée à la moins risquée : laisse de la place quand d’autres flux d’IP partagent le budget de 7.4.4 et plus.50 000, plafondtoutes les 12 hBasic, Pro et Enterprise
blocklist-ips-c2.txtIP de commande et contrôle (C2) signalées par des trackers de C2, quel que soit leur niveau.environ 44 000toutes les 12 hBasic, Pro et Enterprise
blocklist-domains-c2.txtFlux de domaines par défaut, pour le filtre DNS : 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-ips-critical.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 - IPs (Critical)
# Format: Plain
# Generated: <BUILD_TIME>
# Total entries: <COUNT>
# Update frequency: every 12 hours
# Category: All
# Threat level: Critical
# 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.
#

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

Prérequis

  • FortiOS 7.0.8, 7.2.4 ou ultérieur, les premières versions capables de vérifier le certificat du serveur d’un flux (vérification désactivée par défaut). Évitez 7.4.5 à 7.4.8 et 7.6.1 à 7.6.3, qui échouent à cette vérification sur les flux de menaces ; 7.4.9 et 7.6.4 corrigent le défaut.
  • Si le trafic d’administration doit sortir par une interface donnée, réglez interface-select-method specify et interface, ou source-ip, sur la ressource externe.
  • Pour le flux de domaines seulement : une licence FortiGuard Web Filter, qu’exige le filtrage DNS par catégorie.
  • Une clé API et son secret isMalicious, dans Compte › Accès API.
  • Un accès HTTPS sortant (TCP 443) en IPv4 depuis FortiGate 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. Créer le flux d’IP

    • Security Fabric › External Connectors › Create New, puis External Feeds › IP Address à partir de 7.6.1, Threat Feeds › IP Address de 7.0 à 7.6.0.
    • Nommez-le isMalicious-IPs, laissez Update method sur External Feed quand le champ apparaît, collez l’URL de la liste dans URL of external resource (URI of external resource en 7.0 et 7.2), réglez Refresh Rate sur 60 minutes, puis cliquez sur OK.
    • Dans l’interface, enregistrez le connecteur avec l’authentification HTTP Basic désactivée, lancez le bloc de certificat de l’étape suivante, puis activez HTTP basic authentication avec la clé API en Username et le secret API en Password : FortiOS récupère le flux dès l’enregistrement, et la vérification est désactivée jusque-là.
    • Le bloc CLI règle les deux en un seul commit.
    Flux d’IP (CLI)FortiOS
    config system external-resource
      edit "isMalicious-IPs"
        set type address
        set resource "https://api.ismalicious.com/blocklist/download/blocklist-ips-critical.txt"
        set username "<API_KEY>"
        set password "<API_SECRET>"
        set refresh-rate 60
        set server-identity-check full
      next
    end
  3. Activer la vérification du certificat

    Si vous avez créé le flux dans l’interface, réglez la vérification en CLI : par défaut, FortiOS ne vérifie pas le certificat du serveur d’un flux (server-identity-check none), et Fortinet ne documente ce réglage qu’en CLI. Passez-le sur full, qui vérifie aussi le nom d’hôte. Sans lui, le secret API transite dans une connexion TLS qu’un attaquant placé au milieu pourrait intercepter.
    Vérification du certificatFortiOS
    config system external-resource
      edit "isMalicious-IPs"
        set server-identity-check full
      next
    end
  4. Bloquer le flux dans les politiques de pare-feu

    • Policy & Objects › Firewall Policy › Create New : Destination isMalicious-IPs (dans la section IP ADDRESS FEED), Action DENY, journalisation activée, pour le trafic sortant.
    • Ajoutez une seconde politique avec le flux en Source pour le trafic entrant, avec match-vip activé si des serveurs sont joints par des VIP (pas de champ dans l’interface ; c’est la valeur par défaut à partir de 7.2.4) : une politique de refus ordinaire ne bloque pas le trafic des VIP.
    • Un membre SD-WAN ne peut pas servir d’interface de politique : prenez sa zone.
    • En CLI, edit 0 prend le prochain identifiant libre et ajoute la politique en bas, sous les politiques d’autorisation, où elle ne correspond jamais : remontez les deux au-dessus avec le bloc move.
    Politiques de refusFortiOS
    config firewall policy
      edit 0
        set name "isMalicious-outbound"
        set srcintf "<LAN_INTERFACE>"
        set dstintf "<WAN_INTERFACE>"
        set srcaddr "all"
        set dstaddr "isMalicious-IPs"
        set action deny
        set schedule "always"
        set service "ALL"
        set logtraffic all
      next
      edit 0
        set name "isMalicious-inbound"
        set srcintf "<WAN_INTERFACE>"
        set dstintf "<LAN_INTERFACE>"
        set srcaddr "isMalicious-IPs"
        set dstaddr "all"
        set action deny
        set schedule "always"
        set service "ALL"
        set logtraffic all
        set match-vip enable
      next
    end
    
    # edit 0 adds each policy at the bottom. Read the two new IDs at the end of
    # "show firewall policy", then put them above the policies that allow the traffic:
    config firewall policy
      move <OUTBOUND_ID> before <FIRST_LAN_TO_WAN_ALLOW_ID>
      move <INBOUND_ID> before <FIRST_WAN_TO_LAN_ALLOW_ID>
    end
  5. Protéger le FortiGate lui-même (facultatif)

    À partir de FortiOS 7.2.4 et 7.4.0, une politique local-in peut prendre le flux d’IP en source, pour rejeter le trafic destiné aux interfaces du FortiGate.
    Politique local-inFortiOS
    config firewall local-in-policy
      edit 0
        set intf "<WAN_INTERFACE>"
        set srcaddr "isMalicious-IPs"
        set dstaddr "all"
        set action deny
        set service "ALL"
        set schedule "always"
      next
    end
  6. Bloquer les domaines avec un filtre DNS (facultatif)

    • Create New › Domain Name dans le même menu de connecteurs, avec les mêmes champs et blocklist-domains-c2.txt comme URL ; en CLI, la catégorie 192, ou le prochain numéro libre jusqu’à 221, et server-identity-check full.
    • Puis Security Profiles › DNS Filter : modifiez le profil, activez FortiGuard Category Based Filter, réglez le flux sur Redirect to Block Portal dans Remote Categories, puis appliquez le profil là où passent les requêtes DNS des clients : dans la politique d’autorisation qui laisse le LAN joindre des serveurs DNS (une politique de refus ne porte pas de profil) ou, si les clients utilisent le FortiGate comme résolveur, dans Network › DNS Servers › DNS Service on Interface › DNS Filter (en CLI : config system dns-server, puis edit sur l’interface LAN et set dnsfilter-profile).
    Flux de domaines (CLI)FortiOS
    config system external-resource
      edit "isMalicious-Domains"
        set type domain
        set category 192
        set resource "https://api.ismalicious.com/blocklist/download/blocklist-domains-c2.txt"
        set username "<API_KEY>"
        set password "<API_SECRET>"
        set refresh-rate 60
        set server-identity-check full
      next
    end

Vérifier le résultat

  • Ouvrez le connecteur : une fois le fichier chargé, il indique sa dernière mise à jour et son nombre d’entrées, et View Entries les liste.
  • diagnose sys external-resource stats affiche, pour chaque flux, les lignes totales, valides et en erreur et, à partir de 7.4.4, buildable, les entrées chargées sous la limite. Les lignes valides doivent approcher le count de la liste dans /blocklist/stats, et buildable leur être égal.
  • L’API REST de supervision renvoie les entrées et l’état du flux : GET /api/v2/monitor/system/external-resource/entry-list?mkey=isMalicious-IPs&status_only=true.
  • Les sessions refusées apparaissent dans les journaux des deux politiques ; les domaines bloqués dans Log & Report › Security Events › DNS Query (Log & Report › DNS Query en 7.0).
  • Environ un dixième du nombre publié signale l’échantillon de 10 %. Le FortiGate n’affiche pas l’en-tête du fichier : le débogage forticron montre X-Blocklist-Version: lite dans la réponse, ou un curl depuis un poste avec la même clé montre Lite Version dans la ligne Total entries.
Vérifications en CLIFortiOS
# Per feed: total, valid and error lines; from 7.4.4 also buildable, the
# entries loaded under the limit.
diagnose sys external-resource stats

# Watch one download: the request, its Authorization header (your credential,
# in base64: keep it out of tickets), the X-Blocklist-Version answer and the
# TLS result.
diagnose debug reset
diagnose debug application forticron -1
diagnose debug console timestamp enable
diagnose debug enable
# Reload the feeds now rather than waiting for the next refresh:
diagnose test application forticron 8
# ...then:
diagnose debug disable
diagnose debug reset

Dépannage

Le flux affiche une erreur de connexion après un 401

La clé ou le secret est faux ou incomplet. FortiOS garde le fichier précédent : l’ancienne liste reste appliquée. 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.

Seules 10 % des entrées environ se chargent

Aucun identifiant n’est parvenu au serveur, parce que l’authentification est désactivée ou qu’un champ est vide, ou l’offre est Free ou interrompue : un abonnement impayé, en retard de paiement, annulé, incomplet ou suspendu compte comme Free. Le débogage forticron montre X-Blocklist-Version: lite dans la réponse.

buildable inférieur aux lignes valides, ou pas de champ Entries

La limite par flux ou la limite globale est atteinte. Prenez une liste plus petite dans le tableau ci-dessus, ou réordonnez les flux avec move : à partir de 7.4.4, les entrées au-delà du budget ne sont pas chargées.

Délai dépassé ou erreur 502 sur une grande liste

Un téléchargement qui prend plus de 30 secondes de notre côté finit en délai dépassé ou en 502 : prenez une liste par niveau ou par catégorie du tableau.

503 Service Unavailable

La liste est en cours de génération, et la réponse porte Retry-After: 600. FortiOS garde son fichier précédent, et la mise à jour suivante récupère la liste.

Lignes en erreur dans les statistiques du flux

Les lignes d’en-tête # sont des commentaires pour FortiOS. Des lignes en erreur signalent une URL vers un format que FortiOS ne lit pas : prenez le fichier simple, pas une variante -adguard ou -hosts.

« Server not reachable » avec la vérification du certificat

En 7.4.5 à 7.4.8 et 7.6.1 à 7.6.3, c’est un bogue de FortiOS avec server-identity-check sur les flux de menaces : passez en 7.4.9 ou 7.6.4. Ne désactivez pas la vérification à la place : le secret partirait vers un serveur non vérifié. api.ismalicious.com utilise un certificat Let’s Encrypt, renouvelé environ tous les 60 jours.

403 depuis ismalicious.com

Le frontal d’ismalicious.com refuse certaines sources. Utilisez api.ismalicious.com, l’hôte prévu pour les équipements.

Limites

  • blocklist-domains-critical.txt, environ 2 millions de domaines, dépasse la limite par flux jusqu’à 7.4.3 et le budget des modèles d’entrée de gamme à partir de 7.4.4 ; seuls les modèles milieu et haut de gamme en 7.4.4 ou ultérieur peuvent la contenir, et seulement à partir de 7.4.8 ou 7.6.4, car avant, un flux de domaines de plus d’un million d’entrées dans une politique en mode flow épuise la mémoire du moteur IPS. Les listes ne sont pas triées : un chargement tronqué en garde un sous-ensemble arbitraire.
  • À partir de 7.4.4, le budget d’entrées est partagé par tous les flux du même type : le flux d’IP d’un autre éditeur puise dans la même enveloppe.
  • Ni CIDR ni plages ne sont servis : FortiOS les accepte, mais les listes d’IP contiennent des adresses seules.
  • Les sessions existantes sont réévaluées au bout du plus court des deux délais : l’intervalle de mise à jour ou 30 minutes.
  • Le filtrage des domaines demande la licence FortiGuard Web Filter. Si elle expire, FortiOS ne peut plus évaluer les domaines et, par défaut, rejette tout le DNS qui passe par le profil : activez Allow DNS requests when a rating error occurs (config ftgd-dns, set options error-allow) si le DNS doit rester ouvert en cas de panne. Sans la licence, utilisez les flux d’IP.
  • FortiOS propose STIX comme protocole de flux. Le serveur TAXII d’isMalicious n’a pas été testé avec : utilisez les listes.
  • L’échantillon de 10 % est le premier dixième d’un fichier non trié, pas le dixième le plus risqué.

Questions fréquentes

FortiGate envoie-t-il une clé API pour un flux de menaces externe ?

Oui. Activez l’authentification HTTP Basic sur le flux, disponible depuis FortiOS 6.2.0 : la clé API sert de nom d’utilisateur, le secret API de mot de passe. FortiOS les envoie dès la première requête : le pare-feu reçoit la liste complète, sans relais. Ne les envoyez qu’à partir de 7.0.8 ou 7.2.4, avec server-identity-check réglé sur full : les versions antérieures ne savent pas vérifier le certificat du serveur.

Combien d’entrées un flux de menaces FortiGate peut-il contenir ?

Jusqu’à FortiOS 7.4.3, 131 072 entrées ou 10 Mo par flux. À partir de 7.4.4, un budget par type d’entrée couvre tous les flux : 300 000 IP sur tous les modèles jusqu’à 7.4.8 et 7.6.2, puis 300 000 en entrée de gamme, 1 million en milieu de gamme et 5 millions en haut de gamme à partir de 7.4.9 et 7.6.3.

Pourquoi régler server-identity-check ?

Sa valeur par défaut est none : FortiOS ne vérifie pas le certificat du serveur du flux, et le secret API pourrait partir vers un attaquant placé au milieu. Réglez-le sur full. En 7.4.5 à 7.4.8 et 7.6.1 à 7.6.3, passez d’abord en 7.4.9 ou 7.6.4 : ces versions échouent à la vérification sur les flux de menaces.

Quel intervalle de mise à jour donner au flux ?

60 minutes. Les listes sont régénérées toutes les 12 heures et les réponses portent Cache-Control: max-age=3600. Quand une mise à jour échoue, FortiOS garde le fichier précédent.

Un FortiGate peut-il bloquer les listes de domaines ?

Oui, sous forme de flux Domain Name utilisé comme catégorie distante dans un profil de filtre DNS, ce qui demande une licence FortiGuard Web Filter. Prenez les listes de domaines C2, ransomware ou cryptomining : la liste de niveau critical ne tient que sur les modèles milieu et haut de gamme en 7.4.4 ou ultérieur, et seulement à partir de 7.4.8 ou 7.6.4.

Commencer

Prêt à commencer ?

Aucune carte bancaire requise · Clé API gratuite