すべてのプロダクト
Search
ドキュメントセンター

Web Application Firewall:WAF ログの Syslog サーバーへの統合

最終更新日:Aug 25, 2026

Python プログラムを使用して、Web Application Firewall (WAF) のアクセスログを Syslog サーバーに転送します。これにより、WAF ログをセキュリティオペレーションセンター (SOC) で一元管理し、規制や監査の要件を満たすことができます。

仕組み

WAF はアクセスログを Simple Log Service (SLS) に書き込みます。Python プログラムは Elastic Compute Service (ECS) インスタンス上で実行され、コンシューマーグループを使用して SLS からデータを読み取り、各ログエントリを UDP または TCP 経由で Syslog サーバーに転送します。

Python プログラムは、LogHub コンシューマーグループ上に構築された高度なコンサンプションモードである SLS コンシューマーライブラリを使用します。コンシューマーグループはオフセット追跡とフォールトトレランスを自動的に処理するため、Python プログラムは転送ロジックに完全に集中できます。

Syslog チャネルは、暗号化なしで UDP または TCP 経由でログデータを送信します。厳格なセキュリティ要件が求められる本番環境では、保護されたチャネル経由でリモートの Syslog サーバーに転送する前に、同じホスト上のローカル Syslog プロキシ経由でログをルーティングしてください。

前提条件

開始する前に、次のものが準備できていることを確認してください:

  • WAF の Log Service が有効になっており、ドメイン名のログ収集がオンになっていること。詳細については、「WAF 機能向け Log Service の使用開始」をご参照ください。

  • Ubuntu を実行している Linux ECS インスタンスで、次の最小仕様を満たしていること:

    • 2.0 GHz プロセッサ、8 コア

    • 32 GB メモリ

    • 2 GB 以上の利用可能なディスク容量 (10 GB 以上を推奨)

  • Syslog データを受信するために UDP ポート 514 が開いている Syslog サーバーがあること。

Python プログラムのセットアップ

ステップ 1: 依存関係のインストール

SSH または ECS コンソール経由で ECS インスタンスに接続します。詳細については、「ECS インスタンスへのリモート接続方法」をご参照ください。

Python 3、pip、および SLS Python SDK をインストールします:

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

SDK ドキュメントについては、「aliyun-log-python-sdk ユーザーガイド」をご参照ください。

ステップ 2: サンプルスクリプトのダウンロード

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

完全なソースは GitHub で入手できます。

ステップ 3: Python プログラムの設定

sync_data_to_syslog.py を開き、次のパラメーターを設定します。

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')

パラメーター

説明

SLS_ENDPOINT

プロジェクトがあるリージョンの Log Service エンドポイント。詳細については、「エンドポイント」をご参照ください。

SLS_AK_ID

お使いの AccessKey ID。ユーザー管理コンソールから取得できます。

SLS_AK_KEY

お使いの AccessKey secret。

SLS_PROJECT

WAF インスタンスの SLS プロジェクト名。プロジェクト名は waf-project で始まります。中国 (杭州) リージョン内のプロジェクトは中国本土の WAF インスタンスに属し、シンガポールのプロジェクトは中国本土外の WAF インスタンスに属します。プロジェクト名を確認するには、Log Service コンソールにログインしてください。

SLS_LOGSTORE

プロジェクト内の Logstore 名。Log Service コンソールで WAF プロジェクトをクリックすると、Logstore 名が表示されます。

SLS_CG

コンシューマーグループ名。デフォルト値の WAF-SLS は、ほとんどのデプロイで機能します。

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
}

パラメーター

説明

host

Syslog サーバーの IP アドレスまたはホスト名。

port

Syslog データ用のポート。サポートされている値: 514 (UDP) と 1468 (TCP)。

protocol

トランスポートプロトコル: udp または tcp。Syslog サーバーの設定と一致させてください。

sep

各 Syslog メッセージでキーと値のペアを区切るための区切り文字。

facility

ログソースを分類する Syslog ファシリティコード。Syslog はファシリティコードを使用して、サーバー上のさまざまなログファイルにメッセージをルーティングします。デフォルトの FAC_USER は、一般的なアプリケーションログに適しています。

severity

転送するすべてのメッセージに適用する Syslog の深刻度レベル。デフォルトの SEV_INFO は、WAF のアクセスログに適しています。

timeout

接続タイムアウト (秒単位)。デフォルトは 120 です。

cert_path

TLS 証明書ファイルへのパス。TCP 経由で TLS を使用する場合に設定します。暗号化されていない接続の場合は None のままにします。

ステップ 4: Python プログラムの開始

python sync_data_to_syslog.py

Python プログラムが正常に開始されると、次のような出力が表示されます:

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

これで、WAF のアクセスログが Syslog サーバーに転送されるようになります。

次のステップ