Encaminhe os logs de acesso do Web Application Firewall (WAF) para um servidor Syslog usando o Python Program. Isso permite centralizar os logs do WAF no seu centro de operações de segurança (SOC) para atender aos requisitos regulatórios e de auditoria.
Como funciona
O WAF grava os logs de acesso no Simple Log Service (SLS). O Python Program é executado em uma instância do Elastic Compute Service (ECS), lê os dados do SLS usando um grupo de consumidores e encaminha cada entrada de log para o seu servidor Syslog via UDP ou TCP.
O Python Program utiliza a biblioteca de consumidores do SLS, um modo avançado de consumo baseado em grupos de consumidores do LogHub. Os grupos de consumidores lidam com o rastreamento de offset e a tolerância a falhas automaticamente, permitindo que o Python Program se concentre inteiramente na lógica de encaminhamento.
O canal Syslog transmite dados de log via UDP ou TCP sem criptografia. Para ambientes de produção com requisitos rígidos de segurança, direcione os logs por um proxy Syslog local no mesmo host antes de encaminhá-los para o servidor Syslog remoto por um canal seguro.
Pré-requisitos
Antes de começar, certifique-se de ter:
O Log Service para WAF ativado, com a coleta de logs habilitada para o seu nome de domínio. Consulte Primeiros passos com o recurso Log Service for WAF
-
Uma instância ECS Linux executando o Ubuntu com as seguintes especificações mínimas:
Processador de 2,0 GHz com 8 núcleos
32 GB de memória
Pelo menos 2 GB de espaço em disco disponível (recomenda-se 10 GB ou mais)
Um servidor Syslog com a porta UDP 514 aberta para receber dados do Syslog
Configurar o Python Program
Etapa 1: Instale as dependências
Conecte-se à sua instância ECS via SSH ou pelo console do ECS. Consulte Choose a connection method.
Instale o Python 3, o pip e o SDK do SLS para Python:
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 a documentação do SDK, consulte o guia do usuário do aliyun-log-python-sdk.
Etapa 2: Baixe o script de exemplo
wget https://raw.githubusercontent.com/aliyun/aliyun-log-python-sdk/master/tests/consumer_group_examples/sync_data_to_syslog.py
O código-fonte completo está disponível no GitHub.
Etapa 3: Configure o Python Program
Abra o arquivo sync_data_to_syslog.py e defina os seguintes parâmetros.
Parâmetros do 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')
|
Parâmetro |
Descrição |
|
|
O endpoint do Log Service para a região do seu projeto. Consulte Endpoints. |
|
|
O seu AccessKey ID. Obtenha-o no console do User Management. |
|
|
O segredo do seu AccessKey. |
|
|
O nome do projeto SLS para a sua instância do WAF. Os nomes dos projetos começam com |
|
|
O nome do Logstore dentro do projeto. Clique em seu projeto do WAF no console do Log Service para visualizar o nome do Logstore. |
|
|
O nome do grupo de consumidores. O valor padrão |
Parâmetros do 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
}
|
Parâmetro |
Descrição |
|
|
O endereço IP ou nome do host do seu servidor Syslog. |
|
|
A porta para dados do Syslog. Valores suportados: |
|
|
O protocolo de transporte: |
|
|
O delimitador usado para separar pares chave-valor em cada mensagem do Syslog. |
|
|
O código de facility do Syslog que classifica a origem do log. O Syslog usa códigos de facility para rotear mensagens para diferentes arquivos de log no servidor. O valor padrão |
|
|
O nível de severidade do Syslog para todas as mensagens encaminhadas. O valor padrão |
|
|
O tempo limite de conexão em segundos. O padrão é |
|
|
O caminho para o arquivo de certificado TLS. Defina este parâmetro ao usar TLS sobre TCP. Deixe como |
Etapa 4: Inicie o Python Program
python sync_data_to_syslog.py
Quando o Python Program iniciar com sucesso, a saída será semelhante a:
*** 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]
Os logs de acesso do WAF agora são encaminhados para o seu servidor Syslog.
Próximos passos
Overview of Log Service for WAF — Saiba quais campos de log o WAF coleta e como consultá-los.
Use consumer groups to consume logs — Entenda como a biblioteca de consumidores gerencia o consumo distribuído de logs.