No právě když máš hodně webových aplikací, tak přidávat n krát sadu pravidel bude šichta na dlouho.
je potřeba odpovědět si:
-je to jen pro tebe, bude se tam hlásit víc lidí
- taky u jednotlivé aplikace je rozdělit to na frontend (robotické sscanování,XSS, kommentáře) a administraci(pokusy o login,denial), jiná pravidla
Příklad-
if ($request_uri ~* fromcharcode) {return 429 ;}
if ($http_user_agent ~* (bbar|hrefs|seorush|petal|censy|jinsp)) {return 403;}
f ($request_uri ~* web/comment.asp ) { return 410; }
administrace (lze poupravit)
if ($request_uri ~* admin.php ) { set $c 1; }
if ($http_user_agent ~ nejakyretezec) { set $c 0; }
if ($cookie_magicky = klic) { set $c 0; }
if ($c = 1) { return 403 ; }
tohle řeší jen oblast xss a zranitelnosti. Na zaměstnání robotů je potřeba nějaký javascript, cookie, detekce chování, jako má cloudflare,wedos... (a neskutečně mě to štve, narážím na to denně) (cgi-bin/challenge , /akam/13)
proxy:server {
proxy_set_header "Connection" ""; #
proxy_set_header Host test.cz;
proxy_set_header Accept-Encoding ""; #mozna kvuli non-utf)
proxy_http_version 1.1;
client_max_body_size 4000000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://255.1.2.3:80;
}
}
Jinak pozor, konfigurace nginx je taky magie,:
-match patterny, pořadí
-ify se mohou chovat nějak divně v kombinaci s location
- proxy set _header vs add
- proxy_ pass je důležité co je na konci, jak to skládá cestu (nahrazuje nebo přidává)
K cchytrému WAF to má daleko, ten sleduje víc věcí a rozhoduje se dle nějakých metrik...