View a markdown version of this page

Configuración de la ingestión de syslog - Amazon CloudWatch Logs

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de la ingestión de syslog

En esta sección, se explican los pasos para configurar la ingesta de syslog en Logs. CloudWatch Creará un punto de enlace de VPC para el servicio de syslog, un grupo de registros para recibir los mensajes, una política de recursos para autorizar el servicio de syslog y una configuración de syslog que enrute el tráfico desde el punto de enlace de la VPC al grupo de registros.

Puede realizar todos estos pasos mediante la consola de AWS administración, los o los SDK. AWS CLI AWS Las siguientes instrucciones proporcionan tanto la consola como AWS CLI algunos ejemplos.

Requisitos previos

La identidad de IAM (usuario o rol) que utilice para configurar la ingesta de syslog debe tener permisos para crear puntos de enlace de VPC, grupos de registros, políticas de recursos y configuraciones de syslog. El siguiente ejemplo de política muestra los permisos mínimos necesarios:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:PutResourcePolicy", "logs:DeleteResourcePolicy", "logs:PutSyslogConfiguration", "logs:ListSyslogConfigurations", "logs:DeleteSyslogConfiguration" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:CreateSubnet", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateVpcEndpoint", "ec2:ModifyVpcEndpoint", "ec2:DescribeVpcEndpoints" ], "Resource": "*" } ] }
nota

Si ya tiene una VPC, una subred y un grupo de seguridad, solo necesita los ec2:DescribeVpcEndpoints permisos y los ec2:CreateVpcEndpoint permisos para las acciones de EC2. ec2:ModifyVpcEndpoint

Paso 1: Crear o identificar una VPC

Necesita una VPC a la que se pueda acceder desde la red local (mediante VPN o Direct Connect) en la que residan los dispositivos generadores de syslog. Si ya tiene una VPC conectada a su centro de datos, omita este paso y utilice los ID de subred y de VPC existentes.

Console
Para crear una VPC (consola)
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Sus VPC y, a continuación, elija Crear VPC.

  3. En Recursos para crear, elija Solo VPC.

  4. Para el bloque CIDR de IPv4, introduzca 10.0.0.0/16 (o un CIDR que no entre en conflicto con su red local).

  5. Seleccione Creación de VPC.

  6. Seleccione la VPC recién creada, elija Acciones y edite la configuración de la VPC. Activa tanto la resolución de DNS como los nombres de host de DNS y, a continuación, selecciona Guardar.

  7. Cree una subred para el punto final de la VPC:

    1. En el panel de navegación, selecciona Subredes y, a continuación, selecciona Crear subred.

    2. Para el ID de VPC, seleccione la VPC que creó.

    3. En Zona de disponibilidad, elija una zona de disponibilidad.

    4. Para el bloque CIDR de subred IPv4, introduzca. 10.0.1.0/24

    5. Elija Create subnet (Crear subred).

AWS CLI
REGION=us-east-1 # Create VPC VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --region $REGION \ --query 'Vpc.VpcId' --output text) aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-support --region $REGION aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-hostnames --region $REGION # Create a subnet for the VPC endpoint SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --availability-zone ${REGION}a \ --region $REGION \ --query 'Subnet.SubnetId' --output text) echo "VPC: $VPC_ID, Subnet: $SUBNET_ID"
nota

El punto final de la VPC crea una interfaz de red elástica (ENI) con una IP privada en la subred. Sus dispositivos locales llegan a esta IP a través de su conexión VPN o Direct Connect. Asegúrese de que el enrutamiento de la red permita que el tráfico de sus dispositivos se dirija a la subred CIDR.

Paso 2: crear un grupo de seguridad

Cree un grupo de seguridad para el punto final de la VPC que permita el tráfico syslog entrante desde su VPC. Esto controla qué recursos pueden enviar el syslog al punto final.

Console
Para crear un grupo de seguridad (consola)
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Grupos de seguridad y, a continuación, elija Crear grupo de seguridad.

  3. En Nombre del grupo de seguridad, introduzca syslog-vpce-sg.

  4. En Descripción, escriba Allow syslog traffic to VPC endpoint.

  5. Para la VPC, seleccione la VPC que creó o identificó en el paso 1.

  6. En la sección Reglas de entrada, elija Añadir regla y añada las siguientes reglas:

    • Regla 1: Tipo = TCP personalizado, Rango de puertos =6514, Fuente = 10.0.0.0/16 (su CIDR de VPC)

    • Regla 2: Tipo = TCP personalizado, Rango de puertos =1514, Fuente = 10.0.0.0/16

    • Regla 3: Tipo = UDP personalizado, Rango de puertos =514, Fuente = 10.0.0.0/16

  7. Elija Creación de grupo de seguridad.

AWS CLI
VPCE_SG_ID=$(aws ec2 create-security-group \ --group-name syslog-vpce-sg \ --description "Allow syslog traffic to VPC endpoint" \ --vpc-id $VPC_ID \ --region $REGION \ --query 'GroupId' --output text) # Allow TCP+TLS (port 6514), TCP plaintext (port 1514), and UDP (port 514) aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol tcp --port 6514 --cidr 10.0.0.0/16 --region $REGION aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol tcp --port 1514 --cidr 10.0.0.0/16 --region $REGION aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol udp --port 514 --cidr 10.0.0.0/16 --region $REGION
sugerencia

Si solo planea usar un protocolo (por ejemplo, TCP+TLS en el puerto 6514), solo necesita abrir ese puerto en el grupo de seguridad.

Paso 3: Crear el punto de enlace de la VPC

Cree un punto final de VPC de interfaz que apunte al servicio AWS PrivateLink syslog. Esto le da a su VPC un punto de entrada privado al servicio syslog de CloudWatch Logs.

nota

Puede especificar varios ID de subred en diferentes zonas de disponibilidad al crear el punto final. El punto final crea un ENI en cada subred, lo que proporciona una mayor disponibilidad sin necesidad de puntos finales de VPC independientes por zona de disponibilidad. Basta con un único punto final de VPC con subredes en varias zonas de disponibilidad.

Console
Para crear el punto final de la VPC (consola)
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Endpoints y, a continuación, elija Crear punto final.

  3. En Etiqueta de nombre, introduzca un nombre para el punto final (por ejemplo,syslog-vpce).

  4. En Service category (Categoría de servicios), elija AWS Services (Servicios de AWC).

  5. En el campo de búsqueda de servicios, introduzca syslog-logs y seleccione el serviciocom.amazonaws.Region.syslog-logs.

  6. Para la VPC, seleccione la VPC que creó o identificó en el paso 1.

  7. En la sección Subredes, seleccione una o más zonas de disponibilidad y elija las subredes en las que desee crear las interfaces de red de puntos finales.

  8. Para los grupos de seguridad, seleccione el grupo de seguridad que creó en el paso 2 ()syslog-vpce-sg.

  9. (Opcional) Si quieres restringir el tráfico permitido a través del punto final, configura una política de punto final de VPC. Para obtener más información, consulte Políticas de puntos de conexión de VPC para syslog.

  10. Seleccione Crear punto de conexión.

  11. Cuando el estado del punto final cambie a Disponible, selecciónelo y anote el valor de los nombres de DNS. Esta es la dirección a la que enviarán sus dispositivos syslog.

AWS CLI
VPCE_ID=$(aws ec2 create-vpc-endpoint \ --vpc-id $VPC_ID \ --service-name com.amazonaws.${REGION}.syslog-logs \ --vpc-endpoint-type Interface \ --subnet-ids $SUBNET_ID \ --security-group-ids $VPCE_SG_ID \ --region $REGION \ --query 'VpcEndpoint.VpcEndpointId' --output text) echo "VPC Endpoint: $VPCE_ID"

Espere a que el punto final esté disponible (aproximadamente 60 segundos) y, a continuación, recupere el nombre DNS:

VPCE_DNS=$(aws ec2 describe-vpc-endpoints --vpc-endpoint-ids $VPCE_ID \ --region $REGION --query 'VpcEndpoints[0].DnsEntries[0].DnsName' --output text) echo "Endpoint DNS: $VPCE_DNS"

Guarde el VPCE_DNS valor: configurará sus dispositivos syslog para que envíen a esta dirección.

Paso 4: Crea un grupo de registros

Cree el grupo de CloudWatch registros donde se entregarán los mensajes de syslog. Puede usar cualquier nombre de grupo de registros. Se recomienda utilizar un /syslog/ prefijo para mayor claridad organizativa.

Console
Para crear un grupo de registros (consola)
  1. Abra la consola CloudWatch de registros en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, en Administración de registros, elija Grupos de registros.

  3. Elija Crear grupo de registros.

  4. En Nombre del grupo de registros, introduzca/syslog/my-devices.

  5. (Opcional) Configure los ajustes de retención y el cifrado según sea necesario.

  6. Seleccione Crear.

AWS CLI
aws logs create-log-group \ --log-group-name /syslog/my-devices \ --region $REGION

No es necesario crear un flujo de registro. El servicio syslog crea automáticamente un flujo de registro denominado VPCE_ID_Syslog_Region (por ejemplo,vpce-0abc123def456_Syslog_us-east-1) cuando se entrega el primer mensaje.

Paso 5: Añadir una política de recursos

El servicio syslog de CloudWatch Logs escribe en su grupo de registros mediante el principio del syslog.logs.amazonaws.com servicio. Debe concederle el permiso mediante una política de recursos en su grupo de registros. La aws:SourceArn condición garantiza que solo el tráfico de su punto final de VPC específico pueda escribir en este grupo de registros.

ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text) aws logs put-resource-policy \ --policy-name syslog-ingestion \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "syslog.logs.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:'$REGION':'$ACCOUNT_ID':log-group:/syslog/my-devices:*", "Condition": { "StringEquals": { "aws:SourceAccount": "'$ACCOUNT_ID'" }, "ArnEquals": { "aws:SourceArn": "arn:aws:ec2:'$REGION':'$ACCOUNT_ID':vpc-endpoint/'$VPCE_ID'" } } } ] }' \ --region $REGION

Las condiciones de la política de recursos proporcionan las siguientes protecciones:

  • aws:SourceAccount— Evita los confusos ataques de los diputados. Solo se acepta el tráfico de tu cuenta.

  • aws:SourceArn— Limita el acceso a un punto final de VPC específico. Si tiene varios puntos de enlace de VPC, añada cada uno de ellos como un ARN independiente en la condición.

Para permitir que varios puntos finales de VPC escriban en el mismo grupo de registros, utilice el operador de ArnLike condición con un comodín:

"ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:123456789012:vpc-endpoint/*" }

Paso 6: Cree la configuración de syslog

Este paso indica al servicio syslog de CloudWatch Logs que el tráfico que llega desde el punto de enlace de la VPC debe enrutarse a su grupo de registros. Sin esta configuración, se rechaza el tráfico del punto final.

Console
Para crear la configuración de syslog (consola)
  1. Abra la consola de CloudWatch registros en. https://console.aws.amazon.com/cloudwatch/

  2. En el panel de navegación, en Administración de registros, elija Grupos de registros.

  3. Elija el grupo de registros que creó en el paso 4 (por ejemplo,/syslog/my-devices).

  4. En los detalles del grupo de registros, busque la sección Syslog Ingestion.

  5. Elija Configurar.

  6. En el menú desplegable de puntos de enlace de VPC, seleccione el punto de enlace de VPC que creó en el paso 3.

  7. Seleccione Crear.

AWS CLI
aws logs put-syslog-configuration \ --log-group-identifier /syslog/my-devices \ --vpc-endpoint-id $VPCE_ID \ --region $REGION

Verifique la configuración:

aws logs list-syslog-configurations \ --log-group-identifier /syslog/my-devices \ --region $REGION

Su canalización de ingestión de syslog ya está activa. Todos los mensajes de syslog que se envíen al punto final de la VPC se entregarán al grupo de registros. /syslog/my-devices

Paso 7: Verificar la entrega y la extracción del campo

Envíe un mensaje de prueba desde cualquier host o dispositivo EC2 que pueda llegar al punto final de la VPC y, a continuación, CloudWatch utilice Log Analytics para comprobar que el mensaje se ha entregado y que los campos estructurados se han extraído correctamente. Los mensajes suelen aparecer en un plazo de 10 a 20 segundos.

Envía un mensaje de prueba (texto sin formato TCP):

echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello from syslog" | \ nc $VPCE_DNS 1514

Verifica la entrega y los campos extraídos:

Console
Para verificar la entrega mediante Log Analytics (consola)
  1. Abra la consola CloudWatch de Logs en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, en Registros, elija Log Analytics.

  3. En el selector de grupos de registros, elija su grupo de registros (por ejemplo,/syslog/my-devices).

  4. Introduzca la siguiente consulta y elija Ejecutar consulta:

    fields @timestamp, facility, severity, hostname, appName, procId, message | sort @timestamp desc | limit 10
  5. Compruebe que aparece el mensaje de prueba y que los campos extraídos se han rellenado correctamente. En el mensaje de prueba anterior, deberías ver facility severity = local0info, hostname = myhostmyapp, appName = y procId =1234.

AWS CLI

Inicie una consulta de Log Analytics para verificar la entrega y la extracción de campos:

QUERY_ID=$(aws logs start-query \ --log-group-name /syslog/my-devices \ --start-time $(date -d '5 minutes ago' +%s 2>/dev/null || echo $(date -v-5M +%s)) \ --end-time $(date +%s) \ --query-string 'fields @timestamp, facility, severity, hostname, appName, procId, message | sort @timestamp desc | limit 10' \ --region $REGION \ --query 'queryId' --output text) # Wait a few seconds for the query to complete, then retrieve results aws logs get-query-results \ --query-id $QUERY_ID \ --region $REGION

Compruebe que aparece el mensaje de prueba y que los campos extraídos se han rellenado correctamente. En el mensaje de prueba anterior, deberías ver facility severity = local0info, hostname = myhostmyapp, appName = y procId =1234.