ModSecurity是一个开源的Web应用防火墙(WAF)解决方案。它基于当前流行的Apache服务器,能轻易地部署在大部分基于Linux的Web应用上。WAF是应用层的防火墙,用来监控Web服务器的访问,以验证访问请求有效且没有非法入侵Web服务器的意图。这种用于检测的技术叫做“深层检测“,因为防火墙将在数据包中检测得更深。
典型的防火墙检测方式是基于IP地址的,通过协议(TCP或者UDP)和端口来判断流量是否为合法的。WAF通过传统的IP和TCP/UDP,并结合检测流量大小来判断该数据流是否为非法的。深层检测可以通过两种方式来发现异常数据:协议发现和签名。用协议发现,深层检测可以查看……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
ModSecurity是一个开源的Web应用防火墙(WAF)解决方案。它基于当前流行的Apache服务器,能轻易地部署在大部分基于Linux的Web应用上。WAF是应用层的防火墙,用来监控Web服务器的访问,以验证访问请求有效且没有非法入侵Web服务器的意图。这种用于检测的技术叫做“深层检测“,因为防火墙将在数据包中检测得更深。
典型的防火墙检测方式是基于IP地址的,通过协议(TCP或者UDP)和端口来判断流量是否为合法的。WAF通过传统的IP和TCP/UDP,并结合检测流量大小来判断该数据流是否为非法的。深层检测可以通过两种方式来发现异常数据:协议发现和签名。用协议发现,深层检测可以查看协议版本、协议的一致性、无效请求、域名解析检查及其它容易被判断为反常的方法。通过签名,检测某种数据包(比如HTTP)应该有的负载范围,可以判断黑客攻击具有的特征。例如,对某个特定版本CGI程序的请求可能会以http://www.domain.com/cgi/hacked.cgi?a=4这样的形式出现,这样就会以它的签名为由被屏蔽。
为什么要用WAF?
应用防火墙除了能增强安全性外,有些组织还需要它来支持支付卡行业项目,以使其满足VISA卡和MASTER卡要求的支付卡行业数据安全标准(PCI DSS)。PCI DSS要求部署应用防火墙和操作规程来保证安全性。
开源的WAF解决方案
目前有两个有名的开源WAF:Aqtronoxa和ModSecurity。Aqtronoxa可以用IIS环境中部署和发布,ModSecurity则用Apache环境。升级转换版的ModSecurity可以部署在任何WEB服务器上(不要求Apache)。
ModSecurity的要求
我建议用Apache2.2.X或者更高版本来做Web服务器。以下的步骤是假设Apache未安装的情况下,将使用最新增的功能来简化安装过程。
DNS是网页流量和使用WEB应用防火墙的基础条件。所以,请确认DNS在运行WAF的红帽系统中能正常工作。本文档中使用红帽5.4版本做为例子,但是实际在5.3版本中会运行的更好。
ModSecurity的安装
在本文档中,我们将在开放了80到8080端口的服务器上来安装ModSecurity。WEB服务器的地址为192.168.1.5 。
ModSecurity可以用源代码来安装,它附有详细的安装说明。但是,我还是选择用模块包的方式通过包管理来安装ModSecurity。
要用包管理的方式,就要选择一个合适的库来安装。这里我选择Jason Litka的库。添加一个库到Yum让它能够认到Jason的库。例如,编辑/etc/yum.repos.d/utter.repo,并添加以下内容:
[utter] name=Jason's Utter Ramblings Repo baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
这样Yum就可以认到APACHE所能安装到的库了:
yum install httpd
yum install httpd-devel
然后ModSecurity就可以用以下命令来安装:
yum install mod_security
不幸的是用这个办法ModSecurity还是需要手动指定一些ModProxy的汇编,所以这里要安装一个gcc编译器(稍后可以卸载):
Cd /root
wget http://www.manticmoo.com/articles/jeff/programming/proxy/mod_proxy_html.c
yum install libxml2-devel yum install gcc apxs -c -I /usr/include/libxml2/ -i mod_proxy_html.c
其余的可以用以下命令删除:
yum erase kernel-headers yum erase cpp yum erase libgomp
ModSecurity需要libxml模块,将以下命令添加到httd.conf中去:
LoadFile /usr/lib/libxml2.so LoadModule proxy_html_module modules/mod_proxy_html.so
添加如下行:
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
现在可用用httd.conf中的以下命令来激活proxy:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLProxyEngine On ProxyPass / http://192.168.1.5:8080/ ProxyPassReverse / http://website.domain.com/
<Location>
ProxyHTMLExtended On </Location>
参数ProxyPass和ProxyPass reverse定义了发送实际数据的位置。默认情况这里会要求填入Web服务器负载均衡地址的完全域名。
翻译
相关推荐
-
托管OpenStack私有云能够获得支持or单打独斗?
OpenStack私有云托管作为一种服务可以简化企业的部署和运营,并强调了云计算的优势,而非Linux的优化……
-
企业服务器Linux发行版横向对比
主流Linux发行版都可以在企业服务器上运行,但对于企业来说从挑选到采购仍不是一个轻松的课题。这里比较了Red Hat、SUSE、Ubuntu以及Oracle Linux操作系统,总有一款适合你的企业。
-
说开源 讲红帽:从20亿美金到2017中国战略
红帽是如何引领了开源在企业级领域的发展?凭借什么进军50亿美金俱乐部?2017年的红帽将如何进军中国市场?
-
RHEL开发预览让ARM服务器走向现实
ARM服务器还未搞定企业数据中心,但由开源鼻祖红帽发布的举动暗示了蕴含ARM的未来,发布了其用于ARM处理器的Red Hat Enterprise Linux (RHEL)服务器平台预览版。