Asi si teď pokládáte otázku, PROČ NE NGINX?!!?!?
No, protože stále existují zákazníci, kteří z nějakého důvodu potřebují Apache 2.4. nebo mají nějaké specifické moduly, vendor-lock in aplikací, potřebu .htaccess souborů a tuna dalších důvodů. Každopádně tento článek je pro ty z Vás, kdo se s tím nechcete trápit, abyste se už trápit nemuseli! 🙂
Ale já chci nginx!
Tak jo! Klid! Tady je link od Mozzily.
Začátek
Security Headers na rating A:
Není nad to začít článek o SSL a potom řešit „jen“ security headers. Nicméně tohle si můžete vložit do .htaccess souboru v Apachi a pojede to. Hned první řádek vám zapne HSTS.
(Pozor, není to 100% OK, jsou tam nějaké warningy v Permissions-Policy, je to přesně pro ty z Vás, kdo s tím nechcete ztrácet čas):
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always set X-Frame-Options: "SAMEORIGIN"
Header always set Permissions-Policy: ""
zdroj
Editujete konfiguraci a divíte se, proč vám stále SSL Labs reportuje povolené TLSv1.0 ?
Pokud používáte Let’s Encrypt, tak mrkněte sem:
/etc/letsencrypt/options-ssl-apache.conf
Zakomentujte defaultní konfiguraci pomocí # a vložte řádek pod:
#SSLProtocol all -SSLv2 -SSLv3
SSLProtocol TLSv1.2
U novějších verzí Apache 2.4. můžete zapnout i TLSv1.3
SSLProtocol TLSv1.2 TLSv1.3
Jinak když hledáte SSLProtocol nastavení napříč configuráky tak:
find ./ -type f -exec grep -i sslprotocol {} +
Generátor Konfigurátorů, doporučuji
Tohle je super věc. Zakliknete si co chcete a ono vám to vyplivne konfigurák pro lepší zabezpečení.
HTTP2
Ofiko konfiguráky zde
Apache 2.4. A+ něčí konfigurace s vysvětlivkami, vyzkoušeno
https://gist.github.com/GAS85/42a5469b32659a0aecc60fa2d4990308
V kostce
Prakticky na A+ rating potřebujete mít povolený HSTS, a povolený pouze Protocol TLSv1.2 (u novějších webserverů i TLSv1.3), OSCP stappling nebude na škodu a pak je tu taková ta věčná diskuse na téma šifry. Když zakážete většinu šifer, zatímco budete mít všechny 4 grafy v SSL Labs testu na 100%, tak jsem se setkával s tím, že prostě web nenajel na různých prohlížečích. Největší potíže typicky s Appláckými prohlížeči, pak starší Androidy a totéž pak starší operační systémy, které třeba nepodporují TLSv1.2, takže vám web na starších zařízení stejně nenaběhne.