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

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

最終更新日:Apr 01, 2026

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

仕組み

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

Architecture

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:依存関係のインストール

ECS インスタンスには、SSH または 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。 ユーザー管理コンソール から取得します。 AccessKey
SLS_AK_KEYご利用の AccessKey Secret。
SLS_PROJECTご利用の WAF インスタンスに対応する SLS プロジェクト名。プロジェクト名は waf-project で始まります。中国 (杭州) リージョンのプロジェクトは中国本土の WAF インスタンスに属し、シンガポール のプロジェクトは中国本土以外の WAF インスタンスに属します。プロジェクト名を確認するには、Log Service コンソールLog Service コンソールにログインします。 日志项目
SLS_LOGSTOREプロジェクト内の Logstore 名。Logstore 名を表示するには、Log Service コンソールLog Service コンソールでご利用の WAF プロジェクトをクリックします。 日志库
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 アドレスまたはホスト名。
portSyslog データ用のポート。サポートされている値: 514 (UDP) および 1468 (TCP)。
protocolトランスポートプロトコル: udp または tcp。ご利用の Syslog サーバーの設定に合わせてください。
sep各 Syslog メッセージ内のキーと値のペアを区切るために使用される区切り文字。
facilityログソースを分類する Syslog ファシリティコード。Syslog はファシリティコードを使用して、サーバー上の異なるログファイルにメッセージをルーティングします。デフォルトの FAC_USER は、一般的なアプリケーションログに適しています。利用可能なすべての値については、syslogclient のドキュメントをご参照ください。
severity転送されるすべてのメッセージの Syslog 重要度レベル。デフォルトの SEV_INFO は、WAF のアクセスログに適しています。
timeout接続タイムアウト (秒単位)。デフォルトは 120 です。
cert_pathTLS 証明書ファイルへのパス。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 サーバーに転送されるようになります。

次のステップ