如何防劫持,防DNS劫持,防域名劫持
2017-04-25 15:34
1.首先需要购买SSL证书,可以到这里购买 https://wossl.com/
2.安装SSL后启用HSTS (如需协助可以加腾讯q:8766167)
1).Apache 下启用HSTS,配置参考:
配置文件里打开这行
LoadModule headers_module modules/mod_headers.so
虚拟主机443配置里增加一行:
<VirtualHost www.test.com:443>
//下面增加这行:
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
------------------------------
2).Nginx 下启用HSTS,配置参考:
server配置里增加这行:
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
------------------------------
3).IIS下启用HSTS,配置参考:
在web.config 文件里 <system.webServer>配置下面加入:
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000" />
</customHeaders>
</httpProtocol>
验证是否启用HSTS:输入域名验证:https://hstspreload.org/
===================================
HSTS防范中间人攻击,解决对 80 端口的劫持
HSTS,HTTP Strict Transport Security,简单说就是强制客户端使用 HTTPS 访问页面。其原理就是:
在服务器响应头中添加 Strict-Transport-Security,可以设置 max-age用户访问时,服务器种下这个头
下次如果使用 http 访问,只要 max-age 未过期,客户端会进行内部跳转,可以看到 307 Redirect Internel 的响应码变成 https 访问源服务器
这个过程有效避免了中间人对 80 端口的劫持。但是这里存在一个问题:如果用户在劫持状态,并且没有访问过源服务器,那么源服务器是没有办法给客户端种下 Strict-Transport-Security 响应头的(都被中间人挡下来了)。
启用 HSTS 不仅仅可以有效防范中间人攻击,同时也为浏览器节省来一次 302/301 的跳转请求,收益还是很高的。我们的很多页面,难以避免地出现 http 的链接,比如 help 中的链接、运营填写的链接等,这些链接的请求都会经历一次 302,对于用户也是一样,收藏夹中的链接保存的可能也是 http 的。