WAF也是防火墙,那么它应该是部署在哪里呢?在部署上,它和传统防火墙有什么区别呢?
传统防火墙处理的消息格式大多是格式化,基本上内容都是固定或者索引方式。而WAF处理的消息是文本,是非格式化消息,都是可变的。在处理这两种不同的消息格式,在性能上的消耗相差非常大。我之前测试过,不使用正则,处理http内容匹配比格式化要慢上5-20倍,如果用上正则还可能再慢上20倍。
因此,如果WAF像传统防火墙那样,放置在网络入口,那么,对于DDOS攻击来说,它是很容易沦陷的。
所以WAF一般是部署在防火墙(特别是高防DDOS设备)后面,基本架构如下图
由于性能差异这么大,所以WAF和防火墙之间还会部署负载均衡设备。
那么,WAF和web服务之间部署还会有什么方式?WAF毕竟也是防火墙,而且它又有web服务的处理能力。所以它有下面四种部署方式:
1. 作为WEB服务器的模块。好处是,由于和WEB服务器结合紧密,对恶意请求的拦截准确率是最高,而且完全可以用ModSecurity或naxis。缺点是,过于分散,不好管理和部署。
2. 作为一台反向代理服务器。好处是,部署方便简单,集中管理。缺点是,对恶意请求的误判率会上升。
3. 作为一台路由器。好处是,部署方便简单,集中管理。缺点是,也有单点问题,需要双机,同时由于作为一个路由器,需要在用户态上实现协议栈(TCP/IP),维护路由信息,不占用域名,对性能要求更高;且对https支持难度高。因此整体实现难度很高
4. 作为一台交换机。好处是,部署方便简单,集中管理,不占域名,也不占用IP,也就是说,对攻击者来说,它完全是透明的。缺点是,也有单点问题,需要双机,作为一个交换机,也需要在用户态实现协议栈(链路,TCP/IP),维护转发表,也由于同时防护多个站点,对性能要求高;且对https支持难度高。在四种模式,它的实现难度是最高的。
在实际应用中,第一种模式基本只是学习者使用,一般用开源的ModSecurity或Naxis较多。第三,第四种模式过于复杂,而且出问题会导致整个子网出问题,也基本没见到使用。第二种模式,基本主流的WAF产品都是采用这种模式。
请向公众号发消息:susu-221110