资源分享

https的WAF环境,应该如何配置

字号+ 作者:匿名投稿 来源:转载 2017-09-12 15:24 我要评论( )

如何配置 访问 https://zbg.org DNS服务器CNAME到waf.zbg.me域名 waf.zbg.me服务器解析server_name为waf.zbg.me并且端口为443的block,并将流量进行反向代理转发到......

如何配置
访问https://zbg.org
DNS服务器CNAME到waf.zbg.me域名
waf.zbg.me服务器解析server_name为waf.zbg.me并且端口为443的block,并将流量进行反向代理转发到后端服务器
前面2步都没问题,那就只有第三步的可能会有问题了。要转发https://zbg.org的流量,肯定需要https://zbg.org网站的https证书和私钥。所以在waf.zbg.me的server block先配上https://zbg.org的证书和私钥。
现在的配置如下:
 
server {
   listen       443;
   server_name  waf.zbg.me;
 
   ssl     on;
   ssl_certificate     /usr/local/nginx/ssl/chained.pem;
   ssl_certificate_key /usr/local/nginx/ssl/domain.key;
 
   location / {
       proxy_buffers 8 16k;
       proxy_buffer_size 32k;
       proxy_set_header Host   $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_pass https://x.x.x.x;
   }
}
设置proxy_buffer,是为了解决一个502的error,可忽略。这个时候,访问https://zbg.org已经可以正常访问了,WAF也能正常拦截。
但是,一般的云waf的域名,不会让直接访问。比如,我们先ping下www.aliyun.com,WAF的域名是sh.wagbridge.aliyun.com.gds.alibabadns.com,直接访问返回404,如果该WAF域名能直接访问,那访问的效果等同于www.aliyun.com,所以肯定是有问题的,那就需要设置。
不过,只要我们设置下host就能访问了:curl -v -H 'host:www.aliyun.com' 'https://sh.wagbridge.aliyun.com.gds.alibabadns.com/?'
所以,根据host来配置就行。添加以下配置:
 
if ($host != 'zbg.org') {
      return 404 "Good Game";
}
 
443端口配置:
 
server {
    listen       443;
    server_name  waf.zbg.me;
 
    ssl     on;
    ssl_certificate     /usr/local/nginx/ssl/chained.pem;
    ssl_certificate_key /usr/local/nginx/ssl/domain.key;
    
    if ($host != 'zbg.org') {
        return 404 "Good Game";
    }
    location / {
        proxy_buffers 8 16k;
        proxy_buffer_size 32k;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass https://x.x.x.x;
    }
}
这样,配置完成后,访问https://zbg.org就已经没有问题了。不过还需要对80端口进行一个rewrite到https的操作。
80端口配置:
 
    server {
        listen          80;
        server_name     waf.zbg.me;
        if ($host != 'joychou.org') {
            return 404 "Good Game";
        }
        rewrite         ^(.*) https://$host$1 permanent;
    }
0x03 KeyLess
前几天在UCLOUD的WAF简介里看到一段描述:
          独家KEY-LESS方案。针对HTTPS防护,客户无需提供私钥。UEWAF的KEY-LESS方案让客户保留私钥控制权,并由UEWAF来做防护。
          这是使用的是CloudFlare的https://github.com/cloudflare/keyless
          KeyLess的原理可以阅读这篇文章https://www.520waf.com/2017/07/keyless/,文章里面的这张图可以比较好的概括。
https的WAF环境
          可以看到,其实所谓的 客户不需要提供私钥,只是把私钥上传到了KeyLess的服务器,在该服务器上进行HTTPS的解密操作,然后再返回解密后结果给WAF。个人认为,有个问题就是,KeyLess的服务器和WAF服务器距离越远,网络消耗就越大,所以在一定程度上应该会影响访问速度。不过用内网或者同一地域,消耗应该还可以接受。
          不过,抛开网络延迟问题,这个确实解决了目前很多网络产品都要求上传网站HTTPS私钥的隐私问题。
          目前腾讯云和ucloud在某些网络产品上使用了keyless,阿里云的网络产品并未使用,至于为什么不使用,不清楚。
          云WAF就是将所有的域名、IP、端口、协议做成配置化,而不是向我文中使用的硬编码。 转装逼哥来的


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Share/647.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~