Tous les produits
Search
Centre de documentation

Web Application Firewall:Intégrer les journaux WAF dans un serveur Syslog

Dernière mise à jour :Oct 12, 2026

Transférez les journaux d'accès du Web Application Firewall (WAF) vers un serveur Syslog à l'aide d'un programme Python. Cette approche vous permet de centraliser les journaux WAF au sein de votre centre des opérations de sécurité (SOC) afin de satisfaire aux exigences réglementaires et d'audit.

Fonctionnement

Le WAF écrit les journaux d'accès dans le Simple Log Service (SLS). Le programme Python s'exécute sur une instance Elastic Compute Service (ECS), lit les données depuis SLS via un groupe de consommateurs et transfère chaque entrée de journal vers votre serveur Syslog par UDP ou TCP.

Le programme Python utilise la bibliothèque de consommateur SLS, un mode de consommation avancé reposant sur les groupes de consommateurs LogHub. Les groupes de consommateurs gèrent automatiquement le suivi des décalages (offsets) et la tolérance aux pannes, ce qui permet au programme Python de se concentrer exclusivement sur la logique de transfert.

Le canal Syslog transmet les données de journalisation via UDP ou TCP sans chiffrement. Pour les environnements de production soumis à des exigences de sécurité strictes, acheminez les journaux via un proxy Syslog local hébergé sur la même machine avant de les transférer vers votre serveur Syslog distant par un canal sécurisé.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Le service Log Service pour WAF est activé et la collecte des journaux est activée pour votre nom de domaine. Consultez la rubrique Prise en main du service Log Service pour WAF

  • Une instance ECS Linux exécutant Ubuntu, répondant aux spécifications minimales suivantes :

    • Processeur 2,0 GHz, 8 cœurs

    • 32 Go de mémoire

    • Au moins 2 Go d'espace disque disponible (10 Go ou plus recommandés)

  • Un serveur Syslog dont le port UDP 514 est ouvert pour recevoir les données Syslog

Configurer le programme Python

Étape 1 : Installer les dépendances

Connectez-vous à votre instance ECS via SSH ou par le biais de la console ECS. Consultez la rubrique Choisir une méthode de connexion.

Installez Python 3, pip et le SDK Python 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

Pour consulter la documentation du SDK, reportez-vous au guide d'utilisation d'aliyun-log-python-sdk.

Étape 2 : Télécharger l'exemple de script

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

Le code source complet est disponible sur GitHub.

Étape 3 : Configurer le programme Python

Ouvrez le fichier sync_data_to_syslog.py et définissez les paramètres suivants.

Paramètres 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')

Paramètre

Description

SLS_ENDPOINT

L'endpoint Log Service correspondant à la région de votre projet. Consultez la rubrique Endpoints.

SLS_AK_ID

Votre AccessKey ID. Récupérez-le depuis la console User Management.

SLS_AK_KEY

Votre AccessKey secret.

SLS_PROJECT

Le nom du projet SLS associé à votre instance WAF. Les noms de projets commencent par waf-project. Les projets situés dans la région China (Hangzhou) appartiennent aux instances WAF déployées en Chine continentale ; les projets situés à Singapore appartiennent aux instances WAF déployées hors de Chine continentale. Pour identifier le nom de votre projet, connectez-vous à la console Log Service.

SLS_LOGSTORE

Le nom du Logstore au sein du projet. Cliquez sur votre projet WAF dans la console Log Service pour afficher le nom du Logstore.

SLS_CG

Le nom du groupe de consommateurs. La valeur par défaut WAF-SLS convient à la plupart des déploiements.

Paramètres 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
}

Paramètre

Description

host

L'adresse IP ou le nom d'hôte de votre serveur Syslog.

port

Le port utilisé pour les données Syslog. Valeurs prises en charge : 514 (UDP) et 1468 (TCP).

protocol

Le protocole de transport : udp ou tcp. Assurez-vous que cette valeur correspond à la configuration de votre serveur Syslog.

sep

Le délimiteur utilisé pour séparer les paires clé-valeur dans chaque message Syslog.

facility

Le code de facilité Syslog qui classe la source du journal. Syslog utilise les codes de facilité pour router les messages vers différents fichiers journaux sur le serveur. La valeur par défaut FAC_USER est appropriée pour les journaux d'applications généraux.

severity

Le niveau de gravité Syslog appliqué à tous les messages transférés. La valeur par défaut SEV_INFO est adaptée aux journaux d'accès WAF.

timeout

Le délai d'expiration de la connexion en secondes. La valeur par défaut est 120.

cert_path

Le chemin d'accès au fichier de certificat TLS. Définissez ce paramètre lorsque vous utilisez TLS sur TCP. Laissez la valeur None pour les connexions non chiffrées.

Étape 4 : Démarrer le programme Python

python sync_data_to_syslog.py

Lorsque le programme Python démarre correctement, la sortie ressemble à ceci :

*** 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]

Les journaux d'accès WAF sont désormais transférés vers votre serveur Syslog.

Étapes suivantes