近年来,云计算的热潮推动着IT行业的发展,很多企业的产品或服务都在尽力与云“挂钩”。其中,在国内外信息安全市场中,也多了一个新的概念,就是“云WAF”。
云WAF,也称WEB应用防火墙的云模式。它是一种全新的信息安全产品模式。这种模式让用户不需要在自己的网络中安装软件程序或部署硬件设备,就可以对 网站实施安全防护。防SQL注入、防XSS、防DDOS等,这些传统WAF上存在的功能,云WAF同样具备。从用户的角度来看,云WAF更像是一种安全服务,只不过这种服务并非是通过人工来实施的。
云waf的技术实现
之所以称之为云WAF,就是因为它所有的WAF功能都是通过云端提供的,而不需要在本地部署产品。实现这点主要利用的就是DNS技术。
众所周知,每个网站都有自己的域名,域名与WEB服务器的IP地址相对应。当客户端浏览器通过域名访问网站时,首先会由网站指定的DNS服务器解析出域名所对应的WEB服务器的IP地址,这样客户端才能向服务器发起正常的访问请求,进而完成一次完整的HTTP会话。
云WAF正是利用这项机制。通过让网站移交域名解析权的方式,实现对网站的安全防护。
图一就是当用户访问web服务器的时候流量的走向
如上图所示,dns服务器负责将域名解析到waf防火墙上,然后waf通过反向代理再把流量代理到真正的web服务器上面,所以说,外界访问web服务器的 方式是经过dns服务器,然后waf,最后是web服务器。这样,通过反向代理,用户是无法访问到真正的web服务器,使web服务器处于保护状态。
如何搭建一个云waf系统
环境:
ubuntu 14.04 Apache2 Windows 2008
我们使用ubuntu作为waf服务器,使用win2008作为dns服务器。
首先配置waf,设置一个固定IP,我这里设置为192.168.1.3
安装软件之前首先更新源
sudo apt-get install update
安装apache2
Sudo apt-get install apache2
当显示OK的时候说明安装成功
安装modsecurity
apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache2-modsecurity
安装好以后使用
dpkg -s libapache2-modsecurity | grep Version
可以查看你的modsecurity版本号
我的版本是2.7.7-2(这里说一下,因为上面那个虚拟机崩溃了 然后又重装了一个,所以后面写的是ubuntu2)
然后重新加载配置文件
service apache2 reload
当该命令生效以后就会在/var/log/apache2/目录下生成modsecurity的日志文件modsec_audit.log
配置modsecurity
启用modsecurity核心规则集
将我们想起用的规则集放置在以下目录下
cd /usr/share/modsecurity-crs/activated_rules/
选择启用base规则集
for f in $(ls ../base_rules/); do ln -s ../base_rules/$f; done
修改apache配置文件,启用规则
vim /etc/apache2/mods-available/security2.conf
修改
<IfModule security2_module> # Default Debian dir for modsecurity's persistent data SecDataDir /var/cache/modsecurity # Include all the *.conf files in /etc/modsecurity. # Keeping your local configuration in that directory # will allow for an easy upgrade of THIS file and # make your life easier IncludeOptional /etc/modsecurity/*.conf IncludeOptional /usr/share/modsecurity-crs/*.conf IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf </IfModule>
启用modsecurity模块
a2enmod headersa2enmod security2 service apache2 restart
这样waf服务器就搭建成功
配置反向代理
首先
打开终端,输入
sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_balancer
每步运行完都要重启apache
然后打开etc/apache2/sites-acailable/000-default.conf
修改配置文件。大约改成下面的样子:
ServerName www.***.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerAlias ***.com ProxyPreserveHost On ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://****/ (输入web服务器的ip与端口) ProxyPassReverse / http://***/(输入web服务器的ip与端口)
然后重启apache服务器,就可以了
搭建dns服务器
点击服务器管理器-添加角色-dns服务器
然后打开dns管理器,右键,选择连接到dns服务器,此计算机,确定
正向查找-新建区域
然后一直下一步,域名填写你要注释的域名,但是不要加www
点击新建主机,在名称上填写www,记住ip地址写的是你的waf服务器的地址
测试结果
当我们在waf的保护下输入在域名后面加入"'"以后
当我们把dns的服务器修改为本地的dns服务器以后
再次在域名后面输入"'"
可以在上图中看到你的路径等信息,配置成功!
* 作者/yangxiaocheng,属FreeBuf原创奖励计划文章,未经许可禁止转载