Azure实践系列 6:使用Web应用防火墙保护网站
网站是我们每一天可能都会使用到的信息交互方式,比如我们刷朋友圈、公众号、流量网页、看咨询新闻等。网站应用已经是非常普遍的信息技术应用。对于大型的网站应用来说,保护手段是必不可少的,如果不经保护就放到互联网中,可能很容易被别有用心的人进行***或***。
对于这种情况,Azure有专门的服务用于我们网站应用的保护,那就是应用程序网关。首先我们来看一下Azure是如何定义应用程序网关及Web应用防火墙的。
Azure 应用程序网关是一种 Web 流量负载均衡器,可用于管理 Web 应用程序的流量。
传统负载均衡器在传输层(OSI 层 4 - TCP 和 UDP)进行操作,并基于源 IP 地址和端口将流量路由到目标 IP 地址和端口。 但在使用应用程序网关时,可以实现更具体的操作。
Web 应用程序防火墙 (WAF) 是应用程序网关的功能,可以对 Web 应用程序进行集中保护,避免其受到常见的***和漏洞伤害。 WAF 基于 OWASP(开放 Web 应用程序安全项目)核心规则集 3.0 或 2.2.9 中的规则。
Web 应用程序已逐渐成为利用常见已知漏洞的恶意***的目标。 这些***中最常见的***包括 SQL 注入***、跨站点脚本***等。 防止应用程序代码中的此类***颇具挑战性,可能需要在应用程序拓扑的多个层进行严格的维护、修补和监视。 集中式 Web 应用程序防火墙有助于大幅简化安全管理,为抵卸威胁或***的应用程序管理员提供更好的保障。 相较保护每个单独的 Web 应用程序,WAF 解决方案还可通过在中央位置修补已知漏洞,更快地响应安全威胁。 可将现有应用程序网关轻松转换为支持 Web 应用程序防火墙的应用程序网关。
看到这里我们应该有一个基础的概念,什么是应用程序网关,什么是Web应用程序防火墙了。那么如何判断我们的网站需要防火墙呢?是通过网站程序大小、还是通过网站的性能级别还是什么呢?其实并没有严格的标准,而是根据实际情况进行随机应变。比如我们看一下下面这个网站,可以看到当前的应用程序计划已经是一个高级别的大型网站,CPU占用率在40-60%之间,内存占用有增加趋势。
对于这样的网站我们就需要额外的注意了,我们可以打开Azure Web应用的性能指标,进行进一步的指标监视。建议将应用的指标调整到24小时到48小时,这样可以便于我们宏观的了解应用近期的运行状况。对于网站应用一般来讲我们可以选择Request指标,此指标主要用于观察网站应用的访问情况,指标最小间隔周期是1分钟即我们可以看到每分钟最高的访问请求次数。
如果仅仅查看网站应用发现浏览量及请求数并不高,可以再看一下我们网站对应的数据库性能指标。以下是一个比较显著的收到***的指标迹象。我们可以看到在48小时内,数据库有多次CPU占用率到达100%,其中中间的阶段CPU几乎处于长时间的满载状态,而这种情况一般是不会出现的。
如果发现性能指标呈现以下状态,一般来说有两种原因导致:第一种原因是由于是由于正常的高并发访问。比如12306购票的高峰期,这是可预知的高并发请求,因为大家都在刷新网站抢购火车票,那这个时候我们就必须增加更多的服务器资源,如果数据库指标呈现顶峰,就需要增加数据库资源,Web应用就需要增加网站服务器的资源;第二种原因是由于来自不明用户的恶意***,比如大量的服务器访问请求、通过软件模拟访问、模拟IP地址、注入、XSS***等,那么对于这种情况就需要在网站应用前端加上应用程序网关及WAF了。
在Azure中,应用程序网关一般来讲是配合虚拟机及虚拟机规模集来使用的,对于通过Web应用承载的网站,则需要加上虚拟网络和虚拟网络网关才可使用。首先第一步是创建虚拟网络网关;
虚拟网关的用途主要是将虚拟网络和Web应用进行连接,因为Web应用和虚拟网络本身是处于两个分离的虚拟网络中。在创建虚拟网络网关的过程周末,我们选择网关类型为×××,SKU选择***Gw1,并为虚拟网关配置一个公网IP地址。
接下来我们去创建应用程序网关,这也是今天的重头戏。还是在首页,创建资源-网络-Application Gateway
由于带有WAF的应用程序网关只有中型以上的应用程序网关才支持,所以这里一定要选择WAF层,然后选择至少为中型的SKU。当然中型的SKU是可以由小型的SKU升级,但带有WAF是无法降级到小型SKU的。
然后我们将其添加到我们的虚拟网络中,注意此虚拟网络必须是和刚刚创建的虚拟网络网关关联的同一虚拟网络。
并且对于Vnet的网关的点到站点配置的IP地址空间须 位于下列其中一个地址块中 :
10.0.0.0/8 - 这指的是10.0.0.0到10.255.255.255的IP地址范围;
172.16.0.0/12 - 这指的是172.16.0.0 到 172.31.255.255 的IP地址范围;
192.168.0.0/16 - 这指的是 192.168.0.0 到 192.168.255.255的IP地址范围;
我们在创建好的虚拟网络网关中,找到点到站点配置,并配置其地址池,注意,请取消IKEv2隧道类型,Web应用配合应用程序网关的模式无法选择此隧道类型。
然后我们再到Web应用中,选择网络将Web应用连接到虚拟网络,单击右侧的VNet集成。
在添加VNet位置选择我们刚刚创建的带有虚拟网关的虚拟网络。
这个时候需要稍等片刻,如果IKev2没有取消则会报错,这里需要注意下。如果没有问题则会显示已经配置好的VNet信息,比如位置、网关状态及证书等。
这个时候我们的应用程序网关应该也已经创建好了,我们打开应用程序网关,找到Web应用程序防火墙,确保其处于开启状态,防火墙模式改为保护,这样WAF会自动帮我们进行***拦截而并非仅仅是检测***。
然后在后端池中,我们需要编辑后端池,单击默认的后端池,会打开编辑界面。
在编辑界面中,我们把目标修改为应用程序服务,并选择我们需要保护的应用程序实例。操作完成后选择保存。
然后再转到HTTP设置中,我们需要配置HTTP设置以确保应用程序网关和我们的Web应用能够正确对接。单击HTTP设置,选择默认的HTTP设置项目。
在设置中,我们选择下方的用于应用服务,此时自定义探测会自动填入内容,单击保存。
稍等片刻等到应用程序网关的配置更新完成,回到WAF的概述中。我们需要测试WAF是否配置成功,复制应用程序网关的前端IP地址。
在浏览器中粘贴该地址,如果成功怎么会显示我们的Web网站,如果不成功则会显示502 Bad Gateway之类的错误。
总的来说网站的防火墙配置还是非常重要的,对于Azure来说通过为虚拟机或网站应用加上应用程序网关,可以非常有效的增加网站应用的安全,减少不必要的***带来的安全问题和用户体验下降是非常有必要的。