配置使用 HTTP 严格传输安全(HSTS)

HSTS 可以用来抵御 SSL 剥离攻击。SSL 剥离攻击是中间人攻击的一种,由 Moxie Marlinspike 于2009年发明。他在当年的黑帽大会上发表的题为 “New Tricks For Defeating SSL In Practice” 的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击链接或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的链接为http://,达到阻止HTTPS的目的。

HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦服务器发送了HSTS字段,用户将不再允许忽略警告。

服务器开启 HSTS 的方法是,当客户端通过HTTPS发出请求时,在服务器返回的 HTTP 响应头中包含 Strict-Transport-Security 字段。非加密传输时设置的HSTS字段无效。

LoadModule headers_module modules/mod_headers.so

<VirtualHost ip:443>

Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

   </VirtualHost>

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

</VirtualHost>

Nginx 甚至更简单,将下述行添加到你的 HTTPS 配置的 server 块中:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

 

资料来源linux.cn

本文固定链接: https://blog.mallon.cn/index.php/1095/ | mallon的博客,老马的博客

该日志由 信息管理员 于2019年07月17日发表在 Linux技术, 网络安全 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 配置使用 HTTP 严格传输安全(HSTS) | mallon的博客,老马的博客

配置使用 HTTP 严格传输安全(HSTS):等您坐沙发呢!

发表评论

= 10 + 4 (防止机器人评论

快捷键:Ctrl+Enter