Chargez un bundle de signatures personnalisées vers le moteur NSX IDS/IPS.

Éléments à prendre en compte lors du chargement de signatures personnalisées :

  • Lors du déploiement de signatures personnalisées pour NSX IDS/IPS, assurez-vous qu'elles incluent uniquement des mots clés pris en charge compatibles avec NSX. Reportez-vous à la liste des mots clés pris en charge ci-dessous.

  • Vérifiez que seuls les groupes d'adresses et les ports pris en charge sont utilisés dans vos signatures :

    address-groups:
    HOME_NET: "any"    EXTERNAL_NET: "any"    HOME_NETWORK: "[10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8]"    HTTP_SERVERS: "$HOME_NET"    SMTP_SERVERS: "$HOME_NET"    SQL_SERVERS: "$HOME_NET"    DNS_SERVERS: "$HOME_NET"    TELNET_SERVERS: "$HOME_NET"    AIM_SERVERS: "$EXTERNAL_NET"    DC_SERVERS: "$HOME_NET"    DNP3_SERVER: "$HOME_NET"    DNP3_CLIENT: "$HOME_NET"    MODBUS_CLIENT: "$HOME_NET"    MODBUS_SERVER: "$HOME_NET"    ENIP_CLIENT: "$HOME_NET"    ENIP_SERVER: "$HOME_NET"
    
    port-groups:
    HTTP_PORTS: "any"    SHELLCODE_PORTS: "!80"    ORACLE_PORTS: 1521    SSH_PORTS: 22    DNP3_PORTS: 20000    MODBUS_PORTS: 502    FILE_DATA_PORTS: "[$HTTP_PORTS,110,143]"    FTP_PORTS: 21    VXLAN_PORTS: "4789"
  • Confirmez que le format du bundle de signatures personnalisées que vous prévoyez de charger est correct ; il doit avoir une extension .zip (par exemple, sample_rules.zip). Notez que NSX ne suit pas les dépendances pour les signatures personnalisées. Veillez donc à ce que toutes les signatures dépendantes soient incluses dans le processus de publication.

  • Si vous publiez une signature personnalisée valide et que vous la remplacez ensuite par un nouveau bundle contenant uniquement des signatures personnalisées non valides, NSX ne vous permet pas de publier le nouveau bundle. NSX affiche le message d'erreur suivant : «  La signature remplacée est uniquement autorisée pour la signature VALIDE/AVERTISSEMENT. » De plus, tous les profils IDPS précédemment mis à jour pour utiliser les signatures de l'ancien bundle deviennent non valides dans la mesure où le nouveau bundle ne dispose pas de ces signatures. Si le nouveau bundle contient des signatures personnalisées qui font également partie de l'ancien bundle, elles sont considérées comme des signatures existantes et restent valides pour les profils existants.

  • Assurez-vous que toutes les signatures personnalisées utilisent les mots clés pris en charge. Voici la liste des mots clés pris en charge :

    sid

    Définir l'ID de la règle.

    priority

    Les règles ayant une priorité plus élevée sont examinées en premier.

    rev

    Définir la version de la règle.

    classtype

    Informations sur la classification des règles et des alertes.

    app-layer-protocol

    Rechercher une correspondance sur le protocole de couche d'application détecté.

    tcp.ack

    Rechercher un numéro d'accusé de réception TCP spécifique.

    tcp.seq

    Rechercher un numéro de séquence TCP spécifique.

    tcp.window

    Rechercher une taille de fenêtre TCP spécifique.

    ipopts

    Vérifier si une option IP spécifique est définie.

    tcp.flags

    Détecter les indicateurs définis dans l'en-tête TCP.

    fragbits

    Vérifier si la fragmentation et les bits réservés sont définis dans l'en-tête IP.

    fragoffset

    Rechercher une correspondance sur des valeurs décimales spécifiques du champ de décalage de fragment IP.

    ttl

    Rechercher une valeur de durée de vie IP spécifique.

    tos

    Rechercher une correspondance sur des valeurs décimales spécifiques du champ TOS d'en-tête IP.

    itype

    Rechercher une correspondance sur un type ICMP spécifique.

    icode

    Rechercher une correspondance sur une valeur d'ID ICMP spécifique.

    icmp_id

    Rechercher un ID ICMP.

    icmp_seq

    Rechercher un numéro de séquence ICMP.

    dsize

    Rechercher une correspondance sur la taille de la charge utile du paquet.

    flow

    Rechercher une correspondance sur la direction et l'état du flux.

    threshold

    Contrôler la fréquence d'alerte de la règle.

    metadata

    Utilisé pour la journalisation.

    reference

    Diriger vers des emplacements contenant des informations sur la règle.

    tag

    Définir des balises.

    msg

    Informations sur la règle et l'alerte possible.

    content

    Rechercher une correspondance sur le contenu de la charge utile.

    uricontent

    Mot clé hérité à faire correspondre dans la mémoire tampon de l'URI de la demande.

    pcre

    Rechercher une correspondance sur l'expression régulière.

    depth

    Désigner le nombre d'octets à vérifier à partir du début de la charge utile.

    startswith

    Le modèle doit être au début d'un tampon (identique à « depth:<pattern len> »).

    endswith

    Vérifier que le contenu précédent correspond exactement à la fin du tampon.

    distance

    Indique une relation entre ce mot clé de contenu et le contenu qui le précède.

    within

    Indiquer que cette correspondance de contenu doit se trouver à une certaine distance de la correspondance de mot clé de contenu précédente.

    abs_offset

    Designer l'octet à partir duquel rechercher une correspondance dans le flux.

    offset

    Designer l'octet à partir duquel rechercher une correspondance dans la charge utile.

    replace

    À utiliser uniquement en mode IPS.

    nocase

    Modifier la correspondance du contenu pour qu'elle ne soit pas sensible à la casse.

    fast_pattern

    Forcer l'utilisation du contenu précédent dans la recherche de correspondance multimodèle.

    rawbytes

    Inclus pour être compatible avec les signatures qui l'utilisent.

    byte_test

    Extraire le nombre d'octets (<num of bytes>) et effectuer une opération sélectionnée avec un opérateur (<operator>) sur la valeur dans la valeur de test (<test value>) sur un décalage (<offset>) particulier.

    byte_jump

    Sélectionner un nombre d'octets (<num of bytes>) à partir d'un décalage (<offset>) et déplacer le pointeur de détection vers cette position.

    sameip

    Vérifier si l'adresse IP de la source est identique à celle de la destination.

    geoip

    Rechercher une correspondance sur les adresses IP source, de destination ou source et de destination du trafic réseau, et savoir à quel pays/région l'adresse IP appartient.

    ip_proto

    Rechercher une correspondance sur le protocole IP dans l'en-tête de paquet.

    ftpbounce

    Détecter les attaques de rebond FTP.

    isdataat

    Vérifier s'il reste des données dans une partie spécifique de la charge utile.

    id

    Rechercher une correspondance sur une valeur d'ID d'adresse IP spécifique.

    rpc

    Rechercher une correspondance sur les numéros de procédure RPC et la version RPC.

    flowvar

    Définir une variable de flux.

    flowint

    Utiliser un entier par flux.

    pktvar

    Définir des variables de paquet.

    noalert

    Aucune alerte ne sera générée par la règle.

    flowbits

    Utiliser un indicateur de flux.

    hostbits

    Utiliser un indicateur d'hôte.

    ipv4-csum

    Vérifier l'erreur de total de contrôle IPv4.

    tcpv4-csum

    Vérifier l'erreur de total de contrôle TCPv4.

    tcpv6-csum

    Vérifier l'erreur de total de contrôle TCPv6.

    udpv4-csum

    Vérifier l'erreur de total de contrôle UDPv4.

    udpv6-csum

    Vérifier l'erreur de total de contrôle UDPv6.

    icmpv4-csum

    Vérifier l'erreur de total de contrôle ICMPv4.

    icmpv6-csum

    Vérifier l'erreur de total de contrôle ICMPv6.

    stream_size

    Rechercher une correspondance sur la quantité d'octets d'un flux.

    detection_filter

    Générer une alerte pour chaque correspondance une fois un seuil atteint.

    dataset

    Faire correspondre le tampon rémanent aux jeux de données (expérimental).

    datarep

    Utiliser des jeux de données (expérimental).

    decode-event

    Valeurs et conditions détectées lors du décodage de paquets individuels.

    gid

    Donner une autre valeur d'ID à différents groupes de signatures.

    nfq_set_mark

    Utiliser NFQUEUE dans les règles iptables pour envoyer des paquets à Suricata.

    bsize

    Rechercher une correspondance sur la longueur d'un tampon.

    tls.version

    Rechercher une correspondance sur la version de TLS/SSL.

    tls.subject

    Rechercher une correspondance avec le champ Subject du certificat TLS/SSL.

    tls.issuerdn

    Rechercher une correspondance avec le champ IssuerDN du certificat TLS/SSL.

    tls_cert_notbefore

    Rechercher une correspondance avec le champ notBefore du certificat TLS.

    tls_cert_notafter

    Rechercher une correspondance avec le champ notAfter du certificat TLS.

    tls_cert_expired

    Rechercher une correspondance avec les certificats TLS ayant expiré.

    tls_cert_valid

    Rechercher une correspondance avec les certificats TLS valides.

    tls.fingerprint

    Rechercher une correspondance avec l'empreinte digitale SHA1 du certificat TLS/SSL.

    tls_store

    Stocker le certificat TLS/SSL sur le disque.

    http_cookie

    Modificateur de contenu pour rechercher une correspondance uniquement sur le tampon de cookie HTTP.

    http.cookie

    Tampon rémanent pour rechercher une correspondance sur les tampons Cookie/Set-Cookie HTTP.

    http_method

    Modificateur de contenu pour rechercher une correspondance uniquement sur le tampon de méthode HTTP.

    http.method

    Tampon rémanent pour rechercher une correspondance spécifiquement et uniquement sur le tampon de méthode HTTP.

    http.protocol

    Définit le tampon rémanent http_protocol.

    http.start

    Définit le tampon rémanent http_start.

    urilen

    Rechercher une correspondance sur la longueur de l'URI HTTP.

    http_client_body

    Modificateur de contenu pour rechercher une correspondance uniquement sur le corps de demande HTTP.

    http.request_body

    Tampon rémanent pour rechercher une correspondance avec le tampon du corps de demande HTTP.

    http_server_body

    Modificateur de contenu pour rechercher une correspondance sur le corps de réponse HTTP.

    http.response_body

    Tampon rémanent pour rechercher une correspondance avec le tampon du corps de réponse HTTP.

    http_header

    Modificateur de contenu pour rechercher une correspondance uniquement sur le tampon d'en-tête HTTP.

    http.header

    Tampon rémanent pour rechercher une correspondance sur le tampon d'en-tête HTTP normalisé.

    http.header_names

    Définit le tampon rémanent http_header_names.

    http.accept

    Définit le tampon rémanent http.accept pour l'en-tête HTTP accept.

    http.accept_lang

    Définit le tampon rémanent http.accept_lang pour l'en-tête HTTP accept-language.

    http.accept_enc

    Définit le tampon rémanent http.accept_enc pour l'en-tête HTTP accept-encoding.

    http.connection

    Définit le tampon rémanent http.connection pour l'en-tête HTTP connection.

    http.content_len

    Définit le tampon rémanent http.content_len pour l'en-tête HTTP content-length.

    http.content_type

    Définit le tampon rémanent http.content_type pour l'en-tête HTTP content-type.

    http.location

    Définit le tampon rémanent http.location pour l'en-tête HTTP location.

    http.server

    Définit le tampon rémanent http.server pour l'en-tête HTTP server.

    http.referer

    Définit le tampon rémanent http.referer pour l'en-tête HTTP referer.

    http_raw_header

    Modificateur de contenu pour rechercher une correspondance avec le tampon d'en-tête HTTP brut.

    http.header.raw

    Tampon rémanent pour rechercher une correspondance avec le tampon d'en-tête HTTP brut.

    http_uri

    Modificateur de contenu pour rechercher une correspondance spécifiquement et uniquement sur le tampon d'URI HTTP.

    http.uri

    Tampon rémanent pour rechercher une correspondance spécifiquement et uniquement sur le tampon d'URI HTTP normalisé.

    http.uri.raw

    Tampon rémanent pour rechercher une correspondance spécifiquement et uniquement sur le tampon d'URI HTTP brut.

    http_raw_uri

    Modificateur de contenu pour rechercher une correspondance sur l'URI HTTP brut.

    http_stat_msg

    Modificateur de contenu pour rechercher une correspondance sur le tampon de message d'état HTTP.

    http.stat_msg

    Tampon rémanent pour rechercher une correspondance sur le message d'état de réponse HTTP.

    http_stat_code

    Modificateur de contenu pour rechercher une correspondance uniquement sur le tampon de code d'état HTTP.

    http.stat_code

    Tampon rémanent pour rechercher une correspondance uniquement sur le tampon de code d'état HTTP.

    http_user_agent

    Modificateur de contenu pour rechercher une correspondance uniquement sur l'en-tête d'agent utilisateur HTTP.

    http.user_agent

    Tampon rémanent pour rechercher une correspondance spécifiquement et uniquement sur le tampon d'agent utilisateur HTTP.

    http_host

    Modificateur de contenu pour rechercher une correspondance sur le nom d'hôte HTTP.

    http.host

    Tampon rémanent pour rechercher une correspondance sur le tampon d'hôte HTTP.

    http_raw_host

    Modificateur de contenu pour rechercher une correspondance sur l'en-tête d'hôte HTTP ou le nom d'hôte brut à partir de l'URI HTTP.

    http.host.raw

    Tampon rémanent pour rechercher une correspondance sur l'en-tête d'hôte HTTP ou le nom d'hôte brut à partir de l'URI HTTP.

    http.request_line

    Tampon rémanent pour rechercher une correspondance sur la ligne de demande HTTP.

    http.response_line

    Modificateur de contenu pour rechercher une correspondance uniquement sur la ligne de réponse HTTP.

    nfs_procedure

    Tampon rémanent pour rechercher une correspondance avec la procédure NFS.

    nfs.version

    Tampon rémanent pour rechercher une correspondance avec la version de NFS.

    ssh.proto

    Tampon rémanent pour rechercher une correspondance avec le protocole SSH.

    ssh.protoversion

    Tampon rémanent pour rechercher une correspondance avec la version du protocole SSH.

    ssh.software

    Tampon rémanent pour rechercher une correspondance avec le logiciel SSH.

    ssh.softwareversion

    Tampon rémanent pour rechercher une correspondance avec la chaîne du logiciel SSH.

    ssl_version

    Tampon rémanent pour rechercher une correspondance avec la version de l'enregistrement SSL/TLS.

    ssl_state

    Tampon rémanent pour rechercher une correspondance avec l'état de la connexion SSL.

    byte_extract

    Extraire le nombre d'octets (<num of bytes>) à un décalage (<offset>) particulier et le stocker dans une variable (<var_name>).

    file.data

    Faire correspondre les mots clés du contenu aux données du fichier.

    pkt_data

    Réinitialiser le pointeur de détection au début de la charge utile du paquet.

    app-layer-event

    Rechercher une correspondance sur les événements générés par les analyseurs de couche d'application et le moteur de détection de protocole.

    dcerpc.iface

    Rechercher une correspondance sur la valeur de l'UUID d'interface dans un en-tête DCERPC.

    dcerpc.opnum

    Rechercher une correspondance sur un ou plusieurs numéros d'opération et/ou une plage de numéros d'opération dans l'interface d'un en-tête DCERPC.

    dcerpc.stub_data

    Rechercher une correspondance sur les données de stub dans un paquet DCERPC donné. Il s'agit d'un « tampon rémanent ».

    smb.named_pipe

    Tampon rémanent pour rechercher une correspondance sur le canal nommé SMB dans la connexion d'arborescence.

    smb.share

    Tampon rémanent pour rechercher une correspondance sur le nom de partage SMB dans l'arborescence de connexion.

    asn1

    Notation standard pour structurer et décrire les données.

    engine-event

    Enregistrement d'un événement de détection dans le système de détection des intrusions Suricata.

    stream-event

    Règles de mise en correspondance sur les événements du moteur de flux TCP.

    filename

    Rechercher une correspondance sur le nom de fichier.

    file.name

    Tampon rémanent pour rechercher une correspondance sur le nom de fichier.

    fileext

    Rechercher une correspondance sur l'extension d'un nom de fichier.

    filestore

    Stocke les fichiers sur le disque si la règle correspond.

    filemagic

    Rechercher une correspondance sur les informations renvoyées par libmagic sur un fichier.

    file.magic

    Tampon rémanent pour rechercher une correspondance sur la magie du fichier.

    filemd5

    Faire correspondre le MD5 d'un fichier à la liste des totaux de contrôle MD5.

    filesha1

    Faire correspondre le SHA-1 d'un fichier à la liste des totaux de contrôle SHA-1.

    filesha256

    Faire correspondre le SHA-256 d'un fichier à la liste des totaux de contrôle SHA-256.

    filesize

    Rechercher une correspondance sur la taille du fichier à mesure qu'il est transféré.

    l3_proto

    Spécifier si la signature doit correspondre sur IPv4, IPv6 ou les deux.

    lua

    Rechercher une correspondance à l'aide d'un script lua.

    iprep

    Rechercher une correspondance sur les informations de réputation IP pour un hôte.

    dns.query

    Tampon rémanent pour rechercher une correspondance avec le tampon de requête DNS.

    dns.opcode

    Rechercher une correspondance avec l'indicateur opcode d'en-tête DNS.

    tls.sni

    Modificateur de contenu pour faire correspondre spécifiquement et uniquement sur la mémoire tampon TLS SNI.

    tls.certs

    Modificateur de contenu pour rechercher une correspondance avec le tampon rémanent du certificat TLS.

    tls.cert_issuer

    Modificateur de contenu pour rechercher une correspondance spécifiquement et uniquement sur le tampon de l'émetteur de certificat TLS.

    tls.cert_subject

    Modificateur de contenu pour rechercher une correspondance spécifiquement et uniquement sur le tampon d'objet du certificat TLS.

    tls.cert_serial

    Modificateur de contenu pour rechercher une correspondance avec le tampon série du certificat TLS.

    tls.cert_fingerprint

    Rechercher une correspondance sur le tampon d'empreinte digitale du certificat TLS.

    ja3.hash

    Modificateur de contenu pour rechercher une correspondance avec le tampon de hachage JA3.

    ja3.string

    Modificateur de contenu pour rechercher une correspondance avec le tampon de chaîne JA3.

    ja3s.hash

    Modificateur de contenu pour rechercher une correspondance avec le tampon rémanent de hachage JA3S.

    ja3s.string

    Modificateur de contenu pour rechercher une correspondance avec le tampon rémanent de chaîne JA3S.

    modbus

    Rechercher une correspondance sur diverses propriétés de demandes Modbus.

    cip_service

    Rechercher une correspondance sur le service CIP.

    enip_command

    Règles de détection de commande Ethernet/IP.

    dnp3.data

    Faire correspondre les options de contenu suivantes sur le tampon d'application réassemblé.

    dnp3_func

    Rechercher une correspondance sur le code de fonction d'application trouvé dans la demande et les réponses DNP3.

    dnp3_ind

    Rechercher une correspondance sur les indicateurs internes DNP3 dans l'en-tête d'application de réponse.

    dnp3_obj

    Rechercher une correspondance sur les objets de données d'application DNP3.

    xbits

    Utiliser des bits.

    base64_decode

    Décode les données codées en base64.

    base64_data

    Correspondance entre le contenu et les données décodées en base64.

    krb5_err_code

    Rechercher une correspondance avec le code d'erreur Kerberos 5.

    krb5_msg_type

    Rechercher une correspondance avec le type de message Kerberos 5.

    krb5.cname

    Tampon rémanent pour rechercher une correspondance sur le nom du client Kerberos 5.

    krb5.sname

    Tampon rémanent pour rechercher une correspondance sur le nom du serveur Kerberos 5.

    sip.method

    Tampon rémanent pour rechercher une correspondance sur le tampon de méthode SIP.

    sip.uri

    Tampon rémanent pour rechercher une correspondance sur l'URI SIP.

    sip.protocol

    Tampon rémanent pour rechercher une correspondance sur le protocole SIP.

    sip.stat_code

    Tampon rémanent pour rechercher une correspondance sur le code d'état SIP.

    sip.stat_msg

    Tampon rémanent pour rechercher une correspondance sur le message d'état SIP.

    sip.request_line

    Tampon rémanent pour rechercher une correspondance sur la ligne de demande SIP.

    sip.response_line

    Tampon rémanent pour rechercher une correspondance sur la ligne de réponse SIP.

    template2

    Modèle.

    ipv4.hdr

    Tampon rémanent pour rechercher une correspondance sur l'en-tête IPV4.

    ipv6.hdr

    Tampon rémanent pour rechercher une correspondance sur l'en-tête IPV6.

    tcp.hdr

    Tampon rémanent pour rechercher une correspondance sur l'en-tête TCP.

    udp.hdr

    Tampon rémanent pour rechercher une correspondance sur l'en-tête UDP.

    tcp.mss

    Tampon rémanent pour rechercher une correspondance sur le champ d'option MSS TCP.

    ftpdata_command

    Rechercher une correspondance avec la commande FTP déclenchant un canal de données FTP.

    target

    Indiquer au module de sortie le côté ciblé par l'attaque.

    snmp.version

    Rechercher une correspondance avec la version SNMP.

    snmp.community

    Modificateur de contenu SNMP pour rechercher une correspondance sur la communauté SNMP.

    snmp.pdu_type

    Rechercher une correspondance avec le type PDU SNMP.

    bypass

    Appeler le rappel de contournement lorsque la correspondance d'un sig est terminée.

    prefilter

    Forcer l'utilisation d'une condition comme premier filtre.

    compress_whitespace

    Modifier le tampon pour compresser les espaces blancs consécutifs en un seul avant l'inspection.

    strip_whitespace

    Modifier le tampon pour supprimer les espaces blancs avant l'inspection.

    to_md5

    Convertir en hachage md5 du tampon.

    to_sha1

    Convertir en hachage sha1 du tampon.

    to_sha256

    Convertir en hachage sha256 du tampon.

    dotprefix

    Modifier le tampon pour extraire le dotprefix.

    nopcap

    Éviter l'extraction de contenu pcap des flux en cas d'alerte.

Procédure

  1. Dans NSX Manager, accédez à Sécurité > IDS/IPS et Malware Prevention (sous la section Gestion des règles).
  2. Sur la page IDS/IPS et Malware Prevention, accédez à l'onglet Gestion des signatures, puis sélectionnez Signatures personnalisées.
  3. Cliquez sur Ajouter et choisissez l'option Charger à partir d'un fichier.
  4. Si vous avez précédemment chargé un bundle de signatures, sachez que toutes les signatures seront remplacées par le nouveau bundle que vous vous apprêtez à charger. Par conséquent, exportez le bundle existant vers votre ordinateur, mettez-le à jour avec les nouvelles signatures, puis chargez le bundle modifié.
  5. Si vous chargez un bundle de signatures personnalisées pour la première fois, dans la fenêtre Définir un nouvel ensemble de signatures, entrez un nom de signature et sélectionnez un bundle de signatures en accédant à l'emplacement sur votre ordinateur. Cliquez sur Valider.
  6. Avant de publier les signatures, notez que seules les signatures dans l'état Valide et celles dans l'état Avertissement explicitement sélectionnées sont publiées sur les nœuds de transport et les dispositifs NSX Edge.
    Note :

    Les signatures dans l'état Non valide et celles dans l'état Avertissement non sélectionnées ne sont pas publiées sur les nœuds de transport et les dispositifs NSX Edge.

  7. Cliquez sur Publier. Un nouveau bundle de signatures qui n'est pas encore publié peut toujours être annulé et peut conserver les signatures existantes. Vous pouvez annuler la signature non publiée à partir de l'interface utilisateur de NSX Manager.