Bagikan melalui


Log sumber daya untuk Azure Web Application Firewall

Anda bisa memantau sumberdaya Web Application Firewall menggunakan log. Anda dapat menyimpan performa, akses, dan data lainnya atau mengkonsumsinya dari sumber daya untuk tujuan pemantauan.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Log Diagnostik

Anda dapat menggunakan berbagai jenis log di Azure untuk mengelola dan memecahkan masalah gateway aplikasi. Anda dapat mengakses beberapa log ini melalui portal. Semua log dapat diekstrak dari Azure Blob storage dan ditampilkan di alat yang berbeda, seperti log Azure Monitor, Excel, dan Power BI. Anda dapat mempelajari selengkapnya tentang berbagai jenis log dari daftar berikut ini:

  • Log aktivitas: Anda dapat menggunakan log aktivitas Azure untuk melihat semua operasi yang dikirimkan ke langganan Azure Anda, dan statusnya. Entri log aktivitas dikumpulkan secara default, dan Anda dapat melihatnya di portal Microsoft Azure.
  • Log Akses Resource: Anda dapat menggunakan log ini untuk melihat pola akses Application Gateway dan menganalisis informasi penting. Ini termasuk IP penelepon, URL yang diminta, latensi respons, kode pengembalian, dan byte masuk dan keluar. Log ini berisi catatan individu untuk setiap permintaan dan asosiasi yang meminta ke Application Gateway unik yang memproses permintaan tersebut. Instans Application Gateway unik dapat diidentifikasi oleh instanceId properti.
  • Log Performa Resource: Anda dapat menggunakan log ini untuk melihat bagaimana performa instans Application Gateway. Log ini mengambil informasi performa untuk setiap instans, termasuk total permintaan yang dilayani, throughput dalam byte, total permintaan yang dilayani, jumlah permintaan yang gagal, dan jumlah instans back-end yang sehat dan tidak sehat. Log performa dikumpulkan setiap 60 detik. Log Performa hanya tersedia untuk SKU v1. Untuk SKU v2, gunakan Metrik untuk data performa.
  • Log Firewall Resource: Anda dapat menggunakan log ini untuk melihat permintaan yang dicatat melalui mode deteksi atau pencegahan application gateway yang dikonfigurasi dengan web application firewall.

Catatan

Log hanya tersedia untuk sumber daya yang disebarkan dalam model penyebaran Azure Resource Manager. Anda tidak dapat menggunakan log untuk sumber daya dalam model penyebaran klasik. Untuk pemahaman yang lebih baik tentang dua model ini, lihat artikel Memahami penyebaran Resource Manager dan penyebaran klasik.

Anda memiliki tiga opsi untuk menyimpan log:

  • Akun penyimpanan: Akun penyimpanan paling baik digunakan untuk log yang disimpan untuk durasi yang lebih lama dan ditinjau saat diperlukan.
  • Hub peristiwa: Hub acara adalah opsi yang bagus untuk pengintegrasian dengan alat informasi keamanan dan manajemen peristiwa (SIEM) lainnya untuk mendapatkan peringatan tentang sumber daya Anda.
  • Log Azure Monitor: Log Azure Monitor paling baik digunakan untuk pemantauan aplikasi secara real-time dan menyeluruh atau melihat tren.

Aktifkan pengelogan dengan PowerShell

Pembuatan log aktivitas diaktifkan secara otomatis untuk setiap sumber daya Resource Manager. Anda harus mengaktifkan akses dan pengelogan performa untuk mulai mengumpulkan data yang tersedia dalam log tersebut. Untuk mengaktifkan pengelogan, gunakan langkah berikut:

  1. Perhatikan ID sumber daya akun penyimpanan Anda, tempat data log disimpan. Nilai ini dalam bentuk formulir: /subscriptions/<subscriptionId>/resourceGroups/<nama grup sumber daya>/providers/Microsoft.Storage/storageAccounts/<nama akun penyimpanan>. Anda dapat menggunakan akun penyimpanan apa pun di langganan Anda. Anda dapat menggunakan portal Microsoft Azure untuk melihat informasi ini.

    Portal: ID sumber daya untuk akun penyimpanan

  2. Perhatikan ID sumber daya gateway aplikasi Anda yang pengelogannya aktif. Nilai ini dalam bentuk formulir: /subscriptions/<subscriptionId>/resourceGroups/<nama grup sumber daya>/providers/Microsoft.Network/applicationGateways/<nama gateway aplikasi>. Anda dapat menggunakan portal untuk melihat informasi ini.

    Portal: ID sumber daya untuk gateway aplikasi

  3. Aktifkan pengelogan sumber daya dengan menggunakan cmdlet PowerShell berikut ini:

    Set-AzDiagnosticSetting  -ResourceId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name> -StorageAccountId /subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> -Enabled $true     
    

Tip

Log aktivitas tidak memerlukan akun penyimpanan terpisah. Penggunaan penyimpanan untuk log akses dan performa dikenakan biaya layanan.

Aktifkan pengelogan melalui portal Microsoft Azure

  1. Di portal Microsoft Azure, temukan sumber daya Anda dan pilih Pengaturan diagnostik.

    Untuk Application Gateway, tersedia tiga log:

    • Log akses
    • Log performa
    • Log firewall
  2. Pilih Menambahkan pengaturan diagnostik.

  3. Halaman Pengaturan diagnostik menyediakan pengaturan untuk log sumber daya. Pada contoh ini, Log Analitik menyimpan log. Anda juga dapat menggunakan pusat aktivitas, akun penyimpanan, atau solusi mitra untuk menyimpan log sumber daya.

    Cuplikan layar memperlihatkan pengaturan Diagnostik.

  4. Ketik nama untuk pengaturan, konfirmasikan pengaturan, dan pilih Simpan.

Log aktivitas

Azure menghasilkan log aktivitas secara default. Log ini disimpan selama 90 hari di penyimpanan log peristiwa Azure. Pelajari selengkapnya tentang log ini dengan membaca artikel Melihat log peristiwa dan log aktivitas.

Log akses

Log akses dibuat hanya jika Anda telah mengaktifkannya pada setiap instans Application Gateway, sebagaimana terperinci dalam langkah sebelumnya. Data disimpan di akun penyimpanan yang Anda tentukan saat Anda mengaktifkan pengelogan. Setiap akses Application Gateway dicatat dalam format JSON, seperti yang ditunjukkan dalam contoh berikut untuk v1:

Nilai Deskripsi
instansId Instans Application Gateway yang melayani permintaan.
clientIP IP asal permintaan.
clientPort Porta asal permintaan.
httpMethod Metode HTTP yang digunakan oleh permintaan.
requestUri URI permintaan yang diterima.
RequestQuery Server-Routed: Instans kumpulan back-end yang dikirimi permintaan.
X-AzureApplicationGateway-LOG-ID: ID Korelasi yang digunakan untuk permintaan. ID korelasi ini dapat digunakan untuk memecahkan masalah lalu lintas di server ujung belakang.
SERVER-STATUS: Kode respons HTTP yang diterima Application Gateway dari ujung-belakang.
UserAgent Agen pengguna dari header permintaan HTTP.
httpStatus Kode status HTTP yang dikembalikan ke klien dari Application Gateway.
httpVersion Versi HTTP permintaan.
receivedBytes Ukuran paket yang diterima, dalam byte.
sentBytes Ukuran paket yang dikirim, dalam byte.
timeTaken Lamanya waktu (dalam milidetik) yang diperlukan untuk permintaan diproses dan responsnya dikirim. Dihitung sebagai interval dari waktu ketika Application Gateway menerima byte pertama permintaan HTTP sampai waktu ketika operasi pengiriman respons selesai. Penting untuk diperhatikan bahwa bidang Time-Taken biasanya mencakup waktu paket permintaan dan respons melintasi jaringan.
sslEnabled Apakah komunikasi ke kumpulan back-end menggunakan TLS / SSL atau tidak. Nilai yang valid yaitu aktif dan nonaktif.
tuan rumah Nama host yang mengirimkan permintaan ke server ujung belakang. Jika nama host ujung belakang sedang ditimpa, nama ini akan menunjukkannya.
originalHost Nama host tempat Application Gateway menerima permintaan dari klien.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "timestamp": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "ApplicationGatewayRole_IN_0",
        "clientIP": "191.96.249.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=874f1f0f-6807-41c9-b7bc-f3cfa74aa0b1&SERVER-STATUS=404",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "host": "www.contoso.com",
        "originalHost": "www.contoso.com"
    }
}

Untuk Application Gateway dan WAF v2, log menunjukkan sedikit lebih banyak informasi:

Nilai Deskripsi
instansId Instans Application Gateway yang melayani permintaan.
clientIP IP asal permintaan.
clientPort Porta asal permintaan.
httpMethod Metode HTTP yang digunakan oleh permintaan.
requestUri URI permintaan yang diterima.
UserAgent Agen pengguna dari header permintaan HTTP.
httpStatus Kode status HTTP yang dikembalikan ke klien dari Application Gateway.
httpVersion Versi HTTP permintaan.
receivedBytes Ukuran paket yang diterima, dalam byte.
sentBytes Ukuran paket yang dikirim, dalam byte.
timeTaken Lamanya waktu (dalam milidetik) yang diperlukan untuk permintaan diproses dan responsnya dikirim. Dihitung sebagai interval dari waktu ketika Application Gateway menerima byte pertama permintaan HTTP sampai waktu ketika operasi pengiriman respons selesai. Penting untuk diperhatikan bahwa bidang Time-Taken biasanya mencakup waktu paket permintaan dan respons melintasi jaringan.
sslEnabled Apakah komunikasi ke kumpulan back-end menggunakan TLS / SSL atau tidak. Nilai yang valid yaitu aktif dan nonaktif.
sslCipher Cipher suite yang sedang digunakan untuk komunikasi TLS (jika TLS aktif).
sslProtocol Protokol TLS sedang digunakan (jika TLS diaktifkan).
serverRouted Server ujung belakang tempat gateway aplikasi merutekan permintaan.
serverStatus Kode status HTTP server ujung belakang.
serverResponseLatency Latensi respons dari server ujung belakang.
tuan rumah Alamat yang tercantum di header host permintaan.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "time": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "appgw_1",
        "clientIP": "191.96.249.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "sslCipher": "",
        "sslProtocol": "",
        "serverRouted": "104.41.114.59:80",
        "serverStatus": "200",
        "serverResponseLatency": "0.023",
        "host": "www.contoso.com",
    }
}

Log performa

Log performa dibuat hanya jika Anda telah mengaktifkannya pada setiap instans Application Gateway, sebagaimana terperinci dalam langkah sebelumnya. Data disimpan di akun penyimpanan yang Anda tentukan saat Anda mengaktifkan pengelogan. Data log performa dihasilkan dalam interval 1 menit. Data ini hanya tersedia untuk SKU v1. Untuk SKU v2, gunakan Metrik untuk data performa. Data berikut dicatat:

Nilai Deskripsi
instansId Instans Application Gateway tempat data performa dihasilkan. Untuk gateway aplikasi multi-instans, ada satu baris per instans.
healthyHostCount Jumlah host sehat di kumpulan back-end.
unHealthyHostCount Jumlah host tidak sehat di kumpulan back-end.
requestCount Jumlah permintaan yang dilayani.
latency Rata-rata latensi (dalam milidetik) permintaan dari instans ke ujung belakang yang melayani permintaan.
failedRequestCount Jumlah permintaan yang gagal.
throughput Rata-rata throughput sejak log terakhir, dihitung dalam byte per detik.
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayPerformance",
    "time": "2016-04-09T00:00:00Z",
    "category": "ApplicationGatewayPerformanceLog",
    "properties":
    {
        "instanceId":"ApplicationGatewayRole_IN_1",
        "healthyHostCount":"4",
        "unHealthyHostCount":"0",
        "requestCount":"185",
        "latency":"0",
        "failedRequestCount":"0",
        "throughput":"119427"
    }
}

Catatan

Latensi dihitung dari waktu ketika byte pertama permintaan HTTP diterima hingga saat byte terakhir respons HTTP dikirim. Ini adalah jumlah waktu pemrosesan Application Gateway ditambah biaya jaringan ke ujung belakang, ditambah waktu yang diperlukan ujung belakang untuk memproses permintaan.

Log firewall

Log firewall dibuat hanya jika Anda telah mengaktifkannya pada setiap instans Application Gateway, sebagaimana terperinci dalam langkah sebelumnya. Log ini juga mengharuskan firewall aplikasi web dikonfigurasi di gateway aplikasi. Data disimpan di tujuan yang Anda tentukan saat mengaktifkan pengelogan. Data berikut dicatat:

Nilai Deskripsi
instansId Instans Application Gateway tempat data firewall dihasilkan. Untuk gateway aplikasi multi-instans, ada satu baris per instans.
clientIp IP asal permintaan.
requestUri URI permintaan yang diterima.
ruleSetType Jenis seperangkat aturan. Nilai yang tersedia adalah OWASP.
ruleSetVersion Versi seperangkat aturan yang digunakan. Nilai yang tersedia adalah 2.2.9 dan 3.0.
ruleId ID aturan dari kejadian pemicu.
pesan Pesan ramah-pengguna untuk kejadian pemicu. Detail lebih lanjut disediakan di bagian detail.
tindakan Mode Kebijakan: Deteksi Terdeteksi
-
- Ini adalah satu-satunya tindakan untuk WAF saat dalam mode deteksi. Semua kondisi untuk aturan tertentu dicocokkan dan permintaan dicatat kemudian diteruskan ke backend.

Mode Kebijakan: Pencegahan
- Diizinkan
- Semua kondisi dicocokkan untuk aturan tertentu dan permintaan diteruskan ke backend.
- Diblokir - Semua kondisi dicocokkan untuk aturan tertentu dan permintaan diblokir.
- Cocok - Satu/lebih kondisi dicocokkan dengan aturan tertentu, tetapi keputusan untuk memblokir atau meneruskan permintaan akan memerlukan evaluasi lebih lanjut dan akan dievaluasi berdasarkan aturan penilaian anomali akhir.

Mode Kebijakan: Tantangan JS
- JSChallengeIssued: Dikeluarkan karena izin tantangan yang hilang/tidak valid, jawaban yang hilang.

Log ini dibuat ketika klien meminta akses ke aplikasi web untuk pertama kalinya dan belum ditantang sebelumnya. Klien ini menerima halaman tantangan JS dan melanjutkan untuk menghitung tantangan JS. Setelah komputasi berhasil, klien diberikan cookie validitas.

- JSChallengePass: Lulus karena jawaban tantangan yang valid.

Log ini dibuat ketika klien memecahkan tantangan JS dan mengirimkan ulang permintaan dengan jawaban yang benar. Dalam hal ini, Azure WAF memvalidasi cookie dan melanjutkan untuk memproses aturan yang tersisa tanpa menghasilkan tantangan JS lain.

- JSChallengeValid: Logged/passthrough karena tantangan yang valid

Log ini dibuat ketika klien sebelumnya telah menyelesaikan tantangan. Dalam hal ini, Azure WAF mencatat permintaan dan melanjutkan untuk memproses aturan yang tersisa.

- JSChallengeBlock: Diblokir

Log ini dibuat ketika komputasi tantangan JS gagal.
site Situs tempat log dihasilkan. Saat ini, hanya Global yang terdaftar karena aturan bersifat global.
detail Detail kejadian pemicu.
details.message Deskripsi aturan.
details.data Data tertentu yang ditemukan dalam permintaan yang cocok dengan aturan.
details.file File konfigurasi yang memuat aturan.
details.line Nomor baris dalam file konfigurasi yang memicu peristiwa.
hostname Nama host atau alamat IP Application Gateway.
transactionId ID khusus untuk transaksi tertentu yang membantu mengelompokkan beberapa pelanggaran aturan yang terjadi dalam permintaan yang sama.
policyId ID unik Kebijakan Firewall yang terkait dengan Gateway Aplikasi, Perespons, atau Jalur.
policyScope Lokasi kebijakan - nilai dapat berupa "Global", "Perespons", atau "Lokasi".
policyScopeName Nama objek tempat kebijakan diterapkan.
{
  "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
  "operationName": "ApplicationGatewayFirewall",
  "time": "2017-03-20T15:52:09.1494499Z",
  "category": "ApplicationGatewayFirewallLog",
  "properties": {
      "instanceId": "ApplicationGatewayRole_IN_0",
      "clientIp": "52.161.109.147",
      "requestUri": "/",
      "ruleSetType": "OWASP",
      "ruleSetVersion": "3.0",
      "ruleId": "920350",
      "ruleGroup": "920-PROTOCOL-ENFORCEMENT",
      "message": "Host header is a numeric IP address",
      "action": "Matched",
      "site": "Global",
      "details": {
        "message": "Warning. Pattern match \"^[\\\\d.:]+$\" at REQUEST_HEADERS:Host ....",
        "data": "127.0.0.1",
        "file": "rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
        "line": "791"
      },
      "hostname": "127.0.0.1",
      "transactionId": "16861477007022634343",
      "policyId": "/subscriptions/1496a758-b2ff-43ef-b738-8e9eb5161a86/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
      "policyScope": "Listener",
      "policyScopeName": "httpListener1"
    }
  }
}

Melihat dan menganalisis log aktivitas

Anda dapat melihat dan menganalisis data log aktivitas dengan menggunakan salah satu metode berikut:

  • Alat Azure: Mengambil informasi dari log aktivitas melalui Azure PowerShell, Azure CLI, REST API Azure, atau portal Microsoft Azure. Petunjuk langkah demi langkah untuk setiap metode dijelaskan dalam artikel Operasi aktivitas dengan Resource Manager.
  • Power BI: Jika Anda belum memiliki akun Power BI, Anda dapat mencobanya secara gratis. Dengan menggunakan aplikasi templat Power BI, Anda dapat menganalisis data.

Melihat dan menganalisis log akses, performa, dan firewall

Log Azure Monitor dapat mengumpulkan penghitung dan file log peristiwa dari akun Blob storage Anda. Ini termasuk visualisasi dan kemampuan pencarian yang canggih untuk menganalisis log Anda.

Anda juga dapat terhubung ke akun penyimpanan dan mengambil entri log JSON untuk log akses dan performa. Setelah mengunduh file JSON, Anda dapat mengonversinya ke CSV dan menampilkannya di Excel, Power BI, atau alat visualisasi data lainnya.

Tip

Jika Anda terbiasa dengan Visual Studio dan konsep dasar pengubahan nilai untuk konstanta dan variabel di C#, Anda dapat menggunakan alat pengonversi log yang tersedia dari GitHub.

Menganalisis log Access melalui GoAccess

Kami telah menerbitkan templat Resource Manager yang menginstal dan menjalankan penganalisis log populer GoAccess untuk Log Akses Application Gateway. GoAccess menyediakan statistik lalu lintas HTTP penting seperti Pengunjung Unik, File yang Diminta, Host, Sistem Operasi, Browser, kode Status HTTP, dan banyak lagi. Untuk detail lebih lanjut, lihat file Readme di folder templat Resource Manager di GitHub.

Langkah berikutnya