Configurar IDS de Cloud

Usa estas instrucciones para configurar IDS de Cloud para tu aplicación. Para obtener información conceptual sobre IDS de Cloud, consulta la descripción general de IDS de Cloud.

Antes de comenzar

Antes de configurar Cloud IDS, debes cumplir con los siguientes requisitos.

Configura los permisos de IAM para Cloud IDS

Cloud IDS tiene varios roles de Identity and Access Management (IAM). Puedes usar los comandos de ejemplo para otorgar a una principal los permisos de IAM necesarios.

  • Rol de administrador de IDS de Cloud (roles/ids.admin). Los principales del proyecto con este rol pueden crear extremos de IDS. Si eres propietario de un proyecto, ya tienes este permiso y no necesitas un rol ids.admin explícito para crear extremos de IDS.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.admin \
       --member=user:USER_NAME ;
    

    Este rol habilita las siguientes operaciones:

    • Crear extremo
    • Borrar extremo
    • Obtener extremo
    • Extremo de lista
  • Rol de visor de IDS de Cloud (roles/ids.viewer). Los usuarios con este rol y los directores del proyecto tienen acceso de solo lectura a los extremos de IDS. Si eres propietario, editor o lector del proyecto, ya tienes este permiso.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/ids.viewer \
       --member=user:USER_NAME ;
    
  • Rol de usuario de duplicación de paquetes de Compute (roles/compute.packetMirroringUser). Es un rol necesario para adjuntar una política de duplicación de paquetes al extremo del IDS. Si tienes el rol compute.securityAdmin o container.serviceAgent, ya tienes este permiso. Para obtener más información sobre este rol, consulta la referencia de roles básicos y predefinidos de IAM.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/compute.packetMirroringUser \
       --member=user:USER_NAME ;
    
  • Función de visor de registros (roles/logging.viewer). Es un rol adicional necesario para ver las amenazas recientes, que es una función principal y fundamental del IDS de Cloud. Para obtener más información sobre este rol, consulta la Guía de control de acceso.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --role=roles/logging.viewer \
       --member=user:USER_NAME ;
    

Además, necesitas los siguientes permisos misceláneos:

  • compute.regions.list
  • compute.zones.list

Configura el acceso privado a servicios

Para crear extremos de IDS, debes habilitar la API de Service Networking y configurar el intercambio de tráfico entre redes de la red de nube privada virtual (VPC). Esto solo se debe hacer una vez por proyecto del cliente y se puede hacer con la consola de Google Cloud o Google Cloud CLI. Cuando asignas un rango de direcciones IP, este debe ser un rango de direcciones IP privadas que cumpla con el RFC 1918 (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16), o bien fallará la creación del extremo.

Sigue estos pasos para configurar el acceso a servicios privados:

  1. Habilita la API de Service Networking con el siguiente comando. Reemplaza PROJECT_ID por el ID del proyecto.

    gcloud services enable servicenetworking.googleapis.com \
     --project=PROJECT_ID
    
  2. Si aún no asignaste un rango de direcciones IP en tu red, debes asignar un rango de IP para los servicios de Google en tu red de VPC. En el siguiente comando, puedes omitir el campo addresses yGoogle Cloud selecciona un rango de direcciones sin usar en tu red de VPC:

    gcloud compute addresses create RESERVED_RANGE_NAME \
      --global \
      --purpose=VPC_PEERING \
      --addresses=192.168.0.0 \
      --prefix-length=16 \
      --description="DESCRIPTION" \
      --network=VPC_NETWORK
    

    Reemplaza lo siguiente:

    • RESERVED_RANGE_NAME: Es un nombre para el rango asignado, como my-allocated-range.

    • DESCRIPTION: Una descripción para el rango, como allocated for my-service

    • VPC_NETWORK: Es el nombre de tu red de VPC, como my-vpc-network.

  3. Crear una conexión privada a un productor de servicios La conexión privada establece una conexión de intercambio de tráfico de red de VPC entre tu red de VPC y la red del productor de servicios.

    Si ya tienes una conexión privada existente, usa el comando gcloud services vpc-peerings update para actualizarla:

    gcloud services vpc-peerings update \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Si aún no tienes una conexión privada, usa el comando gcloud services vpc-peerings connect. Este comando inicia una operación de larga duración que muestra un nombre de operación.

    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --ranges=RESERVED_RANGE_NAME \
      --network=VPC_NETWORK \
      --project=PROJECT_ID
    

    Reemplaza lo siguiente:

    • RESERVED_RANGE_NAME: Es el nombre de uno o más rangos asignados.

    • VPC_NETWORK: Es el nombre de tu red de VPC.

    • PROJECT_ID: Es el ID del proyecto que contiene tu red de VPC.

    Para verificar si la operación se realizó de forma correcta, usa el comando gcloud services vpc-peerings operations describe:

    gcloud services vpc-peerings operations describe \
        --name=OPERATION_NAME
    

    Reemplaza OPERATION_NAME por el nombre de la operación que se mostró en el paso anterior.

Repite los pasos 2 y 3 para cada red de VPC que quieras supervisar.

Habilita los Controles del servicio de VPC (opcional)

Una vez habilitado el acceso privado a servicios, puedes habilitar los Controles del servicio de VPC en Cloud IDS. Si está habilitado, ejecuta el comando services vpc-peerings enable-vpc-service-controls para habilitar los Controles del servicio de VPC para todas tus conexiones de intercambio de tráfico:

gcloud services vpc-peerings enable-vpc-service-controls \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK \
    --project=PROJECT_ID

Reemplaza lo siguiente:

  • VPC_NETWORK es el nombre de tu red de VPC.

  • PROJECT_ID: Es el ID del proyecto que contiene tu red de VPC.

Crea un extremo del IDS de Cloud

Te recomendamos que crees un extremo de IDS para cada región en la que hayas implementado cargas de trabajo. También puedes crear varios extremos de IDS por región. Sigue los pasos que se indican a continuación para crear un extremo de IDS y asignarle un perfil de servicio de IDS.

Console

  1. En la consola de Google Cloud, ve a Extremos de IDS.

    Ir a Extremos de IDS

Configura el extremo:

  1. Haz clic en Crear extremo.
  2. Ingresa un nombre en el campo Nombre del extremo.
  3. Opcional: Ingresa una descripción en el campo Descripción.
  4. Haz clic en la lista desplegable Red y selecciona la red que deseas que IDS de Cloud inspeccione.
  5. Elige la región y la zona de tu red o subred en las listas desplegables Región y Zona.
  6. Haz clic en Continuar.

Selecciona el perfil de servicio de Cloud IDS:

  1. Haz clic en Seleccionar perfil de servicio de IDS.
  2. En Nivel mínimo de gravedad de amenazas, selecciona el nivel de alerta correcto.
  3. Haz clic en Crear. El proceso de creación puede tardar entre 10 y 15 minutos.

Después de crear el extremo de IDS, adjunta una política de duplicación de paquetes al extremo de IDS:

  1. Selecciona la pestaña Extremos.
  2. Junto al extremo del IDS, haz clic en Adjuntar.
  3. En el campo Nombre de la política, ingresa un nombre para la política de duplicación de paquetes.
  4. Haz clic en Siguiente.
  5. Elige la subred o las instancias que deseas duplicar. Puedes seleccionar varias subredes y instancias.
  6. Haz clic en Siguiente.
  7. Determina si deseas duplicar todo el tráfico o filtrar el tráfico:
    1. Si deseas duplicar todo el tráfico, asegúrate de que esté seleccionada la opción Duplicar todo el tráfico.
    2. Si deseas filtrar el tráfico según el protocolo, el rango de direcciones IP o el tráfico de entrada o salida, selecciona Duplicar el tráfico filtrado:
      1. Selecciona Permitir todos los protocolos o Permitir protocolos específicos.
      2. Selecciona Permitir todos los rangos de IP o Permitir rangos de IP específicos.
  8. Haz clic en Enviar. Se crea el extremo.

Ahora puedes verificar si se generaron registros de amenazas. Los siguientes pasos son opcionales:

  1. Haz clic en la pestaña Amenazas de IDS.
  2. Haz clic en el nombre de una amenaza para ver la página Detalles de la amenaza.
  3. Regresa a la pestaña Amenazas.
  4. Haz clic en el menú que se encuentra a la derecha de tu extremo de IDS y selecciona Ver registros de amenazas.

gcloud

Marcas opcionales

Los comandos de esta sección pueden tener algunas o todas las siguientes marcas opcionales:

--no-async
Espera a que se complete la operación en curso, en lugar de mostrar un resultado de inmediato.
--filter=EXPRESSION
Aplica una expresión de filtro booleano a cada elemento de recurso que se enumerará. Si la expresión se evalúa como Verdadero, se muestra ese elemento. Para obtener más detalles y ejemplos de expresiones de filtros, ejecuta $ gcloud topic filters. Esta marca interactúa con otras marcas que se aplican en este orden: --flatten, --sort-by, --filter, --limit.
--limit=LIMIT
Es la cantidad máxima de recursos que se mostrarán. El valor predeterminado es ilimitado. Esta marca interactúa con otras marcas que se aplican en este orden: --flatten, --sort-by, --filter, --limit.
--page-size=PAGE_SIZE
Una lista de recursos de grupos de IDS de Cloud se divide en páginas. Esta marca especifica la cantidad máxima de recursos por página. El servicio determina el valor predeterminado si admite paginación; de lo contrario, es ilimitado (sin paginación). Paging se puede aplicar antes o después de --filter y --limit, según el servicio.
--sort-by=[FIELD,…]
Es una lista separada por comas de los nombres de claves de campo de recurso para ordenar. El orden predeterminado es ascendente. Agrega un prefijo “~” a un campo para obtener el orden descendente en ese campo. Esta marca interactúa con otras marcas que se aplican en este orden: --flatten, --sort-by, --filter, --limit.
--uri
Imprime una lista de URIs de recursos en lugar del resultado predeterminado.
--threat-exceptions
Es una lista de IDs de amenazas separados por comas que se eximen de las alertas en este extremo. Se limita a 99 excepciones por extremo.

Instrucciones

Para crear un nuevo extremo de IDS, sigue estos pasos:

  1. Usa el comando gcloud ids endpoints create. Reemplaza ENDPOINT_NAME, VPC_NETWORK, ZONE y SEVERITY por información que coincida con tu aplicación.

    gcloud ids endpoints create ENDPOINT_NAME \
      --network=VPC_NETWORK \
      --zone=ZONE \
      --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]
    
  2. La marca de gravedad es obligatoria y puede tener uno de los siguientes valores:

    • INFORMATIVO
    • BAJO
    • MEDIO
    • ALTO
    • CRÍTICO
  3. Después de crear el extremo, adjúntalo a una política de duplicación de paquetes. Primero, obtén la URL del campo endpoint_forwarding_rule con el siguiente comando:

    gcloud ids endpoints describe ENDPOINT_NAME
    
  4. Crea la política de duplicación de paquetes con el siguiente comando:

    gcloud compute packet-mirrorings create POLICY_NAME \
    --region=REGION --collector-ilb=ENDPOINT_FORWARDING_RULE \
    --network=VPC_NETWORK --mirrored-subnets=SUBNET
    
  5. La duplicación de paquetes tiene varias marcas opcionales, incluidas las que puedes usar para filtrar el tráfico según el protocolo, el rango de direcciones IP o el tráfico de entrada o salida. Para obtener más información sobre estas marcas opcionales, consulta la referencia de la duplicación de paquetes.

Para borrar un extremo de IDS, usa el comando gcloud ids endpoints delete. Reemplaza ENDPOINT_NAME, PROJECT_ID y ZONE por información que coincida con tu aplicación:

gcloud ids endpoints delete ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [--no-async] \
   [GCLOUD_WIDE_FLAG...]

Para describir un extremo de IDS, usa el comando gcloud ids endpoints describe. Reemplaza ENDPOINT_NAME, PROJECT_ID y ZONE por información que coincida con tu aplicación:

gcloud ids endpoints describe ENDPOINT_NAME \
   [--project=PROJECT_ID] \
   [--zone=ZONE] \
   [GCLOUD_WIDE_FLAG...]

Para enumerar los extremos de IDS, usa el comando gcloud ids endpoints list:

gcloud ids endpoints list /
    [--filter=EXPRESSION] \
    [--limit=LIMIT] \
    [--page-size=PAGE_SIZE] \
    [--sort-by=[FIELD,...]] \
    [--uri] \
    [GCLOUD_WIDE_FLAG...]

API

Los recursos de extremo del IDS de Cloud tienen los siguientes campos:

Campo Tipo Descripción del campo
createTime string [Solo salida] Marca de tiempo de creación en formato de texto RFC 3339.
updateTime string [Solo salida] Marca de tiempo de la última actualización en formato de texto RFC 3339.
nombre string [Solo salida] Es el nombre del extremo en el formato projects/{project_id}/locations/{locationId}/endpoints/{endpointId}.
red string Es el nombre de la red de VPC que está conectada al extremo del IDS. Puede contener el nombre de la red de VPC (como "src-net") o la URL completa a la red (como "projects/{project_id}/global/networks/src-net"). Este campo es obligatorio cuando se crea el extremo.
gravedad, string

Es el nivel mínimo de gravedad de la alerta que informa el extremo. Los valores posibles son los siguientes:

  • INFORMATIVO
  • BAJO
  • MEDIO
  • ALTO
  • CRÍTICO

Este campo es obligatorio cuando se crea el extremo.

descripción string Una descripción opcional del extremo.
endpoint_forwarding_rule string [Solo salida] URL de la dirección de red del extremo al que se enviará el tráfico a través de la duplicación de paquetes.
extremo string [Solo salida] Dirección IP interna del punto de entrada de red del extremo.

Para crear un extremo del IDS de Cloud, usa una solicitud HTTP POST como la siguiente y reemplaza las variables según corresponda. ENDPOINT_NAME debe tener entre 1 y 63 caracteres, solo debe contener letras minúsculas, dígitos y guiones, debe comenzar con una letra minúscula y no puede terminar con un guion.

POST https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
{
    "network": "NETWORK_NAME",
    "severity": "SEVERITY_LEVEL",
}

Para borrar un extremo de IDS de Cloud, usa una solicitud HTTP DELETE como la siguiente y reemplaza las variables según corresponda:

DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Para obtener un extremo del IDS de Cloud, usa una solicitud HTTP GET como la siguiente y reemplaza las variables según corresponda:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Para enumerar todos los extremos de IDS de Cloud en una zona, usa una solicitud HTTP GET como la siguiente y reemplaza las variables según corresponda:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints

Como alternativa, para enumerar todos los extremos del IDS de Cloud en todas las zonas, puedes reemplazar ZONE por un guion, como en el siguiente ejemplo:

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints

Opcional: Configura excepciones de amenazas

Puedes inhabilitar los IDs de amenazas ruidosos o innecesarios con la marca --threat-exceptions cuando creas o actualizas tu extremo de IDS de Cloud. En el siguiente ejemplo, se actualiza un extremo del IDS de Cloud existente ENDPOINT_NAME para eximir los IDs de amenaza THREAT_ID1 y THREAT_ID2:

   gcloud ids endpoints update ENDPOINT_NAME 
--threat-exceptions=THREAT_ID1,THREAT_ID2

¿Qué sigue?