Web 应用防火墙可以防止 Web 应用免受各种常见攻击,比如 SQL 注入,跨站脚本漏洞(XSS)等。WAF 也能够监测并过滤掉某些可能让应用遭受 DOS(拒绝服务)攻击的流量。WAF 会在 HTTP 流量抵达应用服务器之前检测可疑访问。
Web 应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web 应用防火墙是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护的一款产品。
WAF 可以防御哪些攻击?
Web 应用防火墙可以防止 Web 应用免受各种常见攻击,比如 SQL 注入,跨站脚本漏洞(XSS)等。WAF 也能够监测并过滤掉某些可能让应用遭受 DOS(拒绝服务)攻击的流量。WAF 会在 HTTP 流量抵达应用服务器之前检测可疑访问,同时,它们也能防止从 Web 应用获取某些未经授权的数据。
其中几种比较常见的攻击类型如下:
1、跨站脚本漏洞(XSS)
攻击者通过往 Web 页面里插入恶意 Script 代码,当用户浏览该页面时,嵌入在 Web 页面里的 Script 代码会被执行,从而达到恶意攻击用户的目的。
XSS 大概分为两类:
反射型攻击。恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击。
存储型攻击。恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较常见的场景是在博客,论坛等社交网站上。
XSS 攻击能够:
获取用户 Cookie,将用户 Cookie 发送回黑客服务器。
获取用户的非公开数据,比如邮件、客户资料、联系人等。
2、SQL 注入
通过在目标数据库执行可疑 SQL 代码,以达到控制 Web 应用数据库服务器或者获取非法数据的目的。SQL 注入攻击可以用来未经授权访问用户的敏感数据,比如客户信息、个人数据、商业机密、知识产权等。
SQL 注入攻击是最古老,最流行,最危险的 Web 应用程序漏洞之一。比如查询?id=1,如果不对输入的 id 值 1 做检查,可以被注入?id=1 or 1=1 从而得到所有数据。
SQL 注入的产生原因通常表现在以下几方面:
不当的类型处理。不安全的数据库配置。不合理的查询集处理。不当的错误处理。转义字符处理不合适。多个提交处理不当。
3、Cookie 篡改
Cookie 篡改是攻击者通过修改用户 Cookie 获得用户未授权信息,进而盗用身份的过程。攻击者可能使用此信息打开新账号或者获取用户已存在账号的访问权限。
很多 Web 应用都会使用 Cookie 保存用户的 Session 信息,当用户使用 Cookie 访问该应用时,Web 应用能够识别用户身份,监控用户行为并提供个性化的服务。而如果 Cookie 的使用缺乏安全机制的话,也很容易被人篡改和盗用,并被攻击者用来获取用户的隐私信息。
4、未经验证的输入
Web 应用往往会依据 HTTP 的输入来触发相应的执行逻辑。而攻击者则很容易对 HTTP 的任何部分做篡改,比如 URL 地址、URL 请求参数、HTTP 头、Cookies 等,以达到攻破 Web 应用安全策略的目的。
5、网页信息检索(Web scraping)
通过一些工具来获取网页内容,并从中提炼出有用的网站数据信息。
WAF 和 DDos
DDos 的全称是 Distributed Denial of service。主要依靠一组计算机来发起对一个单一的目标系统的请求,从而造成目标系统资源耗尽而拒绝正常的请求。
根据 OSI 的 7 层网络模型,网络可以从上到下分为:
第七层:应用层,SMTP,HTTP,DNS 等各种协议。
第六层:表示层,信息的语法语义以及他们的关联,如加密解密,压缩解压缩。
第五层:会话层,建立和维持连接,。
第四层:传输层,TCP,UDP。
第三层:网络层,IP 和路由。
第二层:数据链路层,MAC 地址。
第一层:物理层,基于光纤的信号。
根据 OSI 网络模型,最常见的 DDos 有三类,第三层(网络层)DDos、第四层(传输层)DDos 和第七层(应用层)DDos。
第三层 DDOs,基于 IP 的攻击。IP 数据包在网络传递时,数据包可以分成更小的片段。到达目的地后再进行合并重装。在实现分段重新组装的进程中存在漏洞,缺乏必要的检查。利用 IP 报文分片后重组的重叠现象攻击服务器,进而引起服务器内核崩溃。
第四层 DDos,基于 TCP 的攻击。SYN Flood 攻击的过程在 TCP 协议中被称为三次握手(Three-way Handshake),而 SYN Flood 拒绝服务攻击就是通过三次握手而实现的。TCP 连接的三次握手中,假设一个用户向服务器发送了 SYN 报文后突然死机或掉线,那么服务器在发出 SYN+ACK 应答报文后是无法收到客户端的 ACK 报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送 SYN+ACK 给客户端)并等待一段时间后丢弃这个未完成的连接。服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。
第七层 DDos,基于应用层的攻击。基于应用层的 DDos 攻击会更复杂,处理起来更棘手。这类攻击往往会模仿用户和 Web 应用之间的交互行为,增加判断的难度。
WAF 主要处理第七层 DDos 攻击,它在处理第七层 DDos 攻击时会比其它防护手段更高效一些。WAF 会对 HTTP 流量做详细的分析,这样 WAF 就能针对正常的访问请求进行建模,然后使用这些模型来区分正常的请求和攻击者使用机器人或者脚本触发的请求。
WAF 和传统防火墙的区别
传统防火墙主要用来保护服务器之间传输的信息,而 WAF 则主要针对 Web 应用程序。网络防火墙和 WAF 工作在 OSI7 层网络模型的不同层,相互之间互补,往往能搭配使用。
网络防火墙工作在网络层和传输层,它们没有办法理解 HTTP 数据内容,而这个正式 WAF 所擅长的。网络防火墙一般只能决定用来响应 HTTP 请求的服务器端口是开还是关,没办法实施更高级的、和数据内容相关的安全防护。
总结:WAF 是 Web 应用不可缺少的基础安全组件之一,能帮助我们预防一些常见的攻击手段。部署磐云后就能自动完成 WAF 的接入和使用,极大地降低了 WAF 的使用门槛。我们很难有理由在使用云服务时拒绝使用 WAF 服务。