Podle studie společnosti Netcraft je 95 % serverů HTTPS zranitelných vůči útokům typu Man-in-the-Middle. Proto je velmi důležité správně implementovat HSTS. HSTS (HTTP Strict Transport Security) je zásada, která chrání webové stránky před škodlivými útoky, jako je clickjacking, downgrade protokolu a útoky typu man-in-the-middle, jak je vysvětleno v mém dřívějším článku. V tomto článku uvidíme různé kroky k povolení HSTS na NGINX a Apache.
Jak povolit HSTS na Nginx
Otevřete konfigurační soubor Nginx pro doménu, kterou potřebujete k povolení HSTS.
Například:/etc/nginx/conf.d/tg.conf
Přidejte níže uvedený řádek do svého serverového bloku HTTPS:
NEPŘIDÁVEJTE HSTS do HTTP blokuadd_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;includeSubDomains parametr
Volitelné includeSubDomains
Parametr sděluje prohlížeči, že zásady HSTS platí také pro všechny subdomény aktuální domény.
always
Parametr zajišťuje, že záhlaví je nastaveno pro všechny odpovědi, včetně interně generovaných chybových odpovědí.
Chcete-li mít HSTS nakonfigurováno na časové rozpětí 1 roku, nastavte maximální věk na 31536000 (v sekundách). Aby byly splněny bezpečnostní požadavky, musí to být alespoň 3 měsíce.
Restartujte službu Nginx
Před restartováním ověřte konfigurační soubor, jak je uvedeno níže:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Restartujte server Nginx, abyste provedli nové změny.
# systemctl restart nginx
Jak povolit HSTS na Apache
Abychom povolili HSTS na Apache, potřebujeme mít mod_headers
modul nainstalován. Spusťte níže uvedený příkaz a zjistěte, zda je modul již nainstalován.
# apachectl -M | grep headers headers_module (shared)
pokud jej máte, pokračujte v konfiguraci nastavení záhlaví domény, kterou potřebujete k povolení HSTS. Otevřete konfigurační soubor, který obsahuje VirtualHost
který používá SSL.
For eg: /etc/httpd/conf.d/tg.conf
Přidejte níže uvedenou konfiguraci do svého VirtualHost
pro port 443, jak je uvedeno níže:
<VirtualHost *:443> ...... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" ...... </VirtualHost>
Restartujte službu Apache
Před restartováním ověřte konfigurační soubor, jak je uvedeno níže:
# apachectl configtest Syntax OK
Pokud je syntaxe v pořádku, restartujte server Apache, abyste provedli nové změny.
# systemctl restart httpd ## Redhat systems # systemctl restart apache2 ## Debian systems
A je to! Otestujte webový server, abyste zjistili, zda byl povolen HSTS.
$ curl -kIs https://example.com | grep Strict Strict-Transport-Security: max-age=31536000; includeSubDomains