Menyetel Azure Web Application Firewall untuk Azure Front Door

Seperangkat aturan default yang dikelola Microsoft didasarkan pada Seperangkat Aturan Inti OWASP dan menyertakan aturan pengumpulan Inteligensi Ancaman Microsoft.

Sering kali diharapkan bahwa aturan firewall aplikasi web (WAF) harus disetel agar sesuai dengan kebutuhan spesifik aplikasi atau organisasi yang menggunakan WAF. Organisasi biasanya mencapai penyetelan dengan mengambil salah satu tindakan berikut:

  • Menentukan pengecualian aturan.
  • Membuat aturan kustom.
  • Menonaktifkan aturan yang mungkin menyebabkan masalah atau positif palsu.

Artikel ini menjelaskan apa yang dapat Anda lakukan jika permintaan yang harus melewati WAF Anda diblokir.

Catatan

Seperangkat aturan yang dikelola Microsoft tidak tersedia untuk SKU Standar Azure Front Door. Untuk informasi selengkapnya tentang SKU tingkat yang berbeda, lihat Perbandingan fitur antara tingkatan.

Baca gambaran umum WAF Azure Front Door dan Kebijakan WAF untuk dokumen Azure Front Door. Selain itu, aktifkan pemantauan dan pengelogan WAF. Artikel-artikel ini menjelaskan fungsi WAF, cara kerja seperangkat aturan WAF, dan cara mengakses log WAF.

Memahami log WAF

Tujuan log WAF adalah untuk menunjukkan setiap permintaan yang cocok atau diblokir oleh WAF. Ini adalah kumpulan semua permintaan yang dievaluasi yang cocok atau diblokir. Jika Anda melihat bahwa WAF memblokir permintaan yang seharusnya tidak diblokir (positif salah), Anda dapat melakukan beberapa hal.

Pertama, persempit dan temukan permintaan tertentu. Anda dapat mengonfigurasi pesan respons kustom untuk menyertakan trackingReference bidang untuk dengan mudah mengidentifikasi peristiwa dan melakukan kueri log pada nilai tertentu tersebut. Telusuri log untuk menemukan URI, tanda waktu, atau IP klien permintaan tersebut. Ketika Anda menemukan entri log terkait, Anda dapat bertindak berdasarkan positif palsu.

Misalnya, Anda memiliki lalu lintas sah yang berisi string 1=1 yang ingin Anda lewati WAF Anda. Berikut tampilan permintaannya:

POST http://afdwafdemosite.azurefd.net/api/Feedbacks HTTP/1.1
Host: afdwafdemosite.azurefd.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 55

UserId=20&captchaId=7&captchaId=15&comment="1=1"&rating=3

Jika Anda mencoba permintaan, WAF memblokir lalu lintas yang berisi string Anda 1=1 di parameter atau bidang apa pun. String ini sering dikaitkan dengan serangan injeksi SQL. Anda dapat melihat log dan melihat tanda waktu permintaan dan aturan yang diblokir atau dicocokkan.

Contoh berikut menunjukkan entri log yang dihasilkan berdasarkan kecocokan aturan. Anda dapat menggunakan kueri Analitik Log berikut untuk menemukan permintaan yang diblokir dalam 24 jam terakhir.

AzureDiagnostics
| where Category == 'FrontDoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'
AzureDiagnostics
| where Category == 'FrontdoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'

Di bidang requestUri, Anda dapat melihat permintaan dibuat secara khusus untuk /api/Feedbacks/. Selanjutnya, temukan ID 942110 aturan di ruleName bidang . Mengetahui ID aturan, Anda dapat membuka repositori resmi Seperangkat Aturan Inti ModSecurity OWASP dan mencari berdasarkan ID aturan tersebut untuk meninjau kodenya dan memahami dengan tepat apa aturan ini cocok.

Kemudian, dengan memeriksa action bidang , Anda dapat melihat bahwa aturan ini diatur untuk memblokir permintaan setelah pencocokan. Anda dapat mengonfirmasi bahwa permintaan diblokir oleh WAF karena policyMode diatur ke prevention.

Sekarang, periksa informasi di details bidang . Bidang ini adalah tempat Anda dapat melihat matchVariableName informasi dan matchVariableValue . Aturan ini dipicu karena seseorang memasukkan 1=1 di comment bidang aplikasi web.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

Ada juga nilai dalam memeriksa log akses untuk memperluas pengetahuan Anda tentang peristiwa WAF tertentu. Selanjutnya, tinjau log yang dihasilkan sebagai respons terhadap peristiwa sebelumnya.

Anda dapat melihat log ini terkait karena trackingReference nilainya sama. Di antara berbagai bidang yang memberikan wawasan umum, seperti userAgent dan clientIP, perhatikan httpStatusCode bidang dan httpStatusDetails . Di sini, Anda dapat melihat bahwa klien menerima respons HTTP 403, yang mengonfirmasi bahwa permintaan ini ditolak dan diblokir.

{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorAccessLog",
    "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}
{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorAccessLog",
    "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}

Mengatasi positif palsu

Untuk membuat keputusan berdasarkan informasi tentang menangani positif palsu, penting untuk membiasakan diri dengan teknologi yang digunakan aplikasi Anda. Misalnya, anggaplah tidak ada server SQL di tumpukan teknologi Anda, dan Anda mendapatkan kesalahan positif terkait dengan aturan tersebut. Menonaktifkan aturan tersebut tidak selalu melemahkan keamanan Anda.

Dengan informasi ini, dan pengetahuan bahwa aturan 942110 adalah yang cocok 1=1 dengan string dalam contoh, Anda dapat melakukan beberapa hal untuk menghentikan permintaan yang sah ini agar tidak diblokir:

Tip

Saat Anda memilih pendekatan untuk mengizinkan permintaan yang sah melalui WAF, cobalah untuk membuatnya sempit seperti yang Anda bisa. Misalnya, lebih baik menggunakan daftar pengecualian daripada menonaktifkan aturan sepenuhnya.

Gunakan daftar pengecualian

Salah satu manfaat menggunakan daftar pengecualian adalah bahwa hanya variabel kecocokan yang Anda pilih untuk dikecualikan yang tidak akan lagi diperiksa untuk permintaan yang diberikan. Artinya, Anda dapat memilih antara header permintaan, cookie permintaan, argumen string kueri, atau argumen pos isi permintaan tertentu untuk dikecualikan jika ketentuan tertentu terpenuhi, dibandingkan dengan mengecualikan seluruh permintaan dari pemeriksaan. Variabel lain yang tidak ditentukan dari permintaan diperiksa secara normal.

Pengecualian adalah pengaturan global. Pengecualian yang dikonfigurasi berlaku untuk semua lalu lintas yang melewati WAF Anda, bukan hanya aplikasi web atau URI tertentu. Misalnya, ini bisa menjadi perhatian jika 1=1 adalah permintaan yang valid dalam isi untuk aplikasi web tertentu, tetapi tidak untuk orang lain di bawah kebijakan WAF yang sama.

Jika masuk akal untuk menggunakan daftar pengecualian yang berbeda untuk aplikasi yang berbeda, pertimbangkan untuk menggunakan kebijakan WAF yang berbeda untuk setiap aplikasi dan menerapkannya ke ujung depan setiap aplikasi.

Saat mengonfigurasi daftar pengecualian untuk aturan terkelola, Anda dapat memilih untuk mengecualikan:

  • Semua aturan dalam seperangkat aturan.
  • Semua aturan dalam grup aturan.
  • Aturan individual.

Anda dapat mengonfigurasi daftar pengecualian dengan menggunakan PowerShell, Azure CLI, REST API, Bicep, templat Azure Resource Manager, atau portal Azure.

  • Pengecualian pada tingkat aturan: Menerapkan pengecualian pada tingkat aturan berarti bahwa pengecualian yang ditentukan tidak akan dianalisis terhadap aturan individual tersebut saja. Ini masih akan dianalisis oleh semua aturan lain dalam seperangkat aturan. Ini adalah tingkat yang paling terperinci untuk pengecualian. Anda dapat menggunakannya untuk menyempurnakan seperangkat aturan terkelola berdasarkan informasi yang Anda temukan di log WAF saat Anda memecahkan masalah peristiwa.
  • Pengecualian pada tingkat grup aturan: Menerapkan pengecualian pada tingkat grup aturan berarti bahwa pengecualian yang ditentukan tidak akan dianalisis terhadap sekumpulan jenis aturan tertentu. Misalnya, memilih SQLI sebagai grup aturan yang dikecualikan menunjukkan pengecualian permintaan yang ditentukan tidak akan diperiksa oleh salah satu aturan khusus SQLI. Ini masih akan diperiksa oleh aturan di grup lain, seperti PHP, RFI, atau XSS. Jenis pengecualian ini dapat berguna ketika Anda yakin aplikasi tidak rentan terhadap jenis serangan tertentu. Misalnya, aplikasi yang tidak memiliki database SQL dapat memiliki semua aturan SQLI yang dikecualikan tanpa merugikan tingkat keamanannya.
  • Pengecualian pada tingkat seperangkat aturan: Menerapkan pengecualian pada tingkat seperangkat aturan berarti bahwa pengecualian yang ditentukan tidak akan dianalisis terhadap salah satu aturan keamanan yang tersedia dalam seperangkat aturan tersebut. Pengecualian ini komprehensif, jadi gunakan dengan hati-hati.

Dalam contoh ini, Anda melakukan pengecualian pada tingkat yang paling terperinci dengan menerapkan pengecualian ke satu aturan. Anda ingin mengecualikan variabel kecocokan Permintaan nama bodi post args yang berisi comment. Anda dapat melihat detail variabel kecocokan di log firewall: "matchVariableName": "PostParamValue:comment". Atributnya adalah comment. Anda juga dapat menemukan nama atribut ini beberapa cara lain. Untuk informasi selengkapnya, lihat Menemukan nama atribut permintaan.

Screenshot that shows exclusion rules.

Screenshot that shows rule exclusion for a specific rule.

Terkadang, ada kasus di mana parameter tertentu diteruskan ke WAF dengan cara yang mungkin tidak intuitif. Misalnya, token akan diteruskan saat Anda mengautentikasi dengan menggunakan ID Microsoft Entra. Token __RequestVerificationToken biasanya diteruskan sebagai cookie permintaan.

Dalam beberapa kasus di mana cookie dinonaktifkan, token ini juga diteruskan sebagai argumen posting permintaan. Untuk alasan ini, untuk mengatasi positif palsu token Microsoft Entra, Anda harus memastikan bahwa __RequestVerificationToken ditambahkan ke daftar pengecualian untuk dan RequestCookieNamesRequestBodyPostArgsNames.

Pengecualian pada nama bidang (Pemilih) berarti bahwa nilai tidak akan lagi dievaluasi oleh WAF. Nama bidang itu sendiri terus dievaluasi dan dalam kasus yang jarang terjadi mungkin cocok dengan aturan WAF dan memicu tindakan.

Screenshot that shows rule exclusion for a rule set.

Ubah tindakan WAF

Cara lain untuk menangani perilaku aturan WAF adalah dengan memilih tindakan yang diperlukan ketika permintaan cocok dengan kondisi aturan. Tindakan yang tersedia adalah Izinkan, Blokir, Log, dan Alihkan.

Dalam contoh ini, tindakan default Blokir berubah menjadi tindakan Log pada aturan 942110. Tindakan ini menyebabkan WAF mencatat permintaan dan terus mengevaluasi permintaan yang sama terhadap aturan prioritas yang lebih rendah yang tersisa.

Screenshot that shows WAF actions.

Setelah melakukan permintaan yang sama, Anda dapat merujuk kembali ke log dan melihat bahwa permintaan ini cocok pada ID aturan 942110. Bidang action_s sekarang menunjukkan Log alih-alih Blokir. Kueri log kemudian diperluas untuk menyertakan trackingReference_s informasi untuk melihat apa lagi yang terjadi dengan permintaan ini.

Screenshot that shows a log showing multiple rule matches.

Sekarang Anda dapat melihat kecocokan aturan SQLI berbeda yang terjadi milidetik setelah ID aturan 942110 diproses. Permintaan yang sama cocok dengan aturan ID 942310, dan kali ini tindakan default Blokir dipicu.

Manfaat lain menggunakan tindakan Catat selama penyetelan atau pemecahan masalah WAF adalah Anda dapat mengidentifikasi apakah beberapa aturan dalam grup aturan tertentu cocok dan memblokir permintaan tertentu. Anda kemudian dapat membuat pengecualian di tingkat yang sesuai, yaitu, pada tingkat aturan atau grup aturan.

Gunakan aturan kustom

Setelah mengidentifikasi apa yang menyebabkan kecocokan aturan WAF, Anda dapat menggunakan aturan kustom untuk menyesuaikan bagaimana WAF merespons peristiwa tersebut. Aturan kustom diproses sebelum aturan terkelola. Mereka dapat berisi lebih dari satu kondisi, dan tindakannya dapat berupa Izinkan, Tolak, Log, atau Alihkan.

Peringatan

Saat permintaan cocok dengan aturan kustom, mesin WAF berhenti memproses permintaan. Aturan terkelola tidak akan diproses untuk permintaan ini dan tidak akan ada aturan kustom lain dengan prioritas yang lebih rendah.

Contoh berikut menunjukkan aturan kustom dengan dua kondisi. Kondisi pertama mencari comment nilai dalam isi permintaan. Kondisi kedua mencari /api/Feedbacks/ nilai dalam URI permintaan.

Dengan menggunakan aturan kustom, Anda dapat menjadi yang paling terperinci sehingga Anda dapat menyempurnakan aturan WAF Anda dan menangani positif palsu. Dalam hal ini, Anda tidak mengambil tindakan hanya berdasarkan comment nilai isi permintaan, yang dapat ada di beberapa situs atau aplikasi di bawah kebijakan WAF yang sama.

Ketika Anda menyertakan kondisi lain untuk juga cocok pada URI /api/Feedbacks/permintaan tertentu, Anda memastikan aturan kustom ini benar-benar berlaku untuk kasus penggunaan eksplisit yang Anda periksa. Dengan cara ini, serangan yang sama, jika dilakukan terhadap kondisi yang berbeda, masih diperiksa dan dicegah oleh mesin WAF.

Screenshot that shows a log.

Saat Menjelajahi log, Anda dapat melihat bahwa bidang berisi nama yang ruleName_s diberikan ke aturan redirectcommentkustom . Di bidang action_s, Anda dapat melihat bahwa tindakan Alihkan diambil untuk kejadian ini. details_matches_s Di bidang , Anda dapat melihat detail untuk kedua kondisi yang cocok.

Nonaktifkan aturan

Cara lain untuk mengatasi positif palsu adalah dengan menonaktifkan aturan yang cocok dengan input yang menurut WAF berbahaya. Karena Anda mengurai log WAF dan mempersempit aturan ke 942110, Anda dapat menonaktifkannya di portal Azure. Untuk informasi selengkapnya, lihat Mengkustomisasi aturan Azure Web Application Firewall dengan menggunakan portal Azure.

Menonaktifkan aturan adalah manfaat ketika Anda yakin bahwa semua permintaan yang memenuhi kondisi tertentu adalah permintaan yang sah, atau ketika Anda yakin aturan tidak berlaku untuk lingkungan Anda (seperti menonaktifkan aturan injeksi SQL karena Anda memiliki back end non-SQL).

Menonaktifkan aturan adalah pengaturan global yang berlaku untuk semua host front-end yang terkait dengan kebijakan WAF. Ketika Anda memilih untuk menonaktifkan aturan, Anda mungkin membiarkan kerentanan terekspos tanpa perlindungan atau deteksi untuk host front-end lainnya yang terkait dengan kebijakan WAF.

Jika Anda ingin menggunakan Microsoft Azure PowerShell untuk menonaktifkan aturan terkelola, lihat dokumentasi objek PSAzureManagedRuleOverride. Jika Anda ingin menggunakan Azure CLI, lihat dokumentasi.az network front-door waf-policy managed-rules override

Screenshot that shows WAF rules.

Tip

Dokumentasikan perubahan apa pun yang Anda buat pada kebijakan WAF Anda. Sertakan contoh permintaan untuk mengilustrasikan deteksi positif palsu. Jelaskan mengapa Anda menambahkan aturan kustom, menonaktifkan seperangkat aturan atau aturan, atau menambahkan pengecualian. Jika Anda mendesain ulang aplikasi di masa mendatang, Anda mungkin perlu memverifikasi bahwa perubahan Anda masih valid. Atau Anda mungkin diaudit atau perlu membenarkan mengapa Anda mengonfigurasi ulang kebijakan WAF dari pengaturan defaultnya.

Menemukan bidang permintaan

Dengan menggunakan proksi browser seperti Fiddler, Anda dapat memeriksa permintaan individual dan menentukan bidang spesifik halaman web apa yang dipanggil. Teknik ini berguna ketika Anda perlu mengecualikan bidang tertentu dari inspeksi dengan menggunakan daftar pengecualian di WAF.

Menemukan nama atribut permintaan

Dalam contoh ini, bidang tempat 1=1 string dimasukkan disebut comment. Data ini diteruskan dalam isi permintaan POST.

Screenshot that shows the body of a Fiddler request.

Anda dapat mengecualikan bidang ini. Untuk mempelajari selengkapnya tentang daftar pengecualian, lihat Daftar pengecualian firewall aplikasi web. Anda dapat mengecualikan evaluasi dalam kasus ini dengan mengonfigurasi pengecualian berikut:

Screenshot that shows an exclusion rule.

Anda juga dapat memeriksa log firewall guna mendapatkan informasi untuk melihat apa yang perlu ditambahkan ke daftar pengecualian. Untuk mengaktifkan pengelogan, lihat Memantau metrik dan log di Azure Front Door.

Periksa log firewall dalam file PT1H.json selama waktu kejadian permintaan yang ingin Anda periksa. File PT1H.json tersedia dalam kontainer akun penyimpanan tempat FrontDoorWebApplicationFirewallLog dan FrontDoorAccessLog log diagnostik disimpan.

Periksa log firewall dalam file PT1H.json selama waktu kejadian permintaan yang ingin Anda periksa. File PT1H.json tersedia dalam kontainer akun penyimpanan tempat FrontdoorWebApplicationFirewallLog dan FrontdoorAccessLog log diagnostik disimpan.

Dalam contoh ini, Anda dapat melihat aturan yang memblokir permintaan (dengan Referensi Transaksi yang sama) dan yang terjadi pada saat yang sama.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

Dengan pengetahuan Anda tentang cara kerja seperangkat aturan yang dikelola Azure, Anda tahu bahwa aturan dengan action: Block properti memblokir berdasarkan data yang cocok di isi permintaan. (Untuk informasi selengkapnya, lihat Azure Web Application Firewall di Azure Front Door.) Anda dapat melihat dalam detail bahwa ia cocok dengan pola (1=1) dan bidang diberi nama comment. Ikuti langkah-langkah sebelumnya yang sama untuk mengecualikan nama argumen pos isi permintaan yang berisi comment.

Menemukan nama header permintaan

Fiddler adalah alat yang berguna untuk menemukan nama header permintaan. Cuplikan layar berikut menunjukkan header untuk permintaan GET ini, yang mencakup Content-Type dan User-Agent. Anda juga dapat menggunakan header permintaan untuk membuat pengecualian dan aturan kustom di WAF.

Screenshot that shows the header of a Fiddler request.

Cara lain untuk melihat header permintaan dan respons adalah dengan melihat ke dalam alat pengembang browser Anda, seperti Microsoft Edge atau Chrome. Anda dapat memilih F12 atau klik kanan Periksa>Alat Pengembang. Pilih tab Jaringan . Muat halaman web dan pilih permintaan yang ingin Anda periksa.

Screenshot that shows a Network inspector request.

Jika permintaan berisi cookie, pilih tab Cookie untuk melihatnya di Fiddler. Informasi cookie juga dapat digunakan untuk membuat pengecualian atau aturan kustom di WAF.

Aturan penilaian anomali

Jika Anda melihat ID aturan 949110 selama proses penyetelan WAF Anda, kehadirannya menunjukkan bahwa permintaan diblokir oleh proses penilaian anomali.

Tinjau entri log WAF lainnya untuk permintaan yang sama dengan mencari entri log dengan referensi pelacakan yang sama. Lihatlah setiap aturan yang dipicu. Sesuaikan setiap aturan dengan mengikuti panduan dalam artikel ini.

Langkah berikutnya