多达 95% 的 HTTPS 链接能被黑客劫持,正确配置使用 HSTS 严格传输安全

由于服务器管理员没能正确设置 HTTP Strict Transport Security (HSTS),现今大量的 HTTPS 流量都能被轻松劫持。 
HSTS 是一个被当前大多数 Web 浏览器所支持的 Web 安全策略,它可以帮助 Web 管理员保护他们的服务器和用户避免遭到 HTTPS 降级、中间人攻击和 Cookie 劫持等 HTTPS 攻击的危害。 

1、在 Apache2 中设置 HSTS 

    编辑你的 apache 配置文件,完成后进行重启服务。 

  1. <VirtualHost _default_:443>
  2. Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"
  3. </VirtualHost>

  4. <VirtualHost *:80>
  5. [...]
  6. <IfModule mod_rewrite.c>
  7. RewriteEngine On
  8. RewriteCond %{HTTPS} off
  9. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  10. </IfModule>
  11. </VirtualHost>

2、在 Lighttpd 中设置 HSTS 
    对于 lighttpd 来说很简单,将下述配置增加到你的 Lighttpd 配置文件,完成后进行重启服务

  1. server.modules += ( "mod_setenv" )
  2. $HTTP["scheme"] == "https" {
  3. setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=31536000; includeSubdomains; preload")
  4. }

3、在 Nginx 中设置 HSTS 

     Nginx 甚至更简单,将下述行添加到你的 HTTPS 配置的 server 块中,完成后进行重启服务。 

  1. add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";                            

4、X-Frame-Options       
       X-Frame-Options 头部添加到HTTPS站点,确保不会嵌入到frame 或 iframe,避免点击劫持,以确保网站的内容不会嵌入到其他网站。 
      Apache
 
      Header always set X-Frame-Options DENY 
      nginx
 
      add_header X-Frame-Options "DENY"; 
     Lighttpd 
      server.modules += ( "mod_setenv" ) 
      $HTTP["scheme"] == "https" { 
      setenv.add-response-header  = ( "X-Frame-Options" => "DENY") 
        }
 
5、HSTS申请 
    注意,提交的申请并不是自动处理的,人工处理也许需要一周到几周,你可以在这个表单提交查询看看是否列入了。或者在你的 Chrome 浏览器中访问 chrome://net-internals/#hsts 查询是否列入。一般来说,即便你已经列入到这个列表,但是依旧需要几个月才能逐渐从 Chrome 的 canary 更新通道更新到 dev 、beta 等通道,直到最后的 stable 通道。

上一篇:增强 nginx 的 SSL 安全性配置示例

下一篇:Centos7 rsyslog+loganalyzer日志服务器搭建