Topik ini menjelaskan cara menggunakan Program Python untuk mengintegrasikan log Web Application Firewall (WAF) ke server Syslog guna memenuhi persyaratan regulasi dan audit. Ini memungkinkan Anda mengelola semua log terkait di pusat operasi keamanan.
Informasi latar belakang
Gambar berikut menunjukkan arsitektur integrasi.
Layanan Log adalah layanan logging ujung-ke-ujung yang dikembangkan oleh Alibaba Cloud dan banyak digunakan dalam skenario data besar. Layanan ini mendukung pengumpulan, konsumsi, pengiriman, pencarian, dan analisis data log tanpa perlu pengembangan tambahan. Hal ini meningkatkan efisiensi O&M dan operasional serta memberikan kemampuan untuk memproses sejumlah besar log di era Teknologi Data (DT). WAF terintegrasi dengan Layanan Log. Fitur Layanan Log untuk WAF memungkinkan Anda mengumpulkan, mencari, dan menganalisis log akses situs web. Untuk informasi lebih lanjut, lihat Ikhtisar.
Program Python adalah program yang berjalan pada instance ECS untuk mengirimkan log WAF ke server Syslog. Pustaka konsumen adalah mode lanjutan yang disediakan untuk konsumen LogHub. Pustaka ini menggunakan grup konsumen untuk mengelola ujung konsumsi. Dibandingkan dengan mode di mana data dibaca menggunakan SDK, pustaka konsumen memungkinkan Anda fokus hanya pada logika bisnis tanpa harus khawatir tentang detail implementasi Layanan Log atau toleransi kesalahan di antara beberapa konsumen. Untuk informasi lebih lanjut, lihat Gunakan grup konsumen untuk mengonsumsi log.
Server Syslog mengelola pesan log secara terpusat dan dapat menerima data dari berbagai sumber Syslog.
Prasyarat
Layanan Log untuk WAF telah diaktifkan, termasuk fitur pengumpulan log untuk nama domain Anda. Untuk informasi lebih lanjut, lihat Memulai dengan fitur Layanan Log Sederhana untuk WAF.
Instance ECS Linux dengan konfigurasi berikut telah diterapkan:
Sistem operasi Ubuntu
Prosesor 2,0 GHz atau lebih tinggi, dengan delapan inti
Memori 32 GB
Ruang disk tersedia lebih dari 2 GB (disarankan lebih dari 10 GB).
Server Syslog telah diterapkan, dan port UDP 514 diaktifkan untuk menerima data Syslog.
Prosedur
Instal SDK Layanan Log untuk Python pada instance ECS Anda dan konfigurasikan Program Python untuk mengirimkan log WAF ke server Syslog. Ikuti langkah-langkah berikut:
Hubungkan ke instance ECS menggunakan SSH atau melalui konsol ECS. Untuk informasi lebih lanjut, lihat Metode untuk menghubungkan ke instance ECS.
Instal Python 3, pip, dan aliyun-log-python-sdk. Untuk informasi lebih lanjut tentang SDK Layanan Log untuk Python, lihat Panduan Pengguna.
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-sdkJalankan perintah berikut untuk mengunduh kode contoh integrasi terbaru dari GitHub:
wget https://raw.githubusercontent.com/aliyun/aliyun-log-python-sdk/master/tests/consumer_group_examples/sync_data_to_syslog.pyGanti parameter Layanan Log dan Syslog dalam Program Python. Tabel berikut menjelaskan parameter tersebut.
Parameter
Arti
Deskripsi
Proyek SLS
Nama proyek log
Proyek adalah unit dasar untuk mengisolasi dan mengontrol sumber daya dalam Layanan Log.
Anda dapat masuk ke Konsol Layanan Log untuk melihat proyek log WAF.
Nama proyek log WAF dimulai dengan
waf-project. Proyek yang berada di wilayah China (Hangzhou) adalah proyek log instance WAF di daratan Tiongkok. Proyek yang berada di wilayah Singapore adalah proyek log instance WAF di luar daratan Tiongkok.
Titik akhir SLS
Titik akhir Layanan Log
Titik akhir Layanan Log adalah URL yang digunakan untuk mengakses proyek dan log dalam proyek. Titik akhir bervariasi berdasarkan wilayah Alibaba Cloud tempat proyek berada dan nama proyek. Untuk melihat URL, lihat Titik akhir.
Penyimpanan log SLS
Penyimpanan log
Penyimpanan log adalah unit dalam Layanan Log untuk mengumpulkan, menyimpan, dan mencari data log. Setiap penyimpanan log milik satu proyek. Setiap proyek dapat memiliki beberapa penyimpanan log.
Anda dapat masuk ke Konsol Layanan Log dan klik proyek log WAF untuk melihat nama penyimpanan log.

ID AccessKey SLS dan Rahasia AccessKey
Pasangan AccessKey
Pasangan AccessKey terdiri dari ID AccessKey dan rahasia AccessKey dan dirancang untuk mengakses sumber daya cloud Anda menggunakan API alih-alih konsol. Anda dapat menggunakan pasangan AccessKey untuk menandatangani permintaan API sehingga permintaan tersebut dapat melewati otentikasi keamanan di Layanan Log. Untuk informasi lebih lanjut, lihat AccessKey.
Anda dapat masuk ke Konsol Manajemen Pengguna untuk melihat informasi pasangan AccessKey Anda.

Host Syslog
Host Syslog
Alamat IP atau nama host server Syslog.
Port Syslog
Port Syslog
Port yang digunakan untuk menerima data Syslog. Port UDP 514 dan port TCP 1468 didukung.
Protokol Syslog
Protokol Syslog
Protokol UDP atau TCP yang digunakan untuk menerima data Syslog. Nilai parameter bervariasi berdasarkan konfigurasi server Syslog.
Pemisah Syslog
Pemisah Syslog
Pemisah yang digunakan untuk memisahkan pasangan kunci-nilai Syslog.
Kode berikut memberikan contoh cara mengonfigurasi Program Python:
Konfigurasi Layanan Log
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')Konfigurasi 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 }
Mulai Program Python. Anggap Program Python disimpan sebagai
sync_data_to_syslog.py. Jalankan perintah berikut untuk memulainya:python sync_data_to_syslog.pyKeluaran perintah berikut menunjukkan bahwa log dikirim ke server Syslog setelah Program Python dimulai:
*** mulai mengonsumsi data... pekerja konsumen "WAF-SLS-1" mulai detak jantung dimulai hasil detak jantung: [] dapat: [0, 1] Dapatkan data dari shard 0, jumlah log: 6 Selesai mengirim data ke remote Dapatkan data dari shard 0, jumlah log: 2 Selesai mengirim data ke remote hasil detak jantung: [0, 1] dapat: [0, 1]
Anda dapat mencari log WAF di server Syslog.