Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podsumowanie
Ten artykuł ułatwia rozwiązywanie problemów z Web Application Firewall (WAF) dla Azure Application Gateway, gdy uzasadnione żądania są blokowane, dzięki czemu można zezwolić na prawidłowy ruch przy zachowaniu ochrony.
Zacznij od przejrzenia dokumentacji przeglądu WAF i konfiguracji WAF, a także upewnij się, że monitorowanie WAF jest włączone. W tych artykułach wyjaśniono, jak działa zapora aplikacji internetowej, jak działają zestawy reguł i jak uzyskiwać dostęp do dzienników zapory aplikacji internetowej.
Zestawy reguł OWASP zostały zaprojektowane tak, aby były rygorystyczne od razu po instalacji i mogły być dostosowane do konkretnych potrzeb aplikacji lub organizacji korzystających z WAF (zapory sieciowej). Tworzenie wykluczeń, niestandardowych reguł, a nawet wyłączanie reguł, które mogą powodować problemy lub fałszywe alarmy, jest całkowicie normalne, a w wielu przypadkach wręcz oczekiwane. Zasady dla poszczególnych witryn i adresów URI sprawiają, że zmiany wpływają tylko na określone witryny lub adresy URI. Zatem zmiany nie powinny wpływać na inne witryny, które mogą nie napotykać tych samych problemów.
Zrozumienie dzienników zapory aplikacji internetowej
Dzienniki WAF mają na celu ukazać każde żądanie, które WAF pozwala lub blokuje. Jest to rejestr wszystkich ocenianych żądań, które są zgodne lub blokowane. Jeśli zauważysz, że WAF blokuje żądanie, którego nie powinien blokować (fałszywy alarm), możesz podjąć kilka działań. Najpierw zawęź i znajdź konkretne żądanie. Przejrzyj dzienniki, aby znaleźć określony identyfikator URI, znacznik czasu lub identyfikator transakcji żądania. Po znalezieniu skojarzonych wpisów dziennika można zacząć działać w przypadku fałszywych alarmów.
Załóżmy na przykład, że masz legalny ruch zawierający ciąg 1=1, który chcesz przekazać za pośrednictwem WAF. Jeśli spróbujesz żądania, WAF blokuje ruch, który zawiera tekst 1=1 w dowolnym parametrze lub polu. Ten ciąg jest często skojarzony z atakiem polegającym na wstrzyknięciu kodu SQL. Możesz przejrzeć dzienniki i zobaczyć znacznik czasu żądania oraz reguły, które zablokowały lub odpowiadały.
W poniższym przykładzie widać, że cztery reguły są wyzwalane podczas tego samego żądania (przy użyciu pola TransactionId). Pierwszy z nich mówi, że jest zgodny, ponieważ użytkownik użył numerycznego adresu IP dla żądania, co zwiększa wynik anomalii o trzy, ponieważ jest to ostrzeżenie. Następna zgodna reguła to 942130, czyli ta, której szukasz. Możesz zobaczyć element 1=1 w details.data polu . To ponownie zwiększa wynik anomalii o trzy po raz kolejny, ponieważ jest to również ostrzeżenie. Ogólnie rzecz biorąc, każda reguła, która ma akcję Dopasowano, zwiększa wynik anomalii, a na tym etapie wynik anomalii wynosi sześć. Aby uzyskać więcej informacji, zobacz Tryb oceniania anomalii.
Ostatnie dwa wpisy dziennika pokazują, że żądanie zostało zablokowane, ponieważ wynik anomalii był wystarczająco wysoki. Te wpisy mają inne działanie niż pozostałe dwa. Pokazują, że rzeczywiście zablokowali żądanie. Te reguły są obowiązkowe i nie można ich wyłączyć. Nie myśl o tych regułach jak o regułach, lecz raczej jak o podstawowej infrastrukturze wewnętrznych mechanizmów WAF.
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "920350",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
"data": "40.90.218.160",
"file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
"line": "791"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "942130",
"message": "SQL Injection Attack: SQL Tautology Detected.",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
"data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
"file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
"line": "554"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
"data": "",
"file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
"line": "57"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
"data": "",
"file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
"line": "73"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
Korygowanie fałszywie pozytywnych wyników
Mając te informacje oraz wiedząc, że reguła 942130 dopasowała ciąg 1=1, możesz podjąć kilka kroków, aby zapobiec blokowaniu ruchu przez tę regułę:
Użyj listy wykluczeń. Aby uzyskać więcej informacji na temat list wykluczeń, odwołaj się do list wykluczeń WAF.
Wyłącz regułę.
Eliminowanie wyników fałszywie dodatnich na poziomie paranoi 2
W programie OWASP CRS 3.2 reguły 942430iniekcji SQL , 942440i 942450 należą do poziomu Paranoi 2 (PL2). Jeśli dzienniki WAF pokazują, że prawidłowe żądanie uwierzytelnienia zostało dopasowane do jednej z tych reguł, przed dodaniem wykluczenia zidentyfikuj pole żądania, które przyczyniło się do tego dopasowania. Upewnij się, że żądanie jest wiarygodne i zidentyfikuj identyfikator reguły oraz skonfigurowany zestaw reguł. Opisy oraz zamienniki specyficzne dla wersji można znaleźć w sekcji Grupy reguł i reguły WAF. Nie włączaj nieaktywnej reguły ani nie zmieniaj zestawów reguł, aby postępować zgodnie z tym przykładem.
- W Log Analytics użyj następującego zapytania, jeśli ustawienie diagnostyczne wysyła dzienniki zapory do tabeli
AzureDiagnostics. Zastąp identyfikator zasobu i zakres czasu bramą sieciową oraz przedziałem, które analizujesz. Te dzienniki mogą zawierać poufne dane żądania; nie udostępniaj wartości pól ani tokenów uwierzytelniania.
Uruchom następujące zapytanie.
AzureDiagnostics
| where TimeGenerated > ago(1h)
| where _ResourceId =~ "<application-gateway-resource-id>"
| where Category == "ApplicationGatewayFirewallLog"
| where ruleId_s in ("942430", "942440", "942450")
| project TimeGenerated, transactionId_g, requestUri_s,
ruleId_s, action_s, details_message_s, details_data_s
| order by TimeGenerated desc
- Znajdź transakcję dla żądania zakończonego niepowodzeniem. Reguła współuczestnicząca może mieć akcję
Matched, podczas gdy oddzielna reguła oceny anomalii blokuje transakcję. Aby sprawdzić wszystkie dopasowania dla tej transakcji, zastąp filtr rule-ID filtrem dlatransactionId_g. Nie wykluczaj reguły oceny anomalii zamiast reguły źródłowej. - W przypadku potwierdzonego fałszywego alarmu skonfiguruj wykluczenie dla konkretnego pola i tylko identyfikatorów reguł, które przyczyniły się do wykrycia. Wykluczenia dla poszczególnych reguł wymagają obsługiwanego zestawu reguł zasad WAF, takiego jak OWASP CRS 3.2. Użyj
Equalsdla selektora pól i zachowaj inne reguły i istniejące ustawienia zasad. Zapoznaj się z procedurą interfejsu wiersza polecenia o zakresie reguł i programem PowerShell oraz przykładami wykluczeń dla poszczególnych reguł. Aby uzyskać informacje na temat odnajdywania reguł, zobacz przewodnik dostosowywania programu PowerShell i przewodnik dostosowywania interfejsu wiersza polecenia. - Ponownie sprawdź zasadę, aby potwierdzić, że wykluczenie zawiera zamierzoną wersję zestawu reguł, grupę, identyfikatory reguł, zmienną dopasowania i selektor. Globalne wykluczenie już obejmujące to pole nadal ma zastosowanie; dodanie węższego wykluczenia nie powoduje jego usunięcia. Przejrzyj każde istniejące wykluczenie ogólne oddzielnie, zamiast usuwać wszystkie wykluczenia.
- Powtórz to samo uzasadnione żądanie i sprawdź odpowiedź oraz nowe dzienniki transakcji. Upewnij się, że wybrana reguła nie obejmuje już wykluczonego pola, a jeśli żądanie nadal jest blokowane, sprawdź, czy nie ma innych reguł, które się do tego przyczyniają. Puste zapytanie bez odtworzonego ruchu i działającego zbierania danych diagnostycznych nie stanowi potwierdzenia sukcesu. Sprawdź, czy niepowiązane pola pozostają sprawdzane w kontrolowanym środowisku testowym.
Nie wykluczaj automatycznie wszystkich trzech identyfikatorów ani wszystkich pól uwierzytelniania. Pozostaw WAF w trybie zapobiegania na potrzeby tej ukierunkowanej zmiany. Jeśli chcesz go cofnąć, usuń tylko dodane wykluczenie w zakresie reguł po przejrzeniu zasad; zachowaj istniejące wykluczenia.
Korzystanie z listy wykluczeń
Aby podjąć świadomą decyzję o obsłudze wyników fałszywie dodatnich, zapoznaj się z technologiami używanymi przez aplikację. Jeśli na przykład stos technologii nie zawiera serwera SQL i otrzymujesz fałszywie dodatnie wyniki związane z tymi regułami, wyłączenie tych reguł niekoniecznie osłabia bezpieczeństwo.
Wykluczenie powoduje pominięcie wybranego atrybutu żądania podczas kontroli. Globalne wykluczenie dotyczy wszystkich reguł zarządzanych, podczas gdy wykluczenie poszczególnych reguł dotyczy tylko wybranych reguł w obsługiwanym zestawie reguł. Oba mają zastosowanie wszędzie tam, gdzie przypisano zasady WAF, dlatego przed jej zmianą sprawdź zastosowania i ścieżki tej zasady. Na przykład wykluczenie pola może spowodować ryzyko, gdy wartość 1=1 jest prawidłowa dla jednej aplikacji, ale nie dla innej, która udostępnia zasady. Lepiej zastosować wykluczenie o węższym zakresie niż wykluczać całe żądanie.
Czasami niektóre parametry są przekazywane do WAF w sposób, który może być nieintuicyjny. Na przykład istnieje token, który jest przekazywany podczas uwierzytelniania przy użyciu Microsoft Entra ID.
__RequestVerificationToken jest zwykle przekazywany jako plik cookie żądania. Jednak w niektórych przypadkach, gdy pliki cookie są wyłączone, ten token jest również przekazywany jako atrybut żądania lub arg. W takim przypadku należy się upewnić, że __RequestVerificationToken zostanie dodana do listy wykluczeń jako nazwa atrybutu żądania .
W tym przykładzie chcesz wykluczyć nazwę atrybutu Request , która jest równa text1. Ta nazwa atrybutu jest widoczna, ponieważ nazwę atrybutu można zobaczyć w dziennikach zapory sieciowej: data: Matched Data: 1=1 found within ARGS:text1: 1=1. Atrybut to text1. Możesz również znaleźć tę nazwę atrybutu na kilka innych sposobów, zobacz Znajdowanie nazw atrybutów żądania.
Wykluczenia dla zapory aplikacyjnej (WAF) można tworzyć w usłudze Application Gateway na różnych poziomach zakresu. Aby uzyskać więcej informacji, zobacz Web Application Firewall listy wykluczeń.
Wyłączanie reguł
Innym sposobem radzenia sobie z fałszywym alarmem jest wyłączenie reguły, która dopasowała się do danych wejściowych, które WAF uznał za złośliwe. Ponieważ przeanalizowałeś dzienniki WAF i zawęziłeś wybór do reguły 942130, możesz ją wyłączyć w portalu Azure. Zobacz Dostosowywanie reguł zapory aplikacji internetowej za pośrednictwem portalu Azure.
Jeśli wiesz, że cały ruch zawierający określony warunek, który zwykle jest blokowany, jest prawidłowy, możesz wyłączyć tę regułę w całym WAF. Jeśli jednak jest to tylko prawidłowy ruch w określonym przypadku użycia, możesz otworzyć lukę w zabezpieczeniach, wyłączając tę regułę dla całej zapory aplikacji internetowej, ponieważ jest to ustawienie globalne.
Aby użyć Azure PowerShell, zobacz Dostosowywanie reguł zapory aplikacji internetowej za pomocą programu PowerShell. Aby użyć Azure CLI, zobacz Dostosowywanie reguł zapory aplikacji internetowej za pomocą Azure CLI.
Rejestrowanie plików HAR
Możesz użyć przeglądarki lub zewnętrznego narzędzia, takiego jak Fiddler, do rejestrowania plików archiwum HTTP (HAR). Pliki HAR zawierają informacje o żądaniach i odpowiedziach wysyłanych przez przeglądarkę podczas ładowania strony internetowej. Te informacje mogą być przydatne do rozwiązywania problemów z zaporą aplikacji internetowej (WAF).
Wskazówka
Dobrym rozwiązaniem jest przygotowanie pliku HAR podczas kontaktowania się z pomocą techniczną. Zespół pomocy technicznej może użyć pliku HAR, aby zdiagnozować problem.
Aby zarejestrować i zapisać plik HAR w Microsoft Edge, wykonaj następujące kroki:
Naciśnij F12 lub Ctrl+Shift+I, aby otworzyć narzędzia deweloperskie przeglądarki Edge. Możesz również otworzyć narzędzia z menu paska narzędzi w obszarze Więcej narzędzi>Narzędzia programistyczne.
Na karcie Konsola wybierz pozycję Wyczyść konsolę lub naciśnij klawisze Ctrl+L.
Wybierz kartę Sieć .
Wybierz Wyczyść dziennik sieci lub naciśnij Ctrl+L, a następnie wybierz Rejestruj dziennik sieciowy, jeśli nie jest rejestrowany.
Wczytaj stronę internetową chronioną przez WAF, którą chcesz zdiagnozować.
Zatrzymaj nagrywanie, wybierając Zatrzymaj rejestrowanie dziennika sieci.
Wybierz pozycję Eksportuj plik HAR (oczyszczony)... i zapisz plik HAR.
Znajdowanie nazw atrybutów żądania
Użyj programu Fiddler, aby sprawdzić poszczególne żądania i określić, jakie konkretne pola strony internetowej są wywoływane. Dzięki tym informacjom można wykluczyć niektóre pola z inspekcji przy użyciu list wykluczeń.
W tym przykładzie widać, że pole, w którym wprowadzono ciąg 1=1 , nosi nazwę text1.
Jest to pole, które można wykluczyć. Aby dowiedzieć się więcej na temat list wykluczeń, zobacz Listy wykluczeń zapory aplikacji internetowej. W tym przypadku można wykluczyć ocenę, konfigurując następujące wykluczenie:
Możesz również sprawdzić dzienniki zapory, aby uzyskać informacje o tym, co należy dodać do listy wykluczeń. Aby włączyć rejestrowanie, zobacz Kondycja zaplecza, dzienniki zasobów i metryki dla usługi Application Gateway.
Sprawdź dziennik zapory i wyświetl plik PT1H.json o godzinie, w której wystąpiło żądanie, które chcesz sprawdzić.
W tym przykładzie widać, że masz cztery reguły o tym samym identyfikatorze TransactionID i że wszystkie te reguły wystąpiły dokładnie w tym samym czasie:
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "920350",
"message": "Host header is a numeric IP address",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
"data": "40.90.218.160",
"file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
"line": "791"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "OWASP_CRS",
"ruleSetVersion": "3.0.0",
"ruleId": "942130",
"message": "SQL Injection Attack: SQL Tautology Detected.",
"action": "Matched",
"site": "Global",
"details": {
"message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
"data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
"file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
"line": "554"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
"data": "",
"file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
"line": "57"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
{
"resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
"operationName": "ApplicationGatewayFirewall",
"category": "ApplicationGatewayFirewallLog",
"properties": {
"instanceId": "appgw_3",
"clientIp": "203.0.113.139",
"clientPort": "",
"requestUri": "\/",
"ruleSetType": "",
"ruleSetVersion": "",
"ruleId": "0",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
"action": "Blocked",
"site": "Global",
"details": {
"message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
"data": "",
"file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
"line": "73"
},
"hostname": "vm000003",
"transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
}
}
Mając wiedzę na temat działania reguł CRS oraz świadomość, że zestaw reguł CRS 3.0 działa w oparciu o system oceniania anomalii (zobacz Web Application Firewall dla Azure Application Gateway), wiesz, że dwie ostatnie reguły z atrybutem action: Blocked blokują na podstawie całkowitej liczby punktów anomalii. Reguły, na których należy skupić się, to dwa pierwsze.
Pierwszy wpis jest rejestrowany, ponieważ użytkownik użył numerycznego adresu IP, aby przejść do usługi Application Gateway, którą można zignorować w tym przypadku.
Drugi wpis (reguła 942130) jest widoczny w szczegółach, ponieważ pasuje do wzorca (1=1), a pole nosi nazwę text1. Wykonaj te same poprzednie kroki, aby wykluczyć nazwę atrybutu żądania , która jest text1równa .
Wyszukiwanie nazw nagłówków żądania
Użyj narzędzia Fiddler, aby znaleźć nazwy nagłówków żądania. Na poniższym zrzucie ekranu można zobaczyć nagłówki dla tego żądania GET, które obejmują content-type, User-Agent i inne nagłówki.
Możesz również użyć narzędzi deweloperskich w programie Microsoft Edge lub Google Chrome, aby wyświetlić nagłówki żądań i odpowiedzi. Aby uzyskać więcej informacji, zobacz Rejestrowanie plików HAR.
Znajdowanie nazw plików cookie żądań
Jeśli żądanie zawiera pliki cookie, wybierz kartę Pliki cookie , aby wyświetlić je w programie Fiddler.
Ograniczanie parametrów globalnych w celu wyeliminowania wyników fałszywie dodatnich
Wyłączanie inspekcji treści żądania
Po ustawieniu opcji Inspekcja treści żądania na wartość Wyłączone zapora WAF nie analizuje treści żądań w ruchu. To ustawienie jest przydatne, jeśli wiadomo, że treść żądania nie jest złośliwa dla aplikacji.
Po wyłączeniu tej opcji tylko treść żądania pomija inspekcję. Nagłówki i pliki cookie są nadal sprawdzane, chyba że wykluczasz poszczególne przy użyciu funkcji listy wykluczeń.
Wyłączanie maksymalnego limitu treści żądania
Po wyłączeniu limitu maksymalnego rozmiaru treści żądania zapora aplikacji sieci Web (WAF) może przetwarzać duże treści żądań bez ich odrzucania z powodu przekroczenia limitu rozmiaru. To ustawienie jest przydatne, jeśli regularnie masz duże żądania.
Po wyłączeniu tej opcji treść żądania jest sprawdzana tylko do maksymalnego limitu inspekcji treści żądań. Jeśli w żądaniu znajduje się złośliwa treść poza maksymalnym limitem inspekcji treści żądania, WAF jej nie wykryje.
Wyłączanie maksymalnych limitów rozmiaru pliku
Po wyłączeniu limitów rozmiaru plików dla WAF można przesyłać duże pliki bez ich odrzucania przez WAF. Zezwalając na przekazywanie dużych plików, zwiększa się ryzyko przeciążenia zaplecza. Jeśli wiesz, że maksymalny rozmiar przekazywania plików może być, ustaw limit rozmiaru dla przekazywania plików nieco powyżej oczekiwanego maksymalnego rozmiaru. Ograniczenie rozmiaru pliku do normalnego przypadku użycia aplikacji jest innym sposobem zapobiegania atakom. Jeśli jednak przekazywanie plików regularnie wykracza poza maksymalny limit rozmiaru przekazywania plików, może być konieczne całkowite wyłączenie limitów rozmiaru przekazywania plików, aby uniknąć wyników fałszywie dodatnich.
Uwaga / Notatka
Jeśli wiesz, że aplikacja nigdy nie potrzebuje przekazywania plików powyżej danego rozmiaru, możesz ograniczyć ten rozmiar, ustawiając limit.
Ostrzeżenie
Po przypisaniu nowego zarządzanego zestawu reguł do zasad WAF wszystkie wcześniejsze dostosowania w istniejących zarządzanych zestawach reguł, takie jak stan reguły, akcje reguł i wykluczenia na poziomie reguł, zostają przywrócone do ustawień domyślnych nowego zarządzanego zestawu reguł. Jednak wszystkie niestandardowe reguły, ustawienia zasad i wykluczenia globalne pozostają nienaruszone podczas nowego przypisania zestawu reguł.
Metryki zapory (tylko zapora aplikacji internetowej, wersja 1)
W przypadku zapór aplikacji internetowych w wersji 1 portal udostępnia teraz następujące metryki:
- Liczba żądań zablokowanych przez zaporę aplikacji internetowych Liczba żądań, które zostały zablokowane.
- Web Application Firewall Liczba reguł, które spowodowały zablokowanie Wszystkie reguły, które pasują i żądanie jest blokowane.
- Web Application Firewall Łączna dystrybucja reguł Wszystkie reguły, które są zgodne podczas oceny.
Aby włączyć metryki, wybierz kartę Metryki w portalu i wybierz jedną z trzech metryk.