GH GambleHub

Zapora sieciowa aplikacji i ochrona przed atakami

Krótkie podsumowanie

Filtry WAF/WAAP i kontrolują ruch HTTP (S )/WebSocket na poziomie aplikacji: blokuje eksploatację luk (OWASP Top 10), próby ominięcia uwierzytelniania, skanowania, zautomatyzowanego ruchu bot i L7 DDoS. Nowoczesny stos uzupełniony jest silnikiem anty-bot, ochroną API, ograniczeniem szybkości, wirtualnymi łatami, a także ciasną integracją z CI/CD, dzięki czemu zasady są tak bezpieczne, jak kod.

Role i miejsce w architekturze

Krawędź/CDN WAF (chmura): niskie opóźnienia, globalna reputacja/zarządzane zasady, L7 DDoS.
Samohosting WAF (on-prem/K8s): głęboka integracja z sieciami wewnętrznymi, precyzyjne dostrajanie.
Podejście WAAP: funkcje WAF + API-Gateway (schemat-walidacja, authZ), anty-bot, L7 DoS, mTLS.
Systemy włączenia: Reverse-proxy przed wnioskiem; Kontroler Ingress w K8s; Usługi filtry siatki; sidecar.

Model ochrony

Negatywne zabezpieczenie (podpisy/KSR): szybki zakres znanych technik (SQLi/XSS/SSRF/RCE).
Pozytywne zabezpieczenie (lista zezwoleń): zezwala tylko na „ważne” żądania (metody/ścieżki/schematy/typy treści).
Wirtualne łatanie: online blokowanie exploit do naprawy kodu.
Kontekst: różne zasady dotyczące treści statycznych, interfejsu API, administratorów, plików do pobrania, haków internetowych.

Typowe zagrożenia i środki

OWASP Top 10: SQLi, XSS, IDOR/BOLA, SSRF, zastrzyki szablonu, deserializacja, błędne konfiguracje.
L7 DDoS: powolne żądania/nagłówki, pęknięcie dla gorących punktów końcowych → ochrona: limity prędkości, wyzwanie, auto-blok.
Boty/skrobaki: zachowanie, częstotliwość, „nieludzkie” wzory, odciski palców urządzenia, żetony dynamiczne.
Wierzytelne nadziewanie/ATO: przechwytywanie/wyliczanie loginów → anomalia przez IP/ASN, zasady prędkości, dodatkowe czynniki.
Pliki do pobrania: type/size/multiscan antivirus, „image-only” w strefach medialnych.
API/GraphQL: schemat-walidacja, 'maxDepth '/' maxCost', zakaz bezkarnych dzikich kart, kontrola metod i nagłówków.

Projektanci zasad i zasad

Szkielet podstawowy do każdego zastosowania:

1. Transport: TLS 1. 2+/1. 3, HSTS, mTLS na wrażliwych oparciach.

2. Metody: lista zezwoleń ('GET, POST, PUT, DELETE, PATCH, OPTIONS') jest unikalna dla każdego zasobu.

3. Ścieżki: ścisłe maski/regexps; admin/billing - do oddzielnego prefiksu/domeny.

4. Nagłówki: białe listy, niepotrzebnie zakazane niebezpieczne ("X-Original-URL', niestandardowe).

5. Ciała: tylko JSON/Multipart-tylko na trasie; limity 'Content-Length', blok binariów dla „login/search”.

6. Limity stawek: per-IP/ASN/key/organization; oddzielne limity „drogich” wniosków.

7. Anty-bot: punktacja behawioralna, wyzwania „nie drażniące”, tożsamość klejenia (tokeny ciasteczek, FP JA3/TLS).

8. CRS/Managed Rules: włączone, dostrajanie w ramach FP.

9. Plastry Wirth: szybkie blokowanie znanych parametrów/wzorów ataku.

10. Dzienniki/mierniki: jednolity format, korelacja z 'trace _ id', raporty FP/TP.

Praktyka dostrajania: jak zmniejszyć fałszywe pozytywy

Uruchom nowe zasady w trybie Detect-only/Count-mode (shadow) z próbkowaniem ruchu.
Tworzenie wyjątków według kontekstu ('path =/search', 'param = q' pozwalają na specjalne znaki).
Podziel strefę: „strony publiczne” vs „operacje wrażliwe” (próg agresywności jest inny).
Przenośnik: zasada → ustawianie → kanarka (1-5%) → prod; Rollback przez metryki FP.
Utrzymuj katalog ładunku „fałszywego” do testów regresji.

Integracja z DevSecOp

CI: zasady statyczne w Git; testy: powtórz prawdziwe żądania + syntetyki z katalogu ataków.
CD: obliczenia kanarkowe, flagi funkcji; monitorowanie „polityczne” (zmiana reguł = zmiana).
RASP i SAST/DAST: suplementy WAF, ale nie zastępują korekcji kodu.

Obserwowalność i SLO

Metryka:
  • p95/99 opóźnienie przez WAF; odsetek zablokowanych/pominiętych; share Managed Rules vs custom; „wskaźnik ataku”.
  • Anty-bot: udział wyzwań/zmian, FP/TP.
  • L7 DDoS: szybkość wybuchu, zdarzenia łagodzące.
Przykłady SLO:
  • "Nie więcej niż 0. 5% FP w zatwierdzonych operacjach/dzień"
  • „p95 napowietrzne WAF ≤ 10 ва”.
  • „Wirtualny plaster TTR ≤ 30 minut”.
  • Alerts: 4xx/5xx spike po zwolnieniu zasad; Wzrost PR; spadek przejścia captcha; degradacja walidacji JWKS/mTLS.

Konfiguracje próbki

ModSecurity + OWASP CRS (Nginx)

nginx
Enabling ModSecurity modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main. conf;
'/etc/nginx/modsec/main. conf ":
apache
SecRuleEngine On
Include /usr/local/owasp-modsecurity-crs/crs-setup. conf
Include /usr/local/owasp-modsecurity-crs/rules/.conf

Example of an exception for a search parameter
SecRule REQUEST_URI "@beginsWith /search" "id:900100,phase:1,pass,nolog,ctl:ruleRemoveByTag=attack-xss"
SecRule REQUEST_URI "@beginsWith /search" "id:900101,phase:2,pass,ctl:ruleRemoveTargetById=942100; ARGS:q"

AWS WAF (JSON, limit stawki + blok listy krajów)

json
{
"Name": "prod-web-acl",
"Scope": "CLOUDFRONT",
"DefaultAction": { "Allow": {} },
"Rules": [
{
"Name": "BurstLogin",
"Priority": 1,
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": { "ByteMatchStatement": {
"SearchString": "/login",
"FieldToMatch": { "UriPath": {} },
"TextTransformations": [{ "Priority": 0, "Type": "NONE" }],
"PositionalConstraint": "CONTAINS"
}}
}
},
"Action": { "Block": {} },
"VisibilityConfig": { "MetricName": "BurstLogin", "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true }
}
]
}

Cloudflare (Zasady wyrażania)


(http. request. uri. path contains "/admin" and ip. geoip. country ne "UA")
or (http. request. uri. path eq "/login" and cf. threat_score > 10)
or (http. request. uri. path contains "/api" and not http. request. headers["authorization"][0] contains "Bearer ")

NGINX: Prosta metoda/reguła ciała

nginx location /api/withdraw {
limit_except POST { deny all; }
if ($request_method = POST) {
set $cl $http_content_length;
if ($ cl = "") {return 411;} # length is required if ($ cl> 1048576) {return 413;} # ≤ 1MB add_header X-Idempotency-Required "true";
}
}

GraphQL: policjanci

„maxDepth = 6”, „maxCost = 1000”, zakaz „schematu __” w sprzedaży, dopuszczalny wykaz operacji, walidacja nagłówków („Content-Type: application/json”).

Kontrole anty-botowe i przyjazne dla człowieka

Niewidzialne wyzwanie (wyzwania JS bez captcha), dowód pracy na „drogich” ścieżkach, analityka behawioralna (ruchy/godziny).
TLS/JA3 odciski palców, reputacja IP/ASN, listy proxy/VPN (w rozsądnych granicach).
Pułapki (pola honeypot) na formularzach, tokeny dynamiczne/sesyjne.
Ochrona prywatności: minimalizacja śledzenia, przejrzyste zasady, opcje rezygnacji.

Focus API

Schemat pierwszy: Schemat OpenAPI/JSON do walidacji; zakaz dodatkowych pól.
Auth: obowiązkowy Bearer JWT lub mTLS; odrzucić „Autoryzacja”.
Stawka/kwota: na klucz/na org; w przypadku przekroczenia - „miękki blok „/spowolnienie.
Haki internetowe: podpis HMAC, 'timestamp + nonce', krótkie okno odbioru.
GraphQL: patrz ograniczenia powyżej; Zaloguj nazwę/etykietę operacji.

Pliki do pobrania i media

Limit rozmiaru, białe listy MIME/rozszerzenia, zmiany nazwy plików;

Skanowanie AV (wielosilnikowe), polityka ImageMagick (bez niebezpiecznych dekoderów);

Usługa kciuka na osobnej domenie, serwuj tylko obrazy.

Bezpieczeństwo administratorów i obszarów krytycznych

Oddzielna domena/ścieżka, mTLS/zakaz od wspólnych ASN/krajów, ograniczenia stawki twardej, dostęp JIT, lista zezwoleń IP.
Dodatkowe sygnały (postawa urządzenia, ocena ryzyka) → wymagają drugiego sprawdzenia.

Operacje, incydenty i wirtualne łatki

Runbook: szybkie zwolnienie reguł blokowych, ograniczenie TTL, powiadomienie polecenia.

Kryteria wsteczne: wzrost 4xx/5xx> próg, FP> próg, p95 opóźnienie

Pośmiertnie: dodać test do ustawienia reguły regresji, wpisać ostrzeżenie SIGMA do SIEM.

Zgodność i prywatność

Log minimum: path/method/code/block reason/identifiers; nie przechowywać tajemnic PII/ciała.
Okresy zatrzymywania dziennika polityki; dostęp - według ról; szyfrowanie na dysku.

Funkcje dla iGaming/fintech

Płatności/wypłaty/portfele: kwoty na org, mTLS dla PSP, ścisłe wykazy tras, HMAC dla haków PSP.
ATO/bonus abuse: zasady prędkości dla logowania/rejestracji/kody promocyjne, ograniczenia behawioralne i anty-bot.
Dostawcy treści/studia: poszczególne domeny/zasady, lista zezwoleń IP/ASN, monitorowanie czasu do portfela/konwersje dotyczące wpływu WAF.
Wymogi regionalne: polityki geograficzne (kraje/regiony), przejrzystość traktowania RODO.

Plan realizacji

1. Spis stref (publiczny, API, panel administracyjny, pliki do pobrania).
2. Profil bazowy: TLS, metody/ścieżki listy zezwoleń, zasady zarządzania/CRS.
3. Limity szybkości + anty-bot na wrażliwych ścieżkach.
4. Proces wirtualnych łatek i pilnych reguł (SLA ≤ 30 min).
5. CI/CD dla reguł, ustawianie/kanaryjski/cień-tryb.
6. Telemetria, SLO, testy regresyjne zasad.
7. Okresowy przegląd wyjątków i „czyszczenie” obwodnic.

Częste błędy

„Włączone wszystkie KSR do maksimum” → Lawina FP i wypalenie zespołu.
Zasady bez kanarów i trybu cienia.
Brak segmentacji: jedna polityka na wszystko.
Ignorowanie specyfiki API/GraphQL (schemat/limity).
Dzienniki bez korelacji ('trace _ id') i bez mierników jakości.

NAJCZĘŚCIEJ ZADAWANE PYTANIA

WAF zastępuje bezpieczny kod?
Nie, nie jest. Jest to warstwa łagodząca i „wirtualna łatka”, ale dług techniczny w kodzie musi zostać wyeliminowany.

Jak zrozumieć, że nadszedł czas, aby włączyć twarde bloki?
Kiedy raport trybu cienia pokazuje niski FP i istnieją testy regresji reguł.

Czy potrzebuję osobnego WAF dla API?
Lepsza integracja WAAP z bramą API: schemat, limity, uwierzytelnianie, podpisy webhook.

Razem

Wydajny WAF/WAAP to połączenie podstawowych reguł CRS/Managed, pozytywnego modelu, anty-bot, limitów i wirtualnych łatek, obsługiwanych przez procesy DevSecOp, telemetrię i przezroczyste SLO. Podejście to zapewnia szybką reakcję na luki, odporność na zautomatyzowane ataki oraz przewidywalny wpływ na UX i wydajność.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.