当前位置: 澳门新豪天地3559 > 互联网 > 正文

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

时间:2019-07-01 02:36来源:互联网
Web安全存有协议漏洞导致https漏洞的出现,毕竟web安全就是https安全的核心;近期在黑帽大会上,业内记者了解到有黑客爆出web浏览器的基础架构中存有二十四个危险程度不同的安全漏洞

Web安全存有协议漏洞导致https漏洞的出现,毕竟web安全就是https安全的核心;近期在黑帽大会上,业内记者了解到有黑客爆出web浏览器的基础架构中存有二十四个危险程度不同的安全漏洞,这些漏洞让https的安全保护荡然无存。

HTTP 严格传输安全(HSTS)是一种安全功能,web 服务器通过它来告诉浏览器仅用 HTTPS 来与之通讯,而不是使用 HTTP。本文会说明如何在 Apache2、Nginx 和 Lighttpd 上如何启用 HSTS。在主流的 web 服务器上测试通过: Nginx 1.1.19、 Lighttpd 1.4.28 和 Apache 2.2.22 ,环境为 Ubuntu 12.04、 Debian 6 & 7 和 CentOS 6,只需要调整部分参数就可以工作在其它的发行版上。

HTTP 严格传输安全(HSTS)是一种安全功能,web 服务器通过它来告诉浏览器仅用 HTTPS 来与之通讯,而不是使用 HTTP。本文会说明如何在 Apache2、Nginx 和 Lighttpd 上如何启用 HSTS。在主流的 web 服务器上测试通过: Nginx 1.1.19、 Lighttpd 1.4.28 和 Apache 2.2.22 ,环境为 Ubuntu 12.04、 Debian 6 & 7 和 CentOS 6,只需要调整部分参数就可以工作在其它的发行版上。
什么是 HTTP 严格传输安全?

大家知道HTTPS能对HTTP进行加密,以能有效保护用户的页面请求和web服务器返回的页面不会被窃取,而SSL和后来的TLS协议是允许HTTPS利用公钥进行加密验证web客户端和服务器的;当https 漏洞出现攻击者就能利用该漏洞发起中间人攻击,攻击者一旦进行劫持浏览器后就能利用这些漏洞中的大多数对话进行重新定向,从而也就有效窃取用户凭据或者从远程秘密进行执行代码;不过针对这些业内相关专家也表示,中间人攻击也并不是攻击者的终极目的,很多时候利用中间人攻击,攻击者们还可以进行实现许多更加容易的攻击,并也能被迫成为一个十分坚定的攻击者,不过这也并非是最坏的情况,这种攻击对于电子商务应用来说就是一种毁灭性的灾难。

图片 1

引用自 Mozilla Developer Network:

图片 2

 

  •     如果一个 web 服务器支持 HTTP 访问,并将其重定向到 HTTPS 访问的话,那么访问者在重定向前的初始会话是非加密的。举个例子,比如访问者输入 或直接输入 foo.com 时。
  •     这就给了中间人攻击的一个机会,重定向可能会被破坏,从而定向到一个恶意站点而不是应该访问的加密页面。
  •     HTTP 严格传输安全(HSTS)功能使 Web 服务器告知浏览器绝不使用 HTTP 访问,在浏览器端自动将所有到该站点的 HTTP 访问替换为 HTTPS 访问。

还有针对https 漏洞业内专家还怀疑在https和ssl/tls中可能还有数百个安全问题,只是很多黑客在准备黑帽大会的演讲都没有及时进行深入研究罢了;对于中间人攻击根本不是什么新技术,由于各种原因攻击者可以设法在一个浏览器会话过程中多个时刻进行加入回话,甚至一些攻击者还能使用包括MD5冲突在内的各种方法进行伪造或者窃取SSL证书,毕竟在会话达到认证协商的加密端之前,ssl协议就是采用一种明文传输进行dns和http请求的,所以攻击者还可以在这些步骤中的任一时刻进行劫持会话;当然了在攻击者使用中间人攻击的时候,也会通过https 漏洞进行修改https链接将用户重定向到恶意http网站中;当在中间人攻击得逞之后,攻击者完全可以再来发动2种高度的危险攻击,即:

什么是 HTTP 严格传输安全?

引用自 Mozilla Developer Network:

如果一个 web 服务器支持 HTTP 访问,并将其重定向到 HTTPS 访问的话,那么访问者在重定向前的初始会话是非加密的。举个例子,比如访问者输入 或直接输入 foo.com 时。

这就给了中间人攻击的一个机会,重定向会可能会被破坏,从而定向到一个恶意站点而不是应该访问的加密页面。

HTTP 严格传输安全(HSTS)功能使 Web 服务器告知浏览器绝不使用 HTTP 访问,在浏览器端自动将所有到该站点的 HTTP 访问替换为 HTTPS 访问。

以下引自维基百科:

HSTS 可以用来抵御 SSL 剥离攻击。SSL 剥离攻击是中间人攻击的一种,由 Moxie Marlinspike 于2009年发明。他在当年的黑帽大会上发表的题为 “New Tricks For Defeating SSL In Practice” 的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入

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

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

场景举例:

当你通过一个无线路由器的免费 WiFi 访问你的网银时,很不幸的,这个免费 WiFi 也许就是由黑客的笔记本所提供的,他们会劫持你的原始请求,并将其重定向到克隆的网银站点,然后,你的所有的隐私数据都曝光在黑客眼下。

严格传输安全可以解决这个问题。如果你之前使用 HTTPS 访问过你的网银,而且网银的站点支持 HSTS,那么你的浏览器就知道应该只使用 HTTPS,无论你是否输入了 HTTPS。这样就防范了中间人劫持攻击。

注意,如果你之前没有使用 HTTPS 访问过该站点,那么 HSTS 是不奏效的。网站需要通过 HTTPS 协议告诉你的浏览器它支持 HSTS。

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

 

以下引自维基百科:

1、使用cookie篡改攻击。这种攻击就是攻击者会利用浏览器在用户会话期间不断进行更改cookie的情况,并将同一个cookie反复标记为有效的状态,如果攻击者能够提前进行劫持来自网站的cookie然后再将其植入用户的浏览器中,则用户的认证信息到达https站点的时候,攻击者就能获得用户凭证并以用户身份进行登录了;

在 Apache2 中设置 HSTS

编辑你的 apache 配置文件(如 /etc/apache2/sites-enabled/website.conf 和 /etc/apache2/httpd.conf ),并加以下行到你的 HTTPSVirtualHost:

  1. # Optionally load the headers module:
  2. LoadModule headers_module modules/mod_headers.so
  3. <VirtualHost67.89.123.45:443>
  4. Header always setStrict-Transport-Security"max-age=63072000; includeSubdomains; preload"
  5. </VirtualHost>

现在你的 web 站点在每次访问时都会发送该请求头,失效时间是两年(秒数)。这个失效时间每次都会设置为两年后,所以,明天你访问时,它会设置为明天的两年后。

你只能在 HTTPS 虚拟机中设置这个头,而不能设置在 HTTP 虚拟机中。

要将你的访问者重定向到对应 HTTPS 站点,可使用如下设置:

  1. <VirtualHost *:80>
  2. [...]
  3. ServerName example.com
  4. Redirect permanent / https://example.com/
  5. </VirtualHost>

如果仅仅是做重定向的话,甚至不需要设置 DocumentRoot。

你也可以使用 mod_rewrite 来做重定向,但是上述的方式更简单更安全。不过,mod_rewrite 可以重定向页面到对应的 HTTPS 页面,而上述配置则只重定向到“/”:

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

不要忘记重启 Apache。

 

    HSTS 可以用来抵御 SSL 剥离攻击。SSL 剥离攻击是中间人攻击的一种,由 Moxie Marlinspike 于2009年发明。他在当年的黑帽大会上发表的题为 “New Tricks For Defeating SSL In Practice” 的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与服务器创建HTTPS连接。它的前提是用户很少直接在地址栏输入

2、重定向攻击。攻击者可以在URL中注入Javacript脚本并修改新选项卡让受攻击者定向到一个恶意登录页面。

Lighttpd

对于 lighttpd 来说很简单,将下述配置增加到你的 Lighttpd 配置文件(例如:/etc/lighttpd/lighttpd.conf):

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

重启 Lighttpd。失效时间也是两年。

 

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

Nginx

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

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

不要忘记重启 Nginx。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/116243.htm

图片 3

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

场景举例:

    当你通过一个无线路由器的免费 WiFi 访问你的网银时,很不幸的,这个免费 WiFi 也许就是由黑客的笔记本所提供的,他们会劫持你的原始请求,并将其重定向到克隆的网银站点,然后,你的所有的隐私数据都曝光在黑客眼下。

    严格传输安全可以解决这个问题。如果你之前使用 HTTPS 访问过你的网银,而且网银的站点支持 HSTS,那么你的浏览器就知道应该只使用 HTTPS,无论你是否输入了 HTTPS。这样就防范了中间人劫持攻击。

注意,如果你之前没有使用 HTTPS 访问过该站点,那么 HSTS 是不奏效的。网站需要通过 HTTPS 协议告诉你的浏览器它支持 HSTS。

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

编辑你的 apache 配置文件(如 /etc/apache2/sites-enabled/website.conf 和 /etc/apache2/httpd.conf ),并加以下行到你的 HTTPS VirtualHost:

编辑:互联网 本文来源:如何配置使用 HTTP 严格传输安全(HSTS)

关键词: www.3559.com