网络:WAF,保护我们的网络服务

引言

HTTPS使用了SSL/TLS协议,加密整个通信过程,能够防止恶意窃听和篡改,保护我们的数据安全。

但是HTTPS只是网络安全中很小的一部分,仅仅保护了通信链路安全,让第三方无法得知传输的内容。在通信链路的两端,也就是客户端和服务器,它是无法提供保护的。

因为HTTP是一个开发的协议,Web服务都运行在公网上,任何人都可以访问,所以天然就会成为黑客攻击的目标。

黑客可能会“假扮“成合法的用户访问系统,然后伺机搞破坏。

黑客都有哪些手段来攻击 Web 服务呢?

DDos攻击

第一种叫“DDoS”攻击(distributed denial-of-service attack),有时候也叫“洪水攻击”。

黑客会控制很多“僵尸”计算机,向目标服务器发起大量无效请求。因为服务器无法区分正常用户和黑客,只能“照单全收”,这样就挤占了正常用户所应有的资源。如果黑客的攻击强度会很大,就会像“洪水”一样对网站的服务能力造成冲击,耗尽带宽、CPU和内存,导致网站完全无法提供正常服务。

代码注入

网站后台的web服务经常会提取出HTTP报文里的各种信息,应用于业务,因为HTTP报文在语义结构上非常松散、灵活,URL里的query字符串、头字段、body数据都可以任意设置,这就带来了安全隐患,给了黑客代码注入的可能性

黑客可以静心编制HTTP请求报文,发送给服务器,服务程序如果没有做防备,就会“上当受骗”,执行黑客设定的代码

“SQL 注入”(SQL injection)应该算是最著名的一种“代码注入”攻击了,它利用了服务器字符串拼接形成 SQL 语句的漏洞,构造出非正常的 SQL 语句,获取数据库内部的敏感信息。

网络应用防火墙

面对这么多的黑客攻击手段,我们应该怎么防御呢?

这就要用到“网络应用防火墙”(Web Application Firewall)了,简称为“WAF”。

你可能对传统的“防火墙”比较熟悉。传统防火墙工作在三层或者四层,隔离了外网和内网,使用预设的规则,只允许某些特定的IP地址或者端口号的数据包通过,拒绝不符合条件的数据流入或者流出内网,实质上这是一种网络数据过滤设备

WAF也是一种防火墙,但是工作在第七层,看到的不仅是IP地址和端口号,还能看到HTTP报文;所以能够对报文内容做更加深入细致的审核,使用更复杂的条件,规则来过滤数据。也就是说,这是一种HTTP入侵检测和防御系统

在这里插入图片描述
通常一款产品能够称为 WAF,要具备下面的一些功能:

  • IP黑名单和白名单,拒绝黑名单上地址的访问,或者只允许白名单上的用户访问
  • URI黑名单和白名单,与IP黑白名单类似,允许或者禁止对某些URI的访问
  • 防护DDos攻击,对特定的IP地址限连限速
  • 过滤请求报文,防御“代码注入”攻击
  • 过滤响应报文,防御敏感信息外泄
  • 审计日志,记录所有检测到的入侵操作

WAF的原理:

  • 它就像是平时编写程序时必须要做的函数入口参数检查,拿到 HTTP 请求、响应报文,用字符串处理函数看看有没有关键字、敏感词,或者用正则表达式做一下模式匹配,命中了规则就执行对应的动作,比如返回 403/404。
  • WAF实质上是模式匹配与数据过滤,所以会消耗 CPU,增加一些计算成本,降低服务能力,使用时需要在安全与性能之间找到一个“平衡点”。

所以,使用 WAF 最好“不要重新发明轮子”,而是使用现有的、比较成熟的、经过实际考验的 WAF 产品。

WAF 领域里的最顶级产品:ModSecurity

ModSecurity是一个开源的、生产级的 WAF 工具包,历史很悠久,比 Nginx 还要大几岁。它开始于一个私人项目,后来被商业公司 Breach Security 收购,现在则是由TrustWave 公司的 SpiderLabs 团队负责维护。它可以说是WAF 界“事实上的标准”。

    • ModSecurity 最早是 Apache 的一个模块,只能运行在 Apache 上。因为其品质出众,大受欢迎,后来的 2.x 版添加了 Nginx 和 IIS 支持,但因为底层架构存在差异,不够稳定。
    • 所以,这两年 SpiderLabs 团队就开发了全新的 3.0 版本,移除了对 Apache 架构的依赖,使用新的“连接器”来集成进 Apache 或者 Nginx,比 2.x 版更加稳定和快速,误报率也更低。

计算机理论与基础_OceanStar的博客-CSDN博客

posted @ 2022-01-26 13:43  CharyGao  阅读(247)  评论(0编辑  收藏  举报