Cargue un paquete de firmas personalizado en el motor de NSX IDS/IPS.

Consideraciones al cargar firmas personalizadas:

  • Al implementar firmas personalizadas para NSX IDS/IPS, asegúrese de que solo incluyan palabras clave compatibles con NSX. Consulte la lista de palabras clave admitidas a continuación.

  • Compruebe que solo se utilicen puertos y grupos de direcciones compatibles en las firmas:

    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"
  • Confirme que el formato del paquete de firmas personalizado que desea cargar es correcto; debe tener una extensión .zip (por ejemplo, reglas_ejemplo.zip). Tenga en cuenta que NSX no realiza un seguimiento de las dependencias de las firmas personalizadas, por lo que deberá asegurarse de que las firmas dependientes se incluyan en el proceso de publicación.

  • Si publica una firma personalizada válida y, posteriormente, la reemplaza por un nuevo paquete que contiene solo firmas personalizadas no válidas, NSX no le permitirá publicar el nuevo paquete. NSX mostrará el mensaje de error: "La anulación de firmas solo se permite para las firmas VÁLIDAS/ADVERTENCIA". Además, cualquier perfil de IDPS actualizado previamente para usar firmas del paquete anterior dejará de ser válido, ya que el nuevo paquete no tiene esas firmas. Si el nuevo paquete contiene firmas personalizadas que también forman parte del paquete anterior, se considerarán firmas existentes y seguirán siendo firmas válidas para los perfiles existentes.

  • Asegúrese de que todas las firmas personalizadas utilicen las palabras clave admitidas. Estas son las palabras clave admitidas:

    sid

    Establece el identificador de regla.

    priority

    Las reglas con mayor prioridad se examinarán primero.

    rev

    Establece la versión de la regla.

    classtype

    Información sobre la clasificación de reglas y alertas.

    app-layer-protocol

    Coincide con el protocolo de capa de aplicaciones detectado.

    tcp.ack

    Comprueba si hay un número de confirmación de TCP específico.

    tcp.seq

    Comprueba si hay un número de secuencia de TCP específico.

    tcp.window

    Comprueba si hay un tamaño de ventana de TCP específico.

    ipopts

    Comprueba si se estableció una opción de IP específica.

    tcp.flags

    Detecta qué marcas se establecen en el encabezado TCP.

    fragbits

    Comprueba si la fragmentación y los bits reservados están establecidos en el encabezado IP.

    fragoffset

    Coincide con valores decimales específicos del campo de desplazamiento de fragmento de IP.

    ttl

    Comprueba si hay un valor de TTL de IP específico.

    tos

    Coincide con los valores decimales específicos del campo ToS del encabezado IP.

    itype

    Coincide con un tipo de ICMP específico.

    icode

    Coincide con el valor del identificador de ICMP específico.

    icmp_id

    Comprueba si hay un identificador de ICMP.

    icmp_seq

    Comprueba si hay un número de secuencia ICMP.

    dsize

    Coincide con el tamaño de la carga útil del paquete.

    flow

    Coincide con la dirección y el estado del flujo.

    threshold

    Controla la frecuencia de alerta de la regla.

    metadata

    Se utiliza para el registro.

    reference

    Dirige a lugares donde se puede encontrar información sobre la regla.

    tag

    Define etiquetas.

    msg

    Información sobre la regla y la posible alerta.

    content

    Coincide con el contenido de la carga útil.

    uricontent

    Palabra clave heredada para buscar coincidencias en el búfer del URI de la solicitud.

    pcre

    Coincide con una expresión regular.

    depth

    Designa cuántos bytes se comprobarán desde el principio de la carga útil.

    startswith

    El patrón debe estar al inicio de un búfer (igual que 'depth:<pattern len>').

    endswith

    Asegúrese de que el contenido anterior coincida exactamente al final del búfer.

    distance

    Indica una relación entre esta palabra clave de contenido y el contenido que la precede.

    within

    Indica que esta coincidencia de contenido tiene que estar a una cierta distancia de la anterior coincidencia de palabra clave de contenido.

    abs_offset

    Designa desde qué byte en la secuencia se buscará una coincidencia.

    offset

    Designa desde qué byte en la carga útil se buscará una coincidencia.

    replace

    Solo se utiliza en modo IPS.

    nocase

    Modifica la coincidencia de contenido para que no se distinga entre mayúsculas y minúsculas.

    fast_pattern

    Fuerza el uso del contenido anterior en el emparejador de varios patrones.

    rawbytes

    Se incluye para que sea compatible con las firmas que lo utilizan.

    byte_test

    Extrae <num of bytes> y realiza una operación seleccionada con <operator> en función del valor <test value> en un determinado <offset>.

    byte_jump

    Permite seleccionar un <num of bytes> de un <offset> y mover el puntero de detección a esa posición.

    sameip

    Comprueba si la dirección IP de origen es la misma que la dirección IP de destino.

    geoip

    Coincide con las direcciones IP de origen, de destino o ambas del tráfico de red, y sabe a qué país/región pertenece la dirección IP.

    ip_proto

    Coincide con el protocolo IP en el encabezado del paquete.

    ftpbounce

    Detecta ataques de rebote de FTP.

    isdataat

    Comprueba si aún hay datos en una parte específica de la carga útil.

    id

    Coincide con un valor de identificador de IP específico.

    rpc

    Coincide con los números de procedimiento de RPC y la versión de RPC.

    flowvar

    Establece una variable de flujo.

    flowint

    Opera en un entero por flujo.

    pktvar

    Define las variables de paquetes.

    noalert

    La regla no generará ninguna alerta.

    flowbits

    Opera en la marca de flujo.

    hostbits

    Opera en la marca de host.

    ipv4-csum

    Comprueba el error de suma de comprobación de IPv4.

    tcpv4-csum

    Comprueba el error de suma de comprobación de TCPv4.

    tcpv6-csum

    Comprueba el error de suma de comprobación de TCPv6.

    udpv4-csum

    Comprueba el error de suma de comprobación de UDPv4.

    udpv6-csum

    Comprueba el error de suma de comprobación de UDPv6.

    icmpv4-csum

    Comprueba el error de suma de comprobación de ICMPv4.

    icmpv6-csum

    Comprueba el error de suma de comprobación de ICMPv6.

    stream_size

    Coincide con la cantidad de bytes de una secuencia.

    detection_filter

    Alerta en cada coincidencia después de alcanzar un umbral.

    dataset

    Empareja búfer pegajoso con conjuntos de datos (experimental).

    datarep

    Opera en conjuntos de datos (experimental).

    decode-event

    Valores y condiciones que ç se detectan al descodificar paquetes individuales.

    gid

    Asigna otro valor de ID a diferentes grupos de firmas.

    nfq_set_mark

    Utiliza NFQUEUE en las reglas de iptables para enviar paquetes a Suricata.

    bsize

    Coincide con la longitud de un búfer.

    tls.version

    Coincide con la versión de TLS/SSL.

    tls.subject

    Coincide con el campo Subject del certificado TLS/SSL.

    tls.issuerdn

    Coincide con el campo IssuerDN del certificado TLS/SSL.

    tls_cert_notbefore

    Coincide con el campo notBefore del certificado TLS.

    tls_cert_notafter

    Coincide con el campo notAfter del certificado TLS.

    tls_cert_expired

    Coincide con los certificados TLS caducados.

    tls_cert_valid

    Coincide con los certificados TLS válidos.

    tls.fingerprint

    Coincide con la huella digital SHA1 del certificado TLS/SSL.

    tls_store

    Almacena el certificado TLS/SSL en el disco.

    http_cookie

    Modificador de contenido para buscar coincidencias solo en el búfer de cookie HTTP.

    http.cookie

    Búfer pegajoso para buscar coincidencias en los búferes de cookie HTTP/Set-Cookie.

    http_method

    Modificador de contenido para buscar coincidencias solo en el búfer de método HTTP.

    http.method

    Búfer pegajoso para buscar coincidencias específicamente y solo en el búfer de método HTTP.

    http.protocol

    Define el búfer pegajoso http_protocol.

    http.start

    Define el búfer pegajoso http_start.

    urilen

    Coincide con la longitud del URI HTTP.

    http_client_body

    Modificador de contenido para buscar coincidencias solo en el cuerpo de la solicitud HTTP.

    http.request_body

    Búfer pegajoso para buscar coincidencias en el búfer del cuerpo de la solicitud HTTP.

    http_server_body

    Modificador de contenido para buscar coincidencias en el cuerpo de la respuesta HTTP.

    http.response_body

    Búfer pegajoso para buscar coincidencias en el búfer del cuerpo de la respuesta HTTP.

    http_header

    Modificador de contenido para buscar coincidencias solo en el búfer de encabezado HTTP.

    http.header

    Búfer pegajoso para buscar coincidencias en el búfer de encabezado HTTP normalizado.

    http.header_names

    Define el búfer pegajoso http_header_names.

    http.accept

    Define el búfer pegajoso http.accept para el encabezado http accept.

    http.accept_lang

    Define el búfer pegajoso http.accept_lang para el encabezado http accept language.

    http.accept_enc

    Define el búfer pegajoso http.accept_enc para el encabezado http accept encoding.

    http.connection

    Define el búfer pegajoso http.connection para el encabezado http connection.

    http.content_len

    Define el búfer pegajoso http.content_len para el encabezado http content length.

    http.content_type

    Define el búfer pegajoso http.content_type para el encabezado http content type.

    http.location

    Define el búfer pegajoso http.location para el encabezado http location.

    http.server

    Define el búfer pegajoso http.server para el encabezado http server.

    http.referer

    Define el búfer pegajoso http.referer para el encabezado http referer.

    http_raw_header

    Modificador de contenido para buscar coincidencias con el búfer de encabezado HTTP sin formato.

    http.header.raw

    Búfer pegajoso para buscar coincidencias con el búfer de encabezado HTTP sin formato.

    http_uri

    Modificador de contenido para buscar coincidencias específicamente y solo en el búfer de URI HTTP.

    http.uri

    Búfer pegajoso para buscar coincidencias específicamente y solo en el búfer de URI HTTP normalizado.

    http.uri.raw

    Búfer pegajoso para buscar coincidencias específicamente y solo en el búfer de URI HTTP sin formato.

    http_raw_uri

    Modificador de contenido para buscar coincidencias en el URI HTTP sin formato.

    http_stat_msg

    Modificador de contenido para buscar coincidencias en stat-msg-buffer HTTP.

    http.stat_msg

    Búfer pegajoso para buscar coincidencias en el mensaje de estado de respuesta HTTP.

    http_stat_code

    Modificador de contenido para buscar coincidencias solo en el búfer http-stat-code.

    http.stat_code

    Búfer pegajoso para buscar coincidencias solo en el búfer http-stat-code.

    http_user_agent

    Modificador de contenido para buscar coincidencias solo en el encabezado HTTP User-Agent.

    http.user_agent

    Búfer pegajoso para buscar coincidencias específicamente y solo en el búfer HTTP User Agent.

    http_host

    Modificador de contenido para buscar coincidencias en el nombre de host HTTP.

    http.host

    Búfer pegajoso para buscar coincidencias en el búfer de host HTTP.

    http_raw_host

    Modificador de contenido para buscar coincidencias en el encabezado de host HTTP o el nombre de host sin formato del URI HTTP.

    http.host.raw

    Búfer pegajoso para buscar coincidencias en el encabezado de host HTTP o el nombre de host sin formato del URI HTTP.

    http.request_line

    Búfer pegajoso para buscar coincidencias en la línea de la solicitud HTTP.

    http.response_line

    Modificador de contenido para buscar coincidencias solo en la línea de la respuesta HTTP.

    nfs_procedure

    Búfer pegajoso para buscar coincidencias con el procedimiento de NFS.

    nfs.version

    Búfer pegajoso para buscar coincidencias con la versión de NFS.

    ssh.proto

    Búfer pegajoso para buscar coincidencias con el protocolo SSH.

    ssh.protoversion

    Búfer pegajoso para buscar coincidencias con la versión del protocolo SSH.

    ssh.software

    Búfer pegajoso para buscar coincidencias con el software de SSH.

    ssh.softwareversion

    Búfer pegajoso para buscar coincidencias con la cadena de software de SSH.

    ssl_version

    Búfer pegajoso para buscar coincidencias con la versión del registro SSL/TLS.

    ssl_state

    Búfer pegajoso para buscar coincidencias con el estado de la conexión SSL.

    byte_extract

    Extrae <num of bytes> en un determinado <offset> y lo guarda en <var_name>.

    file.data

    Hace que las palabras clave de contenido coincidan en los datos del archivo.

    pkt_data

    Restablece el puntero de detección al principio de la carga útil del paquete.

    app-layer-event

    Coincide con los eventos generados por los analizadores de capa de aplicaciones y el motor de detección de protocolos.

    dcerpc.iface

    Coincide con el valor del UUID de la interfaz en un encabezado DCERPC.

    dcerpc.opnum

    Coincide con uno o varios números de operación y/o rango de números de operación dentro de la interfaz en un encabezado DCERPC.

    dcerpc.stub_data

    Coincide con los datos de código auxiliar en un paquete DCERPC determinado. Es un 'búfer pegajoso'.

    smb.named_pipe

    Búfer pegajoso para buscar coincidencias en la canalización con nombre SMB en la conexión de árbol.

    smb.share

    Búfer pegajoso para buscar coincidencias en el nombre compartido SMB en la conexión de árbol.

    asn1

    Es una notación estándar para estructurar y describir datos.

    engine-event

    Un registro de un evento de detección en el sistema de detección de intrusiones de Suricata.

    stream-event

    Reglas para la coincidencia en eventos del motor de flujo TCP.

    filename

    Coincide con el nombre del archivo.

    file.name

    Búfer pegajoso para buscar coincidencias con el nombre de archivo.

    fileext

    Coincide con la extensión de un nombre de archivo.

    filestore

    Almacena archivos en el disco si la regla coincide.

    filemagic

    Coincide con la información que libmagic devuelve sobre un archivo.

    file.magic

    Búfer pegajoso para buscar coincidencias con file magic.

    filemd5

    Coincide el archivo MD5 con la lista de sumas de comprobación MD5.

    filesha1

    Busca coincidencias entre el archivo SHA-1 y la lista de sumas de comprobación SHA-1.

    filesha256

    Busca coincidencias entre el archivo SHA-256 y la lista de sumas de comprobación SHA-256.

    filesize

    Coincide con el tamaño del archivo mientras se está transfiriendo.

    l3_proto

    Especifica si la firma debe coincidir en IPv4, IPv6 o ambos.

    lua

    Busca coincidencias usando un script lua.

    iprep

    Coincide con la información de reputación de IP de un host.

    dns.query

    Búfer pegajoso para buscar coincidencias con el búfer de consulta de DNS.

    dns.opcode

    Coincide con la marca de código de operación del encabezado DNS.

    tls.sni

    Modificador de contenido para buscar coincidencias específicamente y solo en el búfer de SNI de TLS.

    tls.certs

    Modificador de contenido para buscar coincidencias con el búfer pegajoso del certificado TLS.

    tls.cert_issuer

    Modificador de contenido para buscar coincidencias específicamente y solo en el búfer del emisor del certificado TLS.

    tls.cert_subject

    Modificador de contenido para buscar coincidencias específicamente y solo en el búfer del firmante del certificado TLS.

    tls.cert_serial

    Modificador de contenido para buscar coincidencias con el búfer serie del certificado TLS.

    tls.cert_fingerprint

    Coincide con el búfer de huella digital del certificado TLS.

    ja3.hash

    Modificador de contenido para buscar coincidencias con el búfer de hash JA3.

    ja3.string

    Modificador de contenido para buscar coincidencias con el búfer de cadena JA3.

    ja3s.hash

    Modificador de contenido para buscar coincidencias con el búfer pegajoso de hash JA3S.

    ja3s.string

    Modificador de contenido para buscar coincidencias con el búfer pegajoso de cadena JA3S.

    modbus

    Coincide con varias propiedades de las solicitudes Modbus.

    cip_service

    Coincide con el servicio CIP.

    enip_command

    Reglas para detectar el comando EtherNet/IP.

    dnp3.data

    Configure las siguientes opciones de contenido para buscar coincidencias en el búfer de la aplicación reensamblada.

    dnp3_func

    Coincide con el código de función de aplicación que se encuentra en la solicitud y las respuestas de DNP3.

    dnp3_ind

    Coincide con los indicadores internos de DNP3 en el encabezado de la aplicación de respuesta.

    dnp3_obj

    Coincide con los objetos de datos de la aplicación DNP3.

    xbits

    Opera en bits.

    base64_decode

    Descodifica los datos codificados en base64.

    base64_data

    El contenido coincide con los datos descodificados en base64.

    krb5_err_code

    Coincide con el código de error de Kerberos 5.

    krb5_msg_type

    Coincide con el tipo de mensaje de Kerberos 5.

    krb5.cname

    Búfer pegajoso para buscar coincidencias con el nombre del cliente Kerberos 5.

    krb5.sname

    Búfer pegajoso para buscar coincidencias en el nombre del servidor Kerberos 5.

    sip.method

    Búfer pegajoso para buscar coincidencias en el búfer del método SIP.

    sip.uri

    Búfer pegajoso para buscar coincidencias con el URI de SIP.

    sip.protocol

    Búfer pegajoso para buscar coincidencias con el protocolo SIP.

    sip.stat_code

    Búfer pegajoso para buscar coincidencias con el código de estado de SIP.

    sip.stat_msg

    Búfer pegajoso para buscar coincidencias en el mensaje de estado de SIP.

    sip.request_line

    Búfer pegajoso para buscar coincidencias en la línea de la solicitud SIP.

    sip.response_line

    Búfer pegajoso para buscar coincidencias en la línea de respuesta de SIP.

    template2

    Plantilla.

    ipv4.hdr

    Búfer pegajoso para buscar coincidencias en el encabezado IPv4.

    ipv6.hdr

    Búfer pegajoso para buscar coincidencias en el encabezado IPv6.

    tcp.hdr

    Búfer pegajoso para buscar coincidencias en el encabezado TCP.

    udp.hdr

    Búfer pegajoso para buscar coincidencias en el encabezado UDP.

    tcp.mss

    Búfer pegajoso para buscar coincidencias en el campo de opción MSS de TCP.

    ftpdata_command

    Coincide con el comando FTP que activa un canal de datos FTP.

    target

    Indica al módulo de salida qué lado es el objetivo del ataque.

    snmp.version

    Coincide con la versión de SNMP.

    snmp.community

    Modificador de contenido SNMP para buscar coincidencias en la comunidad SNMP.

    snmp.pdu_type

    Coincide con el tipo PDU de SNMP.

    bypass

    Llama a la devolución de llamada de omisión cuando se haya completado la coincidencia de un SIG.

    prefilter

    Fuerza el uso de una condición como prefiltro.

    compress_whitespace

    Modifica el búfer para comprimir los caracteres de espacio en blanco consecutivos en uno solo antes de la inspección.

    strip_whitespace

    Modifica el búfer para quitar espacios en blanco antes de la inspección.

    to_md5

    Convierte al hash MD5 del búfer.

    to_sha1

    Convierta al hash SHA1 del búfer.

    to_sha256

    Convierta al hash SHA256 del búfer.

    dotprefix

    Modifica el búfer para extraer dotprefix.

    nopcap

    Evita que el contenido de PCAP se recorte desde los flujos tras las alertas.

Procedimiento

  1. En NSX Manager vaya a Seguridad > IDS/IPS y Malware Prevention (en la sección Administración de directivas).
  2. En la página IDS/IPS y Malware Prevention, vaya a la pestaña Administración y seleccione Firmas personalizadas.
  3. Haga clic en Agregar y elija la opción Cargar desde archivo.
  4. Si cargó previamente un paquete de firmas, tenga en cuenta que todas las firmas se reemplazarán por el nuevo paquete que va a cargar. Por lo tanto, exporte el paquete existente a su equipo, actualícelo con las nuevas firmas y, a continuación, cargue el paquete modificado.
  5. Si va a cargar un paquete de firmas personalizado por primera vez, en la ventana Definir nuevo conjunto de firmas, introduzca un nombre de firma y seleccione un paquete de firmas navegando hasta la ubicación en el equipo. Haga clic en Validar.
  6. Antes de publicar las firmas, tenga en cuenta que solo las firmas de advertencia válidas y seleccionadas explícitamente se publican en los nodos de transporte y las instancias de NSX Edge.
    Nota:

    Las firmas no válidas y las firmas de advertencia sin seleccionar no se publican en los nodos de transporte ni en las instancias de NSX Edge.

  7. Haga clic en Publicar. Un nuevo paquete de firmas que aún no esté publicado puede revertirse y puede conservar las firmas existentes. Puede revertir las firmas sin publicar desde la interfaz de usuario de NSX Manager.