Web安全---被动类安全产品技术分析
Jack zhai
一、
Web安全产品分析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
围绕Web服务的安全,产品可以说五花八门,最基本的是接入网入口的UTM网关,其中IPS功能与防DDOS功能是Web服务器系统级***的直接防护,但UTM是通用的边界安全网关,非“专业的”Web***防护,一般作为安全的入门级防护,这里不细说。这里主要分析专为Web服务开发的安全产品,大概有下面几方面的产品:
1、
网页防篡改产品:
防护未知***是难的,但看好我自己的“家底”是相对容易的。因此,人们最先想到的就是网页防篡改技术,保持自己的“纯洁”,起码对社会不会造成大危害。网页被篡改产品出现在Web早期,几经风雨,各厂家技术逐渐统一。网页防篡改技术的基本原理:是对Web服务器上的页面文件(目录下文件)进行监控,发现有更改及时恢复。所以该产品实际是一个“修补”的工具,不能阻止***者的篡改,就来个守株待兔,专人看守,减少损失是目标,防篡改属于典型的被动防护技术。
网页防篡改产品的部署:建立一台单独的管理服务器(Web服务器数量少可以省略),然后在每台Web服务器上安装一个Agent程序,负责该服务器的“网页文件看护”,管理服务器是管理这些Agent看护策略的。
![](https://i-blog.csdnimg.cn/blog_migrate/763227a3ee388b3d8344a201df5f59c2.png)
我们先分析一下“页面文件看护”技术的变迁:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
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的软件方式,但是不建议完全依靠数据库自身的日志功能,因为,***者破坏后一定有“抹去痕迹”的步骤,痕迹一般就是系统本身的日志,单独的审计机制保障了日志的完整性。