Teruskan log akses Web Application Firewall (WAF) ke server Syslog menggunakan program Python. Hal ini memungkinkan Anda memusatkan log WAF di Pusat Operasi Keamanan (SOC) untuk memenuhi persyaratan regulasi dan audit.
Cara kerja
WAF menulis log akses ke Simple Log Service (SLS). Program Python berjalan pada instans Elastic Compute Service (ECS), membaca log dari SLS menggunakan kelompok konsumen, lalu meneruskan setiap entri log ke server Syslog Anda melalui UDP atau TCP.

Program Python menggunakan pustaka konsumen SLS—mode konsumsi lanjutan yang dibangun di atas kelompok konsumen LogHub. Kelompok konsumen secara otomatis menangani pelacakan offset dan toleransi kesalahan, sehingga program Python dapat fokus sepenuhnya pada logika penerusan.
Saluran Syslog mentransmisikan data log melalui UDP atau TCP tanpa enkripsi. Untuk lingkungan produksi dengan persyaratan keamanan ketat, arahkan log melalui proxy Syslog lokal pada host yang sama sebelum meneruskannya ke server Syslog remote melalui saluran yang diamankan.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Log Service untuk WAF diaktifkan, dengan pengumpulan log diaktifkan untuk nama domain Anda. Lihat Memulai fitur Log Service untuk WAF.
Instans ECS Linux yang menjalankan Ubuntu dengan spesifikasi minimum berikut:
Prosesor 2,0 GHz, 8 core
Memori 32 GB
Setidaknya 2 GB ruang disk tersedia (disarankan 10 GB atau lebih)
Server Syslog dengan port UDP 514 terbuka untuk menerima data Syslog
Siapkan Program Python
Langkah 1: Instal dependensi
Hubungkan ke instans ECS Anda melalui SSH atau melalui Konsol ECS. Lihat Metode untuk menghubungkan ke instans ECS.
Instal Python 3, pip, dan 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-sdkUntuk dokumentasi SDK, lihat panduan pengguna aliyun-log-python-sdk.
Langkah 2: Unduh skrip contoh
wget https://raw.githubusercontent.com/aliyun/aliyun-log-python-sdk/master/tests/consumer_group_examples/sync_data_to_syslog.pyKode sumber lengkap tersedia di GitHub.
Langkah 3: Konfigurasikan Program Python
Buka sync_data_to_syslog.py dan atur parameter berikut.
Parameter 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 | Deskripsi |
|---|---|
SLS_ENDPOINT | Titik akhir Log Service untuk wilayah proyek Anda. Lihat Endpoints. |
SLS_AK_ID | ID AccessKey Anda. Ambil dari Konsol Manajemen Pengguna. ![]() |
SLS_AK_KEY | Rahasia AccessKey Anda. |
SLS_PROJECT | Nama proyek SLS untuk instans WAF Anda. Nama proyek dimulai dengan waf-project. Proyek di wilayah Tiongkok (Hangzhou) milik instans WAF di Tiongkok daratan; proyek di Singapura milik instans WAF di luar Tiongkok daratan. Untuk menemukan nama proyek Anda, masuk ke Konsol Log ServiceKonsol Log Service. ![]() |
SLS_LOGSTORE | Nama penyimpanan log dalam proyek tersebut. Klik proyek WAF Anda di Konsol Log ServiceKonsol Log Service untuk melihat nama penyimpanan log. ![]() |
SLS_CG | Nama kelompok konsumen. Nilai default WAF-SLS berfungsi untuk sebagian besar penerapan. |
Parameter 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 | Deskripsi |
|---|---|
host | Alamat IP atau hostname server Syslog Anda. |
port | Port untuk data Syslog. Nilai yang didukung: 514 (UDP) dan 1468 (TCP). |
protocol | Protokol transport: udp atau tcp. Sesuaikan dengan konfigurasi server Syslog Anda. |
sep | Pembatas yang digunakan untuk memisahkan pasangan kunci-nilai dalam setiap pesan Syslog. |
facility | Kode facility Syslog yang mengklasifikasikan sumber log. Syslog menggunakan kode facility untuk mengarahkan pesan ke file log berbeda di server. Nilai default FAC_USER sesuai untuk log aplikasi umum. Untuk semua nilai yang tersedia, lihat dokumentasi syslogclient. |
severity | Tingkat severity Syslog untuk semua pesan yang diteruskan. Nilai default SEV_INFO sesuai untuk log akses WAF. |
timeout | Timeout koneksi dalam detik. Nilai default adalah 120. |
cert_path | Path ke file sertifikat TLS. Atur nilai ini saat menggunakan TLS melalui TCP. Biarkan sebagai None untuk koneksi tanpa enkripsi. |
Langkah 4: Jalankan Program Python
python sync_data_to_syslog.pyJika program Python berhasil dijalankan, output akan tampak seperti berikut:
*** 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]Log akses WAF kini diteruskan ke server Syslog Anda.
Langkah selanjutnya
Ikhtisar Log Service untuk WAF — Pelajari field log apa saja yang dikumpulkan WAF dan cara melakukan kueri terhadapnya.
Gunakan kelompok konsumen untuk mengonsumsi log — Pahami bagaimana pustaka konsumen mengelola konsumsi log terdistribusi.


