Caricare un bundle di firme personalizzate nel motore IDS/IPS di NSX.

Considerazioni sul caricamento delle firme personalizzate:

  • Quando si distribuiscono firme personalizzate per NSX IDS/IPS, assicurarsi che includano solo parole chiave supportate compatibili con NSX. Fare riferimento all'elenco delle parole chiave supportate di seguito.

  • Verificare che nelle firme vengano utilizzati solo gruppi di indirizzi e porte supportati:

    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"
  • Verificare che il formato del bundle delle firme personalizzate che si intende caricare sia corretto. Deve avere l'estensione .zip (ad esempio, sample_rules.zip). Si tenga presente che NSX non monitora le dipendenze per le firme personalizzate. Assicurarsi quindi che tutte le firme dipendenti siano incluse nel processo di pubblicazione.

  • Se si pubblica una firma personalizzata valida e successivamente la si sostituisce con un nuovo bundle che contiene solo firme personalizzate non valide, NSX non consente di pubblicare il nuovo bundle. In NSX viene visualizzato il messaggio di errore: "La firma sostituita è consentita solo per la firma con stato VALIDA o ATTENZIONE". Inoltre, tutti i profili IDPS aggiornati in precedenza per utilizzare le firme del bundle precedente non saranno più validi perché il nuovo bundle non dispone di tali estensioni. Se il nuovo bundle contiene firme personalizzate che fanno parte anche del bundle precedente, verranno visualizzate come firme esistenti e rimarranno firme valide per i profili esistenti.

  • Assicurarsi che tutte le firme personalizzate utilizzino le parole chiave supportate. Di seguito è disponibile l'elenco delle parole chiave supportate:

    sid

    Imposta l'ID regola.

    priority

    Le regole con priorità più alta verranno esaminate per prime.

    rev

    Imposta la versione della regola.

    classtype

    Informazioni sulla classificazione delle regole e degli avvisi.

    app-layer-protocol

    Stabilisce la corrispondenza in base al protocollo app-layer rilevato.

    tcp.ack

    Verifica la presenza di un numero di conferma TCP specifico.

    tcp.seq

    Verifica la presenza di un numero di sequenza TCP specifico.

    tcp.window

    Verifica la presenza di dimensioni specifiche della finestra TCP.

    ipopts

    Controlla se è impostata un'opzione IP specifica.

    tcp.flags

    Rileva quali flag sono impostati nell'intestazione TCP.

    fragbits

    Verifica se i bit di frammentazione e riservati sono impostati nell'intestazione IP.

    fragoffset

    Stabilisce la corrispondenza in base a valori decimali specifici del campo di offset del frammento IP.

    ttl

    Verifica la presenza di un valore Time-To-Live dell'IP specifico.

    tos

    Stabilisce la corrispondenza in base a valori decimali specifici del campo TOS dell'intestazione IP.

    itype

    Stabilisce la corrispondenza in base a un tipo di ICMP specifico.

    icode

    Stabilisce la corrispondenza in base a un valore di ID ICMP specifico.

    icmp_id

    Verifica la presenza di un ID ICMP.

    icmp_seq

    Verifica la presenza di un numero di sequenza ICMP.

    dsize

    Stabilisce la corrispondenza in base alle dimensioni del payload del pacchetto.

    flow

    Stabilisce la corrispondenza in base alla direzione e allo stato del flusso.

    threshold

    Controlla la frequenza di avviso della regola.

    metadata

    Utilizzata per la registrazione.

    reference

    Indirizza alle posizioni in cui è possibile trovare informazioni sulla regola.

    tag

    Definisce i tag.

    msg

    Informazioni sulla regola e sull'avviso possibile.

    content

    Stabilisce la corrispondenza in base ai contenuti del payload.

    uricontent

    Parola chiave legacy per stabilire la corrispondenza in base al buffer dell'URI della richiesta.

    pcre

    Stabilisce la corrispondenza in base all'espressione regolare.

    depth

    Indica quanti byte verranno controllati dall'inizio del payload.

    startswith

    Il modello deve essere all'inizio di un buffer (uguale a "depth:<pattern len>").

    endswith

    Verifica che il contenuto precedente corrisponda esattamente alla fine del buffer.

    distance

    Indica una relazione tra questa parola chiave del contenuto e il contenuto che la precede.

    within

    Indica che la corrispondenza di questo contenuto deve essere entro una determinata distanza dalla corrispondenza della parola chiave del contenuto precedente.

    abs_offset

    Indica da quale byte del flusso verrà eseguito il controllo per trovare una corrispondenza.

    offset

    Indica da quale byte del payload verrà eseguito il controllo per trovare una corrispondenza.

    replace

    Può essere utilizzata solo in modalità IPS.

    nocase

    Modifica la corrispondenza del contenuto in modo che non faccia distinzione tra maiuscole e minuscole.

    fast_pattern

    Forza l'utilizzo del contenuto precedente nel matcher con più modelli.

    rawbytes

    Inclusa per la compatibilità con le firme che la utilizzano.

    byte_test

    Estrae <num of bytes> ed esegue un'operazione selezionata con <operator> rispetto al valore in <test value> in un determinato <offset>.

    byte_jump

    Consente di selezionare un <num of bytes> da un <offset> e spostare il puntatore di rilevamento in tale posizione.

    sameip

    Verifica che l'indirizzo IP dell'origine sia uguale all'indirizzo IP della destinazione.

    geoip

    Stabilisce la corrispondenza in base all'indirizzo IP di origine, all'indirizzo IP di destinazione oppure agli indirizzi IP di origine e destinazione del traffico di rete e indica a quale paese/area geografica appartiene l'indirizzo IP.

    ip_proto

    Stabilisce la corrispondenza in base al protocollo IP nell'intestazione del pacchetto.

    ftpbounce

    Rileva gli attacchi bounce dell'FTP.

    isdataat

    Verifica se sono ancora presenti dati in una parte specifica del payload.

    id

    Stabilisce la corrispondenza in base a un valore ID IP specifico.

    rpc

    Stabilisce la corrispondenza in base ai numeri della procedura RPC e alla versione di RPC.

    flowvar

    Imposta una variabile di flusso.

    flowint

    Opera su un numero intero per flusso.

    pktvar

    Definisce le variabili dei pacchetti.

    noalert

    La regola non genererà alcun avviso.

    flowbits

    Opera sul flag del flusso.

    hostbits

    Opera sul flag dell'host.

    ipv4-csum

    Controlla l'errore di checksum IPv4.

    tcpv4-csum

    Controlla l'errore di checksum TCPv4.

    tcpv6-csum

    Controlla l'errore di checksum TCPv6.

    udpv4-csum

    Controlla l'errore di checksum UDPv4.

    udpv6-csum

    Controlla l'errore di checksum UDPv6.

    icmpv4-csum

    Controlla l'errore di checksum ICMPv4.

    icmpv6-csum

    Controlla l'errore di checksum ICMPv6.

    stream_size

    Stabilisce la corrispondenza in base alla quantità di byte di un flusso.

    detection_filter

    Genera un avviso relativo a ogni corrispondenza dopo il raggiungimento di una soglia.

    dataset

    Confronta il buffer sticky con i set di dati (sperimentale).

    datarep

    Opera sui set di dati (sperimentale).

    decode-event

    Valori e condizioni rilevati durante la decodifica di singoli pacchetti.

    gid

    Assegna a gruppi di firme diversi un altro valore ID.

    nfq_set_mark

    Utilizza NFQUEUE nelle regole iptables per inviare pacchetti a Suricata.

    bsize

    Stabilisce la corrispondenza in base alla lunghezza di un buffer.

    tls.version

    Stabilisce la corrispondenza in base alla versione di TLS/SSL.

    tls.subject

    Restituisce il campo Oggetto del certificato TLS/SSL.

    tls.issuerdn

    Restituisce il campo DN emottente del certificato TLS/SSL.

    tls_cert_notbefore

    Restituisce il campo notBefore del certificato TLS.

    tls_cert_notafter

    Restituisce il campo notAfter del certificato TLS.

    tls_cert_expired

    Restituisce i certificati TLS scaduti.

    tls_cert_valid

    Restituisce i certificati TLS validi.

    tls.fingerprint

    Restituisce l'impronta digitale SHA1 del certificato TLS/SSL.

    tls_store

    Archiviare il certificato TLS/SSL nel disco.

    http_cookie

    Modificatore di contenuti per la corrispondenza solo in base al buffer HTTP Cookie.

    http.cookie

    Buffer sticky per la corrispondenza solo in base ai buffer HTTP Cookie e set-cookie.

    http_method

    Modificatore di contenuti per la corrispondenza solo in base a method-buffer HTTP.

    http.method

    Buffer sticky per la corrispondenza in modo specifico e solo in base a method-buffer HTTP.

    http.protocol

    Definisce il buffer sticky http_protocol.

    http.start

    Definisce il buffer sticky http_start.

    urilen

    Stabilisce la corrispondenza in base alla lunghezza dell'URI HTTP.

    http_client_body

    Modificatore di contenuti per la corrispondenza solo in base al corpo della richiesta HTTP.

    http.request_body

    Buffer sticky per la corrispondenza con il buffer del corpo della richiesta HTTP.

    http_server_body

    Modificatore di contenuti per la corrispondenza in base al corpo della risposta HTTP.

    http.response_body

    Buffer sticky per la corrispondenza con il buffer del corpo della risposta HTTP.

    http_header

    Modificatore di contenuti per la corrispondenza solo in base al buffer dell'intestazione HTTP.

    http.header

    Buffer sticky per la corrispondenza in base al buffer dell'intestazione HTTP normalizzato.

    http.header_names

    Definisce il buffer sticky http_header_names.

    http.accept

    Definisce il buffer sticky http.accept per l'intestazione dell'accettazione HTTP.

    http.accept_lang

    Definisce il buffer sticky http.accept_lang per l'intestazione del linguaggio di accettazione HTTP.

    http.accept_enc

    Definisce il buffer sticky http.accept_enc per l'intestazione della codifica di accettazione HTTP.

    http.connection

    Definisce il buffer sticky http.connection per l'intestazione della connessione HTTP.

    http.content_len

    Definisce il buffer sticky http.content_len per l'intestazione della lunghezza del contenuto HTTP.

    http.content_type

    Definisce il buffer sticky http.content_type per l'intestazione del tipo di contenuto HTTP.

    http.location

    Definisce il buffer sticky http.location per l'intestazione della posizione HTTP.

    http.server

    Definisce il buffer sticky http.server per l'intestazione del server HTTP.

    http.referer

    Definisce il buffer sticky http.referer per l'intestazione del referer HTTP.

    http_raw_header

    Modificatore di contenuti per la corrispondenza con il buffer dell'intestazione HTTP non elaborata.

    http.header.raw

    Buffer sticky per la corrispondenza con il buffer dell'intestazione HTTP non elaborata.

    http_uri

    Modificatore di contenuti per la corrispondenza in modo specifico e solo in base al buffer dell'URI HTTP.

    http.uri

    Buffer sticky per la corrispondenza in modo specifico e solo in base al buffer dell'URI HTTP normalizzato.

    http.uri.raw

    Buffer sticky per la corrispondenza in modo specifico e solo in base al buffer dell'URI HTTP non elaborato.

    http_raw_uri

    Modificatore di contenuti per la corrispondenza in base all'URI HTTP non elaborato.

    http_stat_msg

    Modificatore di contenuti per la corrispondenza in base a stat-msg-buffer HTTP.

    http.stat_msg

    Buffer sticky per la corrispondenza in base al messaggio di stato della risposta HTTP.

    http_stat_code

    Modificatore di contenuti per la corrispondenza solo in base a stat-code-buffer HTTP.

    http.stat_code

    Buffer sticky per la corrispondenza solo in base a stat-code-buffer HTTP.

    http_user_agent

    Modificatore di contenuti per la corrispondenza solo in base all'intestazione User-Agent HTTP.

    http.user_agent

    Buffer sticky per la corrispondenza in modo specifico e solo in base al buffer User-Agent HTTP.

    http_host

    Modificatore di contenuti per la corrispondenza in base al nome host HTTP.

    http.host

    Buffer sticky per la corrispondenza in base al buffer dell'host HTTP.

    http_raw_host

    Modificatore di contenuti per la corrispondenza in base all'intestazione dell'host HTTP o al nome host raw dell'URI HTTP.

    http.host.raw

    Buffer sticky per la corrispondenza in base all'intestazione dell'host HTTP o al nome host raw dell'URI HTTP.

    http.request_line

    Buffer sticky per la corrispondenza in base alla riga della richiesta HTTP.

    http.response_line

    Modificatore di contenuti per la corrispondenza solo in base alla riga della risposta HTTP.

    nfs_procedure

    Buffer sticky per stabilire la corrispondenza con la procedura NFS.

    nfs.version

    Buffer sticky per stabilire la corrispondenza con la versione NFS.

    ssh.proto

    Buffer sticky per stabilire la corrispondenza con il protocollo SSH.

    ssh.protoversion

    Buffer sticky per stabilire la corrispondenza con la versione del protocollo SSH.

    ssh.software

    Buffer sticky per stabilire la corrispondenza con il software SSH.

    ssh.softwareversion

    Buffer sticky per stabilire la corrispondenza con la stringa del software SSH.

    ssl_version

    Buffer sticky per stabilire la corrispondenza con la versione del record SSL/TLS.

    ssl_state

    Buffer sticky per stabilire la corrispondenza con lo stato della connessione SSL.

    byte_extract

    Estrae <num of bytes> in un determinato <offset> e lo archivia in <var_name>.

    file.data

    Rende le parole chiave dei contenuti corrispondenti ai dati del file.

    pkt_data

    Reimposta il puntatore di rilevamento all'inizio del payload del pacchetto.

    app-layer-event

    Stabilisce la corrispondenza in base agli eventi generati dai parser del livello app e dal motore di rilevamento del protocollo.

    dcerpc.iface

    Stabilisce la corrispondenza in base al valore dell'UUID dell'interfaccia in un'intestazione DCERPC.

    dcerpc.opnum

    Stabilisce la corrispondenza in base a uno o più numeri di operazione e/o intervalli di numeri di operazione nell'interfaccia in un'intestazione DCERPC.

    dcerpc.stub_data

    Stabilisce la corrispondenza in base ai dati stub in un determinato pacchetto DCERPC. Si tratta di un "buffer sticky".

    smb.named_pipe

    Buffer sticky per stabilire la corrispondenza in base alla named pipe SMB nella connessione albero.

    smb.share

    Buffer sticky per stabilire la corrispondenza in base al nome della condivisione SMB nella connessione albero.

    asn1

    È una notazione standard per strutturare e descrivere i dati.

    engine-event

    Record di un evento di rilevamento nel sistema di rilevamento delle intrusioni Suricata.

    stream-event

    Regole per la corrispondenza in base agli eventi del motore di flusso TCP.

    filename

    Stabilisce la corrispondenza in base al nome del file.

    file.name

    Buffer sticky per stabilire la corrispondenza in base al nome del file.

    fileext

    Stabilisce la corrispondenza in base all'estensione di un nome di file.

    filestore

    Archivia i file nel disco se la regola viene soddisfatta.

    filemagic

    Stabilisce la corrispondenza in base alle informazioni restituite da libmagic su un file.

    file.magic

    Buffer sticky per stabilire la corrispondenza in base al file magic.

    filemd5

    Stabilisce la corrispondenza del file MD5 in base a un elenco di checksum MD5.

    filesha1

    Stabilisce la corrispondenza del file SHA-1 in base a un elenco di checksum SHA-1.

    filesha256

    Stabilisce la corrispondenza del file SHA-256 in base a un elenco di checksum SHA-256.

    filesize

    Stabilisce la corrispondenza in base alle dimensioni del file mentre è in corso di trasferimento.

    l3_proto

    Specifica se la firma deve corrispondere in base a IPv4, IPv6 o entrambi.

    lua

    Stabilisce la corrispondenza utilizzando uno script lua.

    iprep

    Stabilisce la corrispondenza in base alle informazioni di reputazione IP per un host.

    dns.query

    Buffer sticky per stabilire la corrispondenza con query-buffer DNS.

    dns.opcode

    Stabilisce la corrispondenza con il flag opcode dell'intestazione DNS.

    tls.sni

    Modificatore di contenuti da abbinare in modo specifico e solo nel buffer SNI TLS.

    tls.certs

    Modificatore di contenuti per la corrispondenza in base al buffer sticky del certificato TLS.

    tls.cert_issuer

    Modificatore di contenuti per la corrispondenza in modo specifico e solo in base al buffer dell'emittente del certificato TLS.

    tls.cert_subject

    Modificatore di contenuti per la corrispondenza in modo specifico e solo in base al buffer dell'oggetto del certificato TLS.

    tls.cert_serial

    Modificatore di contenuti per la corrispondenza in base al buffer seriale del certificato TLS.

    tls.cert_fingerprint

    Stabilisce la corrispondenza in base al buffer dell'impronta digitale del certificato TLS.

    ja3.hash

    Modificatore di contenuti per la corrispondenza con il buffer dell'hash JA3.

    ja3.string

    Modificatore di contenuti per la corrispondenza con il buffer della stringa JA3.

    ja3s.hash

    Modificatore di contenuti per la corrispondenza con il buffer sticky dell'hash JA3S.

    ja3s.string

    Modificatore di contenuti per la corrispondenza con il buffer sticky della stringa JA3S.

    modbus

    Stabilisce la corrispondenza in base a varie proprietà delle richieste Modbus.

    cip_service

    Stabilisce la corrispondenza in base al servizio CIP.

    enip_command

    Regole per il rilevamento del comando EtherNet/IP.

    dnp3.data

    Crea le opzioni di contenuto seguenti per stabilire la corrispondenza in base al buffer dell'applicazione riassemblata.

    dnp3_func

    Stabilisce la corrispondenza in base al codice funzione dell'applicazione trovato nella richiesta e nelle risposte DNP3.

    dnp3_ind

    Stabilisce la corrispondenza in base ai flag degli indicatori interni DNP3 nell'intestazione dell'applicazione di risposta.

    dnp3_obj

    Stabilisce la corrispondenza in base agli oggetti dati dell'applicazione DNP3.

    xbits

    Opera in base ai bit.

    base64_decode

    Decodifica i dati con codifica Base64.

    base64_data

    Il contenuto corrisponde ai dati con codifica Base64.

    krb5_err_code

    Stabilisce la corrispondenza con il codice di errore Kerberos 5.

    krb5_msg_type

    Stabilisce la corrispondenza con il tipo di messaggio Kerberos 5.

    krb5.cname

    Buffer sticky per stabilire la corrispondenza in base al nome del client Kerberos 5.

    krb5.sname

    Buffer sticky per stabilire la corrispondenza in base al nome del server Kerberos 5.

    sip.method

    Buffer sticky per stabilire la corrispondenza in base al buffer del metodo SIP.

    sip.uri

    Buffer sticky per stabilire la corrispondenza in base all'URI SIP.

    sip.protocol

    Buffer sticky per stabilire la corrispondenza in base al protocollo SIP.

    sip.stat_code

    Buffer sticky per stabilire la corrispondenza in base al codice di stato SIP.

    sip.stat_msg

    Buffer sticky per stabilire la corrispondenza in base al messaggio di stato SIP.

    sip.request_line

    Buffer sticky per stabilire la corrispondenza in base alla riga della richiesta SIP.

    sip.response_line

    Buffer sticky per stabilire la corrispondenza in base alla riga della risposta SIP.

    template2

    Modello.

    ipv4.hdr

    Buffer sticky per stabilire la corrispondenza in base all'intestazione IPv4.

    ipv6.hdr

    Buffer sticky per stabilire la corrispondenza in base all'intestazione IPv6.

    tcp.hdr

    Buffer sticky per stabilire la corrispondenza in base all'intestazione TCP.

    udp.hdr

    Buffer sticky per stabilire la corrispondenza in base all'intestazione UDP.

    tcp.mss

    Buffer sticky per stabilire la corrispondenza in base al campo dell'opzione TCP MSS.

    ftpdata_command

    Stabilisce la corrispondenza con il comando FTP che attiva un canale dati FTP.

    target

    Indica al modulo di output quale lato è la destinazione dell'attacco.

    snmp.version

    Stabilisce la corrispondenza con la versione di SNMP.

    snmp.community

    Modificatore di contenuti SNMP per la corrispondenza in base alla community SNMP.

    snmp.pdu_type

    Stabilisce la corrispondenza con il tipo PDU SNMP.

    bypass

    Chiama il callback bypass quando la corrispondenza di un sig è completa.

    prefilter

    Forza l'utilizzo di una condizione come prefiltro.

    compress_whitespace

    Modifica il buffer per comprimere gli spazi vuoti consecutivi in un singolo spazio vuoto prima dell'ispezione.

    strip_whitespace

    Modifica il buffer per eseguire lo striping dello spazio vuoto prima dell'ispezione.

    to_md5

    Converte l'hash del buffer in md5.

    to_sha1

    Converte l'hash del buffer in sha1.

    to_sha256

    Converte l'hash del buffer in sha256.

    dotprefix

    Modifica il buffer per estrarre dotprefix.

    nopcap

    Evita lo snipping del contenuto di pcap dai flussi quando vengono visualizzati avvisi.

Procedura

  1. Da NSX Manager passare a Sicurezza > IDS/IPS e Malware Prevention (nella sezione Gestione criteri).
  2. Nella pagina IDS/IPS e Malware Prevention passare alla scheda Gestione delle firme e selezionare Firme personalizzate.
  3. Fare clic su Aggiungi e scegliere l'opzione Carica da file.
  4. Se in precedenza è stato caricato un bundle di firme, si tenga presente che tutte le firme verranno sostituite dal nuovo bundle che si sta per caricare. Pertanto, esportare il bundle esistente nel computer in uso, aggiornarlo con le nuove firme e quindi caricare il bundle modificato.
  5. Se si sta caricando un bundle di firme personalizzate per la prima volta, nella finestra Definisci nuovo set di firme immettere un nome per la firma e selezionare un bundle di firme passando alla posizione del bundle di firme nel computer in uso. Fare clic su Convalida.
  6. Prima di pubblicare le firme, si tenga presente che solo le firme con stato Valida e le firme con stato Attenzione selezionate esplicitamente vengono pubblicate nei nodi di trasporto e negli NSX Edge.
    Nota:

    Le firme non valide e le firme con stato Attenzione non selezionate non vengono pubblicate nei nodi di trasporto e negli NSX Edge.

  7. Fare clic su Pubblica. Un nuovo bundle di firme non ancora pubblicato può comunque essere ripristinato e può mantenere le firme esistenti. È possibile ripristinare una firma non pubblicata dall'interfaccia utente di NSX Manager.