Todos los productos
Search
Centro de documentos

Web Application Firewall:Integrate WAF logs into a Syslog server

Última actualización: Sep 04, 2026

Reenvíe los registros de acceso de Web Application Firewall (WAF) a un servidor Syslog mediante un programa Python. Esto le permite centralizar los registros de WAF en su centro de operaciones de seguridad (SOC) para cumplir con los requisitos normativos y de auditoría.

Funcionamiento

WAF escribe los registros de acceso en Simple Log Service (SLS). El programa Python se ejecuta en una instancia de Elastic Compute Service (ECS), lee desde SLS mediante un grupo de consumidores y reenvía cada entrada de registro a su servidor Syslog a través de UDP o TCP.

El programa Python utiliza la biblioteca de consumidores de SLS, un modo de consumo avanzado basado en grupos de consumidores de LogHub. Los grupos de consumidores gestionan automáticamente el seguimiento de desplazamientos y la tolerancia a fallos, por lo que el programa Python se centra exclusivamente en la lógica de reenvío.

El canal Syslog transmite datos de registro a través de UDP o TCP sin cifrado. Para entornos de producción con requisitos de seguridad estrictos, enrute los registros a través de un proxy Syslog local en el mismo host antes de reenviarlos a su servidor Syslog remoto mediante un canal seguro.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Log Service para WAF habilitado, con la recopilación de registros activada para su nombre de dominio. Consulte Get started with the Log Service for WAF feature

  • Una instancia ECS de Linux con Ubuntu y las siguientes especificaciones mínimas:

    • Procesador de 2.0 GHz, 8 núcleos

    • 32 GB de memoria

    • Como mínimo 2 GB de espacio en disco disponible (se recomiendan 10 GB o más)

  • Un servidor Syslog con el puerto UDP 514 abierto para recibir datos Syslog

Configuración del programa Python

Paso 1: Instalación de dependencias

Conéctese a su instancia ECS mediante SSH o a través de la consola de ECS. Consulte Remote connection methods for ECS instances.

Instale Python 3, pip y el SDK de Python para SLS:

apt-get update
apt-get install -y python3-pip python3-dev
cd /usr/local/bin
ln -s /usr/bin/python3 python
pip3 install --upgrade pip
pip install aliyun-log-python-sdk

Para consultar la documentación del SDK, consulte guía del usuario de aliyun-log-python-sdk.

Paso 2: Descarga del script de ejemplo

wget https://raw.githubusercontent.com/aliyun/aliyun-log-python-sdk/master/tests/consumer_group_examples/sync_data_to_syslog.py

El código fuente completo está disponible en GitHub.

Paso 3: Configuración del programa Python

Abra sync_data_to_syslog.py y establezca los siguientes parámetros.

Parámetros de Log Service

endpoint = os.environ.get('SLS_ENDPOINT', 'http://ap-southeast-1.log.aliyuncs.com')
accessKeyId = os.environ.get('SLS_AK_ID', 'Your AccessKey ID')
accessKey = os.environ.get('SLS_AK_KEY', 'Your AccessKey secret')
project = os.environ.get('SLS_PROJECT', 'waf-project-548613414276****-ap-southeast-1')
logstore = os.environ.get('SLS_LOGSTORE', 'waf-logstore')
consumer_group = os.environ.get('SLS_CG', 'WAF-SLS')

Parameter

Description

SLS_ENDPOINT

El endpoint de Log Service correspondiente a la región de su proyecto. Consulte Endpoints.

SLS_AK_ID

Su AccessKey ID. Obténgalo desde la consola de gestión de usuarios.

SLS_AK_KEY

Su AccessKey secret.

SLS_PROJECT

El nombre del proyecto de SLS para su instancia de WAF. Los nombres de proyecto comienzan con waf-project. Los proyectos en la región China (Hangzhou) pertenecen a instancias de WAF en China continental; los proyectos en Singapore pertenecen a instancias de WAF fuera de China continental. Para encontrar el nombre de su proyecto, inicie sesión en la consola de Log Service.

SLS_LOGSTORE

El nombre del logstore dentro del proyecto. Haga clic en su proyecto de WAF en la consola de Log Service para consultar el nombre del logstore.

SLS_CG

El nombre del grupo de consumidores. El valor predeterminado WAF-SLS funciona para la mayoría de las implementaciones.

Parámetros de Syslog

settings = {
    "host": "1.2.xx.xx",
    "port": 514,
    "protocol": "udp",
    "sep": ",",
    "cert_path": None,
    "timeout": 120,
    "facility": syslogclient.FAC_USER,
    "severity": syslogclient.SEV_INFO,
    "hostname": None,
    "tag": None
}

Parameter

Description

host

La dirección IP o el nombre de host de su servidor Syslog.

port

El puerto para datos Syslog. Valores compatibles: 514 (UDP) y 1468 (TCP).

protocol

El protocolo de transporte: udp o tcp. Asegúrese de que coincida con la configuración de su servidor Syslog.

sep

El delimitador utilizado para separar pares clave-valor en cada mensaje Syslog.

facility

El código de facility de Syslog que clasifica el origen del registro. Syslog utiliza códigos de facility para enrutar mensajes a diferentes archivos de registro en el servidor. El valor predeterminado FAC_USER es adecuado para registros generales de aplicaciones.

severity

El nivel de severidad de Syslog para todos los mensajes reenviados. El valor predeterminado SEV_INFO es adecuado para registros de acceso de WAF.

timeout

El tiempo de espera de conexión en segundos. El valor predeterminado es 120.

cert_path

La ruta al archivo de certificado TLS. Configure este parámetro cuando utilice TLS sobre TCP. Déjelo como None para conexiones sin cifrar.

Paso 4: Inicio del programa Python

python sync_data_to_syslog.py

Cuando el programa Python se inicia correctamente, la salida es similar a la siguiente:

*** start to consume data...
consumer worker "WAF-SLS-1" start
heart beat start
heart beat result: [] get: [0, 1]
Get data from shard 0, log count: 6
Complete send data to remote
Get data from shard 0, log count: 2
Complete send data to remote
heart beat result: [0, 1] get: [0, 1]

Los registros de acceso de WAF ahora se reenvían a su servidor Syslog.

Pasos siguientes