Azure & 安全 – WAF 和 Web 常见攻击

前言

最近有客户想购买 Azure 的 Web Application Firewall (WAF), 来防 SQL Injection, XSS 攻击. 

一开始我是觉得没什么必要, 毕竟什么年代了, 如果项目里还有 SQL Injection, XSS 的话, 那表示开发人员有问题了. 那你要防的东西可多了.

但后来我详细 research 之后发现, WAF 是个好东西, 它远远不只是防 SQL Injection, XSS 这些.

重点是, 它也没有很贵, 性能也没有很慢. 这就好比住宅区外是否要一个 guard house 把守进入住宅区的人.

坏处就是进出变慢了, 因为多了一个检查环节, 另一个就是要钱. 

好处就是多了一个保护. 这个保护主要是心里层面, 你不会因为住家外有了 guard house 而家里就不锁门. 但多一个保护多一个检查肯定多一份安全. 

所以站在企业的角度, 购买这些是合理的.

 

主要参考:

WAF Part

通过nginx配置文件抵御攻击 (讲了一个具体 CC Attack 防卫案例)

WAF气数已尽?(敏捷 DevOps 希望把安全也纳入 Web 架构中, 而不是外面 wrap 一层 WAF, 但是理想很好, 现实不容易啊)

讲讲企业选购WAF那些事 (法律政策也是采购 WAF 的考量之一, 也有讲到新一代 WAF 自动化攻击等等)

WAF基本原理与部署方式 (讲架构原理, 一堆流程图)

Azure Part

What is Azure WAF on Azure Application Gateway?

Web Application Firewall CRS rule groups and rules

FAQ about Application Gateway

FAQ for Azure WAF on Application Gateway

 

WAF 保护范围

我们来一个一个过吧. 大概懂它是什么就可以了. 毕竟大部分的攻击都是那几招, 只是用在不同地方所以换了一个名字而已. 保护手法也不外乎那几招.

 

SQL Injection

SQL injection 是指程序员直接拿 client input, 拼接到 SQL query 中. 从而导致 client 有能力可以操作 SQL.

这个是年代久远的攻击了. 现在一般上都会使用 parameter 的方式把 client input 输入进 query 里, 而不是用拼接. 

或者直接用 ORM 框架. 跳过写 query 这个环节.

不只是 SQL Injection, 任何一种 XXX injection 原理都是一样的, 程序员对 client input 使用要敏感一些.

不要拿了就用, 要假设 client 都是坏人, 用他们给的东西要先检查, 限制, 过滤. 

比如用 Enum, int, 正则去确保用户只能给小范围的表达, 使用的时候要依据场合做 encode. 

除了 SQL, 经常会用到 client input 做逻辑的还有 : Path, 反射调用, rich text 等等

 

Cross-site Scripting (XSS)

也算 injection 的一种, 它指的是用 client input 去拼接 HTML. 从而导致 client 有能力操作 HTML 页面.

解决方法就是消毒. 限制. 过滤, Encode, 就那一套啦. 

 

Command Injection

也是 injection 的一种, 只是攻击的地方是调用 shell 这类的, 所以叫 command injection. 

参考: 详解php命令注入攻击

解决方法一样.

 

HTTP Request Smuggling

请求走私, 这个只会发生在, 有用 load balance, reverve proxy 反向代理, 这种情况. 

它会通过一些手法骗过代理, 让它分发错误的信息给服务器. 

 

我没有用过 load banlance 和反向代理, 所以也不清楚它具体怎样 hack.

 

HTTP Response Splitting

参考: 

HTTP Response Splitting 攻击

浅谈HTTP响应拆分攻击

它也有点像 injection, 服务器在处理 302 时把 client input 直接写入 header location 里, 导致了 client 有能力控制 response.

我没有深入研究, 想了解更多看上面的链接吧. 解决方法还是一样.

 

Remote File Inclusion

参考: 前端 RFI详解

也算 injection 的一种, 直接用 client input 去拼接 file path.

 

其它

其余的还有 HTTP 协议检查, user-agent, accept headers, IIS configuration, protect 爬虫, scanner 等等啦.

详细的 rules 保护看这里 Web Application Firewall CRS rule groups and rules

此外, 它还防 DDos attack

 

DDoS 和 CC Attack

参考: DDoS攻击和CC攻击有什么区别?

DDoS 攻击就是一直访问你的服务器, 造成巨大的压力, 让服务器卡死掉. 阻止它的方法一般上是去检查 IP, 放 cookie 做识别.

然后阻止它一直访问. 自己防的话, 也是挺多工作要做的.

 

总结

综上, 这么多乱七八糟的安全隐患, 最好还是让专家替我们操心, 或者至少帮我们 double check. 有钱的公司都会雇佣白帽子攻击自己的.

购买 WAF 也是类似的概念. 所以术业有专攻. 我们写业务的就不该去操安全的心嘛... (话收回来...还是要尽可能做好本分写出安全的程序. 白帽子工具多一份保障也是必要的)

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章