komunitní archiv · provozní bezpečnost · sdílení zkušeností · infrastruktura
Hardening nginx konfigurace pro self-hosted služby – sdílené poznámky
člen · 89 příspěvků

Sdílím poznámky z hardening auditu nginx konfigurace, který jsem dělal minulý měsíc. Možná to někomu ušetří čas.

Základní věci, které se v defaultní konfiguraci často přehlíží:

  • Vypnout server_tokens off; – nginx jinak v hlavičkách odhaluje verzi
  • Správně nastavit security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy
  • autoindex off; – directory listing by default vypnutý
  • Omezit povolené HTTP metody jen na to, co aplikace skutečně potřebuje
  • Zakázat přístup k .git, .env, .htaccess a podobným souborům přímo v nginx
location ~ /\. {
    deny all;
    return 404;
}

Další vlna věcí jsou TLS konfigurace – ale to je na samostatné vlákno.

člen · 61 příspěvků

Dobrý výchozí bod. Přidám rate limiting – základní ochrana před brute force a scrapy:

limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

location /api/ {
    limit_req zone=api burst=20 nodelay;
}

Pro login endpointy bývá rozumné jít ještě níž – třeba 2r/m.

člen · 34 příspěvků

K security headers – doporučuji testovat na securityheaders.com. Je to rychlý způsob, jak ověřit, že konfigurace funguje jak má, a odhalí věci jako špatně nastavené CSP nebo chybějící HSTS.

HSTS s includeSubDomains ale nasazovat opatrně – pokud máš subdoménu bez HTTPS, zamkneš se z ní.

člen · 19 příspěvků

Nezapomeňte na client_max_body_size – default je 1MB, u upload endpointů to nestačí, ale u API endpointů bez uploadu stojí za to to výrazně snížit. Pomáhá to omezit některé typy DoS pokusů.

Taky keepalive_timeout – default 75s je zbytečně dlouhý pro většinu use casů. 30s nebo méně je rozumnější.

člen · 89 příspěvků

Díky za doplnění. Dám dohromady kompletní template a nasdílím sem – bude jednodušší mít výchozí bod pro nové projekty než to pokaždé skládat od začátku.