modsecurity保障WebServ节能
民生评论 2020-10-07 09:23 字号: 大 中 小
Web服务正在变为下一代web应用的一个完整部分。但是它也较容易被攻击。这些攻击的种类与传统的web应用所受到的攻击是相同的,但是形式上发生了变化。这些攻击会导致信息泄漏;另外,这些攻击有助于执行远程命令。通过使用WSDL,一个攻击者能够确定web服务的入口和可用的接口。这些接口或方法使用SOAP协议通过HTTP/HTTPS方式得到输入。如果在源代码层没有好的保护,您的应用就会处于危险。mod_security作为一个Apache web服务器模块,是一种保护web服务免受恶意攻击(包括封装在SOAP封套内的恶意数据)的理想解决方案。
问题域
Web服务所遭到的四种主要攻击:
变量长度缓冲区(Variable-length buffer)注入
元字符注入
SQL注入
SOAP错误代码信息暴露(译者注:是指返回的Exception信息的暴露)
通常防火墙配置会允许HTTP/HTTPS传输无碍的进入。通常对web服务的攻击会伪装成合法的HTTP/HTTPS传输,从而蒙骗了防火墙。这篇文章将告诉您如何区分合法的HTTP/HTTPS传输和恶意的HTTP/HTTPS传输,并截获恶意传输。这样将能够在很大程度上减轻对80/443端口的攻击。
解决方案是什么?
有很多解决方案,从安全代码到输入验证。一个途径是通过对每一个请求的内容用事先定义好的规则进行验证。这种途径在源代码层上阻止了恶意SOAP请求渗透入web服务。如您为web服务正确部署并配置了mod_security,它将能够阻止所有上述的攻击。这篇文章将详细的讨论mod_security如何能成为web 服务有效的防范工具。
当部署完web服务后,提供一个防御手段来防范不同类型的攻击是很重要的。每一种攻击都需要不同的防范策略。假设有这么一个银行—这个银行仅仅是一个作为例子的假想银行。
Blue 银行()最近刚刚部署了web服务,并使用mod_security对web服务进行保护。该银行通过internet向它的金融合作伙伴和客户提供银行服务。它的web服务提供的客户服务,比如帐目结算,资金周转和更改用户信息。图1解释了在Blue Bank部署的web服务的架构。
图 1. Blue银行的部署
有许多部署web服务的方法。在这个例子中,web服务运行在Tomcat/Axis上。banking web服务应用以Java编码(以.jws作为扩展名)。
相关的Apache和Axis配置文件片断包含用来加载Tomcat的Apache nf:
LoadModule jk2_module modules/mod_JkSet le /usr/local/海南长臂猿是世界上现有灵长类动物中数量最少的猿类之一。从海南省霸王岭国家级自然保护区管理局了解到apache2/conf/operties
让web服务支持AxisServlet 的Axis l文件:
servlet-mapping
servlet-nameAxisServlet/servlet-name
url-pattern*.jws/url-pattern
/servlet-mapping
像如上配置之后,您将可以在该服务器上部署任何web服务。如果您注意到该服务器发回的如下的头信息,您能够识别如下这一行:
Server: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7d mod_jk2/2.0.4
以上的消息头说明服务器是运行于Tomcat模块mod_jk2/2.0.4之上的Apache/2.0.50 (Unix)。Axis作为Tomcat web应用的一部分并且已经可以部署web服务。为了给web服务层提供保护,Blue银行已经加载了有application级过滤能力的mod_security模块。下面一行在nf中的信息加载安全模块:
LoadModule security_module modules/mod_
当部署好mod_security后,Blue银行可以在nf里添加过滤规则:
IfModule mod_security.c
# Turn the filtering engine On or Off
SecFilterEngine On
SecFilterDefaultAction "deny,log,status:500"
SecFilterScanPOST On
. . .
# Other rules
. . .
/IfModule
通过上面的配置,Blue Bank已经为管理员和开发人员准备好创建web服务,并利用mod_security的有效的内容过滤能力来防范恶意HTTP/HTTPS请求。
考虑一个web服务例子
如:
这个web服务的WSDL请求来自:
说明:是一个虚拟的域名,仅仅作为例子。
从WSDL得到 方法/接口 数据来显示帐目结算信息
仔细观察HTTP请求获得的WSDL应答结果。这里重点观察一个调用方法,该方法输入bank id 然后返回相关账目结算信息并通过Http传递给客户端。operation标签指定web服务能够调用的方法。相关的wsdl代码片断如下:
wsdl:operation name="getInput"
wsdlsoap:operation soapAction=""/
wsdl:input name="getInputRequest"
wsdlsoap:body encodingStyle="http://DefaultNamespace"use="encoded"/
/wsdl:input
wsdl:output name="getInputResponse"
wsdlsoap:body encodingStyle=""use="encoded"/
/wsdl:output
wsdl:message name="getInputResponse"
wsdl:part name="getInputReturn" type="xsd:string"/
/wsdl:messagewsdl:message name="getInputRequest"
wsdl:part name="id" type="xsd:string"//wsdl:message
如上面代码所示,当向该方法传入一个id将得到一个字符串类型的输出。当你向该方法传入一个account id,你将回得到该account id的账目结算。
通过HTTP方式调用web服务
Blue银行的客户或者合作伙伴可以通过向banking web服务发送正确格式的SOAP封套来得到要求的信息。图2展示了一个通过向服务发送account id 12123 来获取相应账目结算的HTTP请求。
图 2.通过HTTP方式调用web服务
有很多种方法来产生有正确格式的SOAP请求的SOAP客户。这里有一个用Perl SOAP::Lite实现的SOAP客户。下面的简单代码将生成一个SOAP请求。
#!perl -wuse SOAP::Lite;print SOAP::Lite - service('') - getInput('12123');
在络上探测到HTTP请求和应答是可能的,比如用ethereal。一个发送到 的包含id 信息为12123的HTTP/SOAP请求将产生如下信息:
POST /axis/s HTTP/1.0Content-Type: text/xml; charset=utf-8SOAPAction: ""Content-Length: 576Expect: 100-continueHost: ?xml version="1.0" encoding="utf-8"?
soap:Envelope xmlns:soap=""xmlns:soapenc=""xmlns:tns="" xmlns:types=""xmlns:xsi=""xmlns:xsd=""
soap:Bodysoap:encodingStyle=""
q1:getInput xmlns:q1="http://DefaultNamespace"
id xsi:type="xsd:string"12123/id
/q1:getInput
/soap:Body
/soap:Envelope
...HTTP/1.1 200 OKDate: Mon, 03 Jan 2005 19:24:10 GMTServer: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7d mod_jk2/2.0.4Set-Cookie: JSESSIONID=69C6540CC427A8B064C0795ADDFC20EA; Path=/axisContent-Type: text/xml;charset=utf-8Connection: close?xml version="1.0" encoding="UTF-8"?
soapenv:Envelope xmlns:soapenv=""
xmlns:xsd=""
xmlns:xsi=""
soapenv:Body
ns1:getInputResponsesoapenv:encodingStyle=""
xmlns:ns1="http://DefaultNamesp反复的做ace"
ns1:getInputReturnxsi:type="xsd:string"$2500/ns1:getInputReturn
/ns1:getInputResponse
/soapenv:Body/soapenv:Envelope查看本文来源
宝宝积食可以贴丁桂儿脐贴吗太原专治白癜风医院七个月宝宝肚子胀怎么办-
-
李娜渴望拿大满贯和世界第一不给自己太大压搭配
李娜:渴望拿大满贯和世界第一 不给自己太大压力即将在香港...
2020-05-29 | 民生评论
-
-
我市召开政策性粮食库存大清查工作部署动员
我市召开政策性粮食库存大清查工作部署动员会 近日,省政...
2019-12-17 | 民生评论
-
-
妈妈你缺席了我的成长却出席了我的审判
妈妈,你缺席了我的成长,却出席了我的审判民生法制3月11日...
2019-07-13 | 民生评论
-
-
新一轮强降雨致南方部分地区再次受灾
新一轮强降雨致南方部分地区再次受灾5月18日以来,南方地区...
2019-07-07 | 民生评论
-
-
麻家渡镇盯紧六类人严守廉政关
麻家渡镇:盯紧六类人 严守廉政关今日竹山网消息 4月18日...
2019-07-06 | 民生评论
-
-
淀山湖镇举办中华慈善日义卖活动
淀山湖镇举办“中华慈善日”义卖活动为纪念《慈善法》颁布...
2019-07-06 | 民生评论