Azure Web Uygulaması Güvenlik Duvarı için kaynak günlükleri

Şunlar için geçerlidir: ✔️ Application Gateway

Günlükleri kullanarak Web Uygulaması Güvenlik Duvarı kaynakları izleyebilirsiniz. Performansı, erişimi ve diğer verileri kaydedebilir veya izleme amacıyla bir kaynaktan kullanabilirsiniz.

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Tanılama günlükleri

Azure'da, uygulama ağ geçitlerini yönetmek ve sorunlarını gidermek için farklı günlük türlerini kullanabilirsiniz. Bu günlüklerden bazılarına portaldan erişebilirsiniz. Tüm günlükler Azure Blob depolamadan ayıklanabilir ve Azure İzleyici günlükleri, Excel ve Power BI gibi farklı araçlarda görüntülenebilir. Aşağıdaki listeden farklı günlük türleri hakkında daha fazla bilgi edinebilirsiniz:

  • Etkinlik günlüğü: Azure aboneliğinize gönderilen tüm işlemleri ve bunların durumunu görüntülemek için Azure etkinlik günlüklerini kullanabilirsiniz. Etkinlik günlüğü girişleri varsayılan olarak toplanır ve bunları Azure portalda görüntüleyebilirsiniz.
  • Erişim Kaynağı günlüğü: Application Gateway erişim desenlerini görüntülemek ve önemli bilgileri analiz etmek için bu günlüğü kullanabilirsiniz. Bu, arayanın IP adresini, istenen URL'yi, yanıt gecikmesini, dönüş kodunu ve giren ve çıkan baytları içerir. Bu günlük, her istek için ayrı ayrı kayıtlar içerir ve isteği işleyen benzersiz Application Gateway ile ilişkilendirir. Benzersiz Application Gateway örnekleri instanceId özelliği tarafından tanımlanabilir.
  • Performans Kaynak günlüğü: Application Gateway örneklerinin performansını görüntülemek için bu günlüğü kullanabilirsiniz. Bu günlük, sunulan toplam istek sayısı, bayt cinsinden aktarım hızı, başarısız istek sayısı ve sağlıklı ile sağlıksız arka uç birim sayısı gibi her örnek için performans bilgilerini yakalar. Performans günlüğü her 60 saniyede bir toplanır. Performans günlüğü yalnızca v1 SKU'su için kullanılabilir. v2 SKU'su için performans verileri için Ölçümler'i kullanın.
  • Güvenlik Duvarı Kaynak günlüğü: Web uygulaması güvenlik duvarıyla yapılandırılmış bir uygulama ağ geçidinin algılama veya önleme modu aracılığıyla günlüğe kaydedilen istekleri görüntülemek için bu günlüğü kullanabilirsiniz.

Not

Günlükler yalnızca Azure Resource Manager dağıtım modelinde dağıtılan kaynaklar için kullanılabilir. Klasik dağıtım modelindeki kaynaklar için günlükleri kullanamazsınız. İki modeli daha iyi anlamak için Resource Manager dağıtımını ve klasik dağıtımı anlama makalesine bakın.

Günlüklerinizi depolamak için kullanabileceğiniz üç seçenek vardır:

  • Depolama hesabı: Depolama hesaplarının en iyi kullanım amacı, günlüklerin uzun süre depolanması ve ihtiyaç duyulduğunda gözden geçirilmesi durumlarıdır.
  • Olay hub'ları: Olay hub'ları, kaynaklarınızla ilgili uyarılar almak için diğer güvenlik bilgileri ve olay yönetimi (SIEM) araçlarıyla tümleştirme için harika bir seçenektir.
  • Azure İzleyici günlükleri: Azure İzleyici günlükleri, uygulamanızın genel gerçek zamanlı izlemesi veya eğilimlerine bakmak için en iyi şekilde kullanılır.

PowerShell aracılığıyla kayıt almayı etkinleştirme

Etkinlik günlüğü tüm Kaynak Yöneticisi kaynakları için otomatik olarak etkinleştirilir. Bu günlükler aracılığıyla kullanılabilir verileri toplamaya başlamak için erişim ve performans günlüğünü etkinleştirmeniz gerekir. Günlüğü etkinleştirmek için aşağıdaki adımları kullanın:

  1. Günlük verilerinin depolandığı depolama hesabınızın kaynak kimliğini not edin. Bu değer şu biçimdedir: /subscriptions/<subscriptionId>/resourceGroups/<kaynak grubunun adı>/providers/Microsoft.Storage/storageAccounts/<depolama hesabının adı>. Aboneliğinizdeki herhangi bir depolama hesabını kullanabilirsiniz. Bu bilgileri Azure portalda bulabilirsiniz.

    Portal: Depolama hesabı için kaynak kimliği

  2. Günlük kaydının etkinleştirildiği uygulama ağ geçidinizin kaynak kimliğini not edin. Bu değer şu biçimdedir: /subscriptions/<subscriptionId>/resourceGroups/<kaynak grubu adı>/providers/Microsoft.Network/applicationGateways/<uygulama ağ geçidi adı>. Bu bilgileri portalda bulabilirsiniz.

    Portal: Uygulama ağ geçidi için kaynak kimliği

  3. Aşağıdaki PowerShell cmdlet'ini kullanarak kaynak günlüğünü etkinleştirin:

    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     
    

İpucu

Etkinlik günlükleri ayrı bir depolama hesabı gerektirmez . Depolama alanının erişim ve performans günlüğü kaydı için kullanılması durumunda hizmet ücreti tahsil edilir.

Azure portaldan günlüğe kaydetmeyi etkinleştirme

  1. Azure portalında kaynağınızı bulun ve Tanılama ayarları'nı seçin.

    Application Gateway için üç tane kayıt mevcuttur.

    • Erişim günlüğü
    • Performans günlüğü
    • Güvenlik duvarı günlüğü
  2. Tanılama ayarı ekle’yi seçin.

  3. Tanılama ayarı sayfası, kaynak günlükleri için ayarları sağlar. Bu örnekte Log Analytics günlükleri depolar. Kaynak günlüklerini kaydetmek için bir olay hub'ı, depolama hesabı veya iş ortağı çözümü de kullanabilirsiniz.

    Tanılama ayarlarını gösteren ekran görüntüsü.

  4. Ayarlar için bir ad yazın, ayarları onaylayın ve Kaydet'i seçin.

Etkinlik günlüğü

Azure, etkinlik günlüğünü varsayılan olarak oluşturur. Günlükler Azure olay günlükleri deposunda 90 gün boyunca korunur. Olayları ve etkinlik günlüğünü görüntüleme makalesini okuyarak bu günlükler hakkında daha fazla bilgi edinin.

Erişim günlüğü

Erişim günlüğü yalnızca önceki adımlarda açıklandığı gibi her Application Gateway örneğinde etkinleştirdiyseniz oluşturulur. Veriler, günlüğü etkinleştirdiğinizde belirttiğiniz depolama hesabında depolanır. Application Gateway'in her erişimi, aşağıdaki v1 örneğinde gösterildiği gibi JSON biçiminde günlüğe kaydedilir:

Değer Açıklama
instanceId İsteği işleyen Application Gateway örneği.
istemci IP'si Talep için kaynak IP.
clientPort İstek için başlangıç bağlantı noktası.
httpMethod İstek tarafından kullanılan HTTP yöntemi.
requestUri Alınan isteğin URI'sini.
İstek Sorgusu Sunucu Yönlendirmeli: İsteğin gönderildiği arka uç havuzu örneği.
X-AzureApplicationGateway-LOG-ID: İstek için kullanılan Korelasyon Kimliği. Arka uç sunucularında trafik sorunlarını gidermek için kullanılabilir.
SUNUCU DURUMU: Application Gateway'in arka uçtan aldığı HTTP yanıt kodu.
Kullanıcı Aracısı (UserAgent) HTTP isteği üst bilgisinden kullanıcı aracısı.
HTTP Durumu Application Gateway'den istemciye döndürülen HTTP durum kodu.
http Sürümü İsteğin HTTP sürümü.
receivedBytes (Alınan Bayt) Alınan paketin bayt cinsinden boyutu.
sentBytes Gönderilen paketin bayt cinsinden boyutu.
Geçen Süre İsteğin işlenmesi ve yanıtının gönderilmesi için gereken süre (milisaniye cinsinden). Bu, Application Gateway'in bir HTTP isteğinin ilk baytını aldığı zamandan yanıt gönderme işleminin sona erdiği zamana kadar olan zaman aralığı olarak hesaplanır. Geçen Süre alanının genellikle istek ve yanıt paketlerinin ağ üzerinden seyahat etme zamanını içerdiğini unutmayın.
SSL Etkin Arka uç havuzlarıyla iletişimin TLS/SSL kullanıp kullanmadığı. Geçerli değerler açık ve kapalı.
ev sahibi İsteğin arka uç sunucusuna gönderildiği konak adı. Arka plan ana bilgisayar adı geçersiz kılındıysa, bu ad bunu yansıtır.
orijinal sunucu İsteğin istemciden Application Gateway tarafından alındığı ana bilgisayar adı.
{
    "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": "203.0.113.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=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e&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"
    }
}

Application Gateway ve WAF v2 için günlükler biraz daha fazla bilgi gösterir:

Değer Açıklama
instanceId İsteği işleyen Application Gateway örneği.
istemci IP'si Talep için kaynak IP.
clientPort İstek için başlangıç bağlantı noktası.
httpMethod İstek tarafından kullanılan HTTP yöntemi.
requestUri Alınan isteğin URI'sini.
Kullanıcı Aracısı (UserAgent) HTTP isteği üst bilgisinden kullanıcı aracısı.
HTTP Durumu Application Gateway'den istemciye döndürülen HTTP durum kodu.
http Sürümü İsteğin HTTP sürümü.
receivedBytes (Alınan Bayt) Alınan paketin bayt cinsinden boyutu.
sentBytes Gönderilen paketin bayt cinsinden boyutu.
Geçen Süre İsteğin işlenmesi ve yanıtının gönderilmesi için gereken süre (milisaniye cinsinden). Bu, Application Gateway'in bir HTTP isteğinin ilk baytını aldığı zamandan yanıt gönderme işleminin sona erdiği zamana kadar olan zaman aralığı olarak hesaplanır. Geçen Süre alanının genellikle istek ve yanıt paketlerinin ağ üzerinden seyahat etme zamanını içerdiğini unutmayın.
SSL Etkin Arka uç havuzlarıyla iletişimin TLS kullanıp kullanmadığı. Geçerli değerler açık ve kapalı.
SSL Şifreleme TLS iletişimi için kullanılan şifreleme paketi (TLS etkinse).
SSL Protokolü TLS protokolü kullanılıyor (TLS etkinleştirildiyse).
sunucuYönlendirme İstekleri Application Gateway'in yönlendirdiği arka uç sunucusu.
sunucuDurumu Arka uç sunucusunun HTTP durum kodu.
sunucu yanıt gecikmesi Arka uç sunucusundan yanıt gecikmesi.
ev sahibi İsteğin ana bilgisayar üst bilgisinde listelenen adres.
{
    "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": "203.0.113.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",
    }
}

Performans günlüğü

Performans günlüğü yalnızca önceki adımlarda açıklandığı gibi her Application Gateway örneğinde etkinleştirdiyseniz oluşturulur. Veriler, günlüğü etkinleştirdiğinizde belirttiğiniz depolama hesabında depolanır. Performans günlüğü verileri 1 dakikalık aralıklarla oluşturulur. Yalnızca v1 SKU'su için kullanılabilir. v2 SKU'su için performans verileri için Ölçümler'i kullanın. Aşağıdaki veriler günlüğe kaydedilir:

Değer Açıklama
instanceId Performans verilerinin oluşturulduğu Application Gateway örneği. Çok örnekli bir uygulama ağ geçidi için örnek başına bir satır vardır.
Sağlıklı Sunucu Sayısı Arka uç havuzundaki sağlıklı konakların sayısı.
SağlıksızAnaMakineSayısı Arka uç havuzundaki iyi durumda olmayan konakların sayısı.
istekSayısı Sunulan istek sayısı.
gecikme süresi İsteklere hizmet eden örnekten arka uca yönelik isteklerin ortalama gecikme süresi (milisaniye cinsinden).
Başarısız İstek Sayısı Başarısız istek sayısı.
aktarım hızı Saniye başına bayt cinsinden ölçülen son günlükten bu yana ortalama aktarım hızı.
{
    "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"
    }
}

Not

Gecikme süresi, HTTP isteğinin ilk baytının alındığı zamandan HTTP yanıtının son baytının gönderildiği zamana kadar hesaplanır. Application Gateway işlem süresinin yanı sıra arka uç için ağ maliyetinin yanı sıra arka ucun isteği işlemesi için gereken sürenin toplamıdır.

Güvenlik duvarı günlüğü

Güvenlik duvarı günlüğü yalnızca önceki adımlarda açıklandığı gibi her bir uygulama ağ geçidi için etkinleştirdiyseniz oluşturulur. Bu günlük, web uygulaması güvenlik duvarının bir uygulama ağ geçidinde yapılandırılmasını da gerektirir. Veriler, günlüğü etkinleştirdiğinizde belirttiğiniz hedefte depolanır. Aşağıdaki veriler günlüğe kaydedilir:

Application Gateway

Günlük Biçimi

Değer Açıklama
instanceId Güvenlik duvarı verilerinin oluşturulduğu Application Gateway örneği. Çok örnekli bir uygulama ağ geçidi için örnek başına bir satır vardır.
clientIp Talep için kaynak IP.
requestUri Alınan isteğin URL'si.
kural seti tipi Kural kümesi türü. Kullanılabilir değer OWASP'dir.
ruleSetVersion Kullanılan kural kümesi sürümü. Kullanılabilir değerler 2.2.9 ve 3.0'dır.
ruleId (kural) Tetikleyen olayın kural kimliği.
ileti Tetikleme olayı için kullanıcı dostu ileti. Ayrıntılar bölümünde daha fazla ayrıntı sağlanır.
eylem İlke Modu: Algılama
- Algılandı - Algılama modundayken WAF'in gerçekleştirdiği tek eylem budur. Belirli bir kuralın tüm koşulları eşleştirildi ve istek günlüğe kaydedildi ve ardından arka uçtan geçirildi.

İlke Modu: Önlemeye
- İzin Verildi
- Belirli bir kural için tüm koşullar eşleştirildi ve istek arka uca geçirildi.
- Engellendi - Belirli bir kural için tüm koşullar eşleştirildi ve istek engellendi.
- Eşleştirildi - Belirli bir kural için bir/daha fazla koşul eşleştirildi, ancak isteği engelleme veya geçirme kararı daha fazla değerlendirmeye ihtiyaç duyar ve son anomali puanlama kuralına göre değerlendirilir.

İlke Modu: JS sınaması
- JSChallengeIssued: Eksik/geçersiz sınama izni, eksik yanıt nedeniyle verildi.

Bu günlük, bir istemci bir web uygulamasına ilk kez erişim istediğinde oluşturulur ve daha önce sınama yapılmamıştır. Bu istemci JS sınaması sayfasını alır ve JS sınamasını hesaplamaya devam eder. İşlem başarılı olduğunda istemciye geçerlilik çerezi verilir.

- JSChallengePass: Geçerli sınama yanıtı nedeniyle geçti.

Bu günlük, bir istemci JS sınamasını çözdüğünde ve isteği doğru yanıtla yeniden gönderdiğinde oluşturulur. Bu durumda Azure WAF tanımlama bilgisini doğrular ve başka bir JS sınaması oluşturmadan kalan kuralları işlemeye devam eder.

- JSChallengeValid: Geçerli sınama nedeniyle günlüğe kaydedildi/geçiş yapıldı

Bu günlük, bir müşteri daha önce bir sınamayı çözdüğünde oluşturulur. Bu durumda Azure WAF isteği günlüğe kaydeder ve kalan kuralları işlemeye devam eder.

- JSChallengeBlock: Engellendi

Bu günlük, bir JS sınaması hesaplaması başarısız olduğunda oluşturulur.
web sitesi Günlüğün oluşturulduğu site için. Şu anda, kurallar küresel olduğu için yalnızca "Global" listeleniyor.
ayrıntılar Tetikleme olayının ayrıntıları.
detaylar.mesaj Kuralın açıklaması.
detaylar.veri İstekte kuralla eşleşen belirli veriler bulundu.
ayrıntılar.dosya Kuralı içeren yapılandırma dosyası.
detaylar.satır Olayı tetikleyen yapılandırma dosyasındaki satır numarası.
Ana bilgisayar adı Application Gateway'in ana bilgisayar adı veya IP adresi.
transactionId (İşlem Kimliği) Aynı istekte oluşan birden çok kural ihlalini gruplandırmanıza yardımcı olan belirli bir işlemin benzersiz kimliği.
poliçe numarası Uygulama Ağ Geçidi, Dinleyici veya Yol ile ilişkili Güvenlik Duvarı İlkesinin Benzersiz Kimliği.
politika kapsamı İlkenin konumu - değerler "Genel", "Dinleyici" veya "Konum" olabilir.
politikaKapsamAdı İlkenin uygulandığı nesnenin adı.

Örnek

{
  "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": "203.0.113.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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/drewRG/providers/Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/perListener",
      "policyScope": "Listener",
      "policyScopeName": "httpListener1"
    }
  }
}

Etkinlik günlüğünü görüntüleme ve analiz etme

Aşağıdaki yöntemlerden birini kullanarak etkinlik günlüğü verilerini görüntüleyebilir ve analiz edebilirsiniz:

  • Azure araçları: Etkinlik günlüğü verilerini Azure PowerShell, Azure CLI, Azure REST API veya Azure portal üzerinden alabilirsiniz. Her yöntemle ilgili ayrıntılı adımlar Kaynak Yöneticisi etkinlik işlemleri makalesinde ayrıntılı bir şekilde anlatılmıştır.
  • Power BI: Power BI hesabınız yoksa ücretsiz oluşturabilirsiniz. Power BI şablon uygulamalarını kullanarak verilerinizi analiz edebilirsiniz.

Erişim, performans ve güvenlik duvarı günlüklerini görüntüleme ve analiz etme

Azure İzleyici günlükleri , Blob depolama hesabınızdan sayaç ve olay günlüğü dosyalarını toplayabilir. Günlüklerinizi analiz etmek için görselleştirmelere ve güçlü arama özelliklerine sahiptir.

Dilerseniz depolama hesabınıza bağlanabilir ve JSON erişim günlüklerini ve performans günlüklerini alabilirsiniz. İndirdiğiniz JSON dosyalarını CSV biçimine dönüştürebilir ve Excel, Power BI veya diğer veri görselleştirme araçlarında görüntüleyebilirsiniz.

İpucu

Visual Studio ve C# ile sabit ve değişken değerlerini değiştirme konusunda temel kavramlara hakimseniz GitHub'daki günlük dönüştürücü araçlarını kullanabilirsiniz.

GoAccess aracılığıyla Erişim günlüklerini çözümleme

Application Gateway Erişim Günlükleri için popüler GoAccess günlük çözümleyicisini yükleyen ve çalıştıran bir Resource Manager şablonu yayımladık. GoAccess, Benzersiz Ziyaretçiler, İstenen Dosyalar, Konaklar, İşletim Sistemleri, Tarayıcılar, HTTP Durum kodları ve daha fazlası gibi değerli HTTP trafik istatistikleri sağlar. Diğer ayrıntılar için lütfen GitHub'daki Resource Manager şablon klasöründeki Benioku dosyasına bakın.

Sonraki adımlar