一、
Web
安全产品分析
围绕
Web
服务的安全,产品可以说五花八门,最基本的是接入网入口的
UTM
网关,其中
IPS
功能与防
DDOS
功能是
Web
服务器系统级入侵的直接防护,但
UTM
是通用的边界安全网关,非“专业的”
Web
入侵防护,一般作为安全的入门级防护,这里不细说。这里主要分析专为
Web
服务开发的安全产品,大概有下面几方面的产品:
1、
网页防篡改产品:
防护未知攻击是难的,但看好我自己的“家底”是相对容易的。因此,人们最先想到的就是网页防篡改技术,保持自己的“纯洁”,起码对社会不会造成大危害。网页被篡改产品出现在
Web
早期,几经风雨,各厂家技术逐渐统一。网页防篡改技术的基本原理:是对
Web
服务器上的页面文件
(
目录下文件
)
进行监控,发现有更改及时恢复。所以该产品实际是一个“修补”的工具,不能阻止攻击者的篡改,就来个守株待兔,专人看守,减少损失是目标,防篡改属于典型的被动防护技术。
网页防篡改产品的部署:建立一台单独的管理服务器
(Web
服务器数量少可以省略
)
,然后在每台
Web
服务器上安装一个
Agent
程序,负责该服务器的“网页文件看护”,管理服务器是管理这些
Agent
看护策略的。
我们先分析一下“页面文件看护”技术的变迁:
a)
第一代技术,把
Web
服务器主目录下的文件做一个备份,用一个定时循环进程,把备份的文件与服务使用的文件逐个进行比较,不一样的就用备份去覆盖。网站更新发布时,则同时更新主目录与备份。这种方法在网站大的情况下,网页数量巨大,扫描一遍的时间太长,并且对
Web
服务器性能也是挤占。
b)
第二代技术,采用了
Hash
算法,对主目录下的每个文件做
Hash
,生成该文件的“指纹”,定时循环进程直接计算服务用文件的
Hash
指纹,然后进行指纹核对,指纹一般比较小,比较方便;指纹具有不可逆的特点,不怕仿制。
c)
第三代技术,既然网站上页面太多,三级以下页面的访问量,一般使用呈指数级下降,没人访问当然也不会被篡改,在这些页面重复扫描是不划算的。改变一下思路:对文件读取应该没有危险,危险的是对文件的改写操作。若只对文件被改变时才做检查,就可以大大降低对服务器资源的占用;具体做法是:开启一个看守进程,对
Web
服务器的主目录文件删改操作进行监控,发现有此操作,判断是否有合法身份,是否为授权的维护操作,否则阻断其执行,文件不被改写,也就起到了网页防篡改的目的。这个技术也称为事件触发防篡改。
这种技术需要考验对服务器操作系统的熟悉程度,但黑客也是高手,你的看护进程是用户级的,黑客可以获得高级权限,绕过你的“消息钩子”,监控就成了摆设。
d)
第四代技术,既然是比谁的进程权限高,让操作系统干这个活儿,应该是最合适的,黑客再牛也不可能越过操作系统自己“干活”。因此,在
Windows
系统中,提供系统级的目录文件修改看护进程
(
系统调用
)
,防篡改产品直接调用就可以了,或者利用操作系统自身的文件安全保护功能,对主目录文件进行锁定
(Windows
对自己系统的重要文件也采取了类似的防篡改保护,避免病毒的侵扰
)
,只允许网站发布系统
(
网页升级更新
)
才可以修改文件,其他系统进程也不允许删改。
这个方法应该说比较彻底,但可以看出,以后防篡改技术将成为操作系统的“专利”了,安全厂家实在是不愿意看到的。好在目前
Linux
还没有支持。
网页防篡改系统可以用于
Web
服务器,也可以用于中间件服务器,其目的都是保障网页文件的完整性。
网页防篡改对保护静态页面有很好的效果,但对于动态页面就没有办法了,因为页面是用户访问时生成的,内容与数据库相关。很多
SQL
注入就是利用这个漏洞,可以继续入侵
Web
服务器。
到目前为止,很多网页防篡改产品中都提供了一个
IPS
软件模块,用来阻止来针对
Web
服务的
SQL
注入、
XML
注入攻击。如国内厂家的
WebGuard
、
iGuard
、
InforGuard
等产品。
2、Web
数据库审计产品:
有效恢复是安全保障的一个很重要的理念。我们提到动态网页的防护难点是用数据库现场生成的,因此对数据库的修改就变得很关键,
Web
数据库审计产品的目的就是对数据的所有操作进行记录,当发现问题时,这些操作可以回溯。打个比方,你在游戏中的装备被别人给“划走”了,过了一周,你发现了,但一周中,游戏在继续,你的装备有很多新动态,合理与不合理变化交织在一起。此时,若管理人员知道确定是“某人”的篡改,就可以把他的动作进行“逆向”操作,你的游戏仍可以继续,不受影响;若通过协商,需要恢复到篡改前的某个状态,则在数据库中先取得篡改前最近一次的备份数据,再使用数据库的审计记录,一直“操作”到篡改前的状态,游戏就可以继续了。这种技术与数据库的实时同步备份技术是类似的。
Web
数据库审计的目的与通常的安全审计产品的不同,取证与重现过程是第二位的,而对数据的可回溯操作是第一位的,有人理解为数据恢复是数据备份与容灾系统的工作,其实只是其中的一个方面,对整个数据库应该是这样的,但对单个用户的数据的恢复是这里的审计来解决的。这里的审计有些像数据库的操作日志,但需要关联到操作的账户,后者是操作者是身份。
当然数据的操作量很大,全部记录需要很大的数据空间,所以,
Web
服务中重要数据库操作才进行详细审计,审计的目的是为了运营状态的可恢复。常见的
Web
审计数据:
²
帐户操作:涉及权限的改变
²
运营操作:涉及“财与物”的变化
²
维护操作:涉及“特殊权限”人的动作
Web
数据库审计产品一般采用旁路部署,不影响数据库的业务效率。若在业务流量不很大的情况下,可以采用
Agent
的软件方式,但是不建议完全依靠数据库自身的日志功能,因为,入侵者破坏后一定有“抹去痕迹”的步骤,痕迹一般就是系统本身的日志,单独的审计机制保障了日志的完整性。