Triage automatico vs review manuale. Una config Apache di 200 righe o un nginx.conf di 400 righe è un buon candidato per il linting automatico: la maggior parte degli errori di hardening è pattern matching (mancanza di una direttiva, presenza di un valore ovviamente sbagliato come ssl_protocols TLSv1). Il linter intercetta il 70-80% dei findings tipici di un audit cyber in pochi secondi, lasciando alla review manuale i casi complessi (ridondanze fra <Location> apache, override di add_header nginx, interazioni fra VirtualHost multipli).
Cosa controlla davvero questo linter. 25 controlli puntuali distribuiti su 5 famiglie: SSL/TLS (protocolli abilitati, ciphers, HSTS, OCSP stapling), information disclosure (server tokens, server signature, X-Powered-By, autoindex), access control (location root, exposed admin pages, exposed status), headers di sicurezza (X-Frame-Options, X-Content-Type-Options, CSP, Permissions-Policy emessi via add_header/Header), availability (rate limiting con limit_req nginx, listen 80 senza redirect HTTPS).
Limiti del linting. Il tool non risolve ricorsivamente le direttive include /etc/nginx/snippets/*.conf, quindi la config che vede è quella che incolli, non l'effettiva runtime composta dagli include. Non valuta le interazioni fra moduli compilati come mod_security, né la postura del filesystem (permessi e ownership di /etc/nginx/sites-enabled/). Per audit completi serve un agent server-side che ispezioni il sistema runtime (lynis e altri) o un consulente che lo analizzi nel suo insieme.
Privacy operativa. La config che incolli viene processata direttamente nel browser: utile per audit di sistemi interni, ambienti staging non accessibili dall'esterno e per evitare di trasferire a un servizio terzo configurazioni potenzialmente sensibili (path interni, credenziali in chiaro per misconfigured directive).