Apache服务器监控系统的研究

Apache服务器监控系统的研究

 

 

刘波  代亚非吴非

 

(哈尔滨工业大学计算机系哈尔滨 150001)

 

(北京大学计算机科技系系统结构教研室北京 100871)

 

 

  要:针对Apache服务器介绍了一个远程监控系统。它提供了有效的监控机制,使管理者及时了解服务器的工作状态及工作性能;其友好的管理界面使管理者从繁杂的命令行工作方式解脱出来,方便地进行管理;其安全的通信机制使监控系统与服务器异地运行而减少对服务器性能的影响。

关键词:Web server, Apache, Web安全, 监控系统

0  引言

Web服务器是目前大多数业务最关键的部分。它提供了公司的公共门面、发布内部信息并通过在线的购买和推荐带来真实的收入。因此,Web服务器的安全与高性能成为人们期待的目标。但随着Web服务器功能不断增加,Web所面临的威胁亦在增加[2],建设与管理它必须要有丰富的经验和知识[1]

本文针对当前流行的Apache服务器,研究实现了一个具有统一用户接口的监控系统,使管理员随时了解Web server的性能及安全状况,通过友好的远程管理界面在任意地点对服务器进行管理,脱离繁琐的命令行工作方式,提高了Web server管理者的工作效率,从而为Web se

rver始终处于高性能、高安全性的工作状态提供了一种措施。

1 系统功能及实现

本所介绍的Apache服务器监控系统是基于Web的Client/Server技术,应用Java语言实现的可视化监控系统。其主要功能是:(1)监视Web server的工作状况,如当前在线连接的个数、请求响应时间等。当出现异常情况紧急响应并自动报警。(2)服务器管理,如远程配置、重启动等。系统实现模型如图1。

 

 

监控系统将浏览器作为统一的用户界面,通过Applet使用户与监控系统进行交互。用户可通过监视界面(Applet)设置或得到Web server运行时监控系统所获得的性能参数,设置性能参数的正常值,也可通过管理界面(Applet)远程配置、重启Web server。监视服务器运行在与服务器所在主机同一网段的其他任意主机上,完成监视功能。代理服务器(Agent)主要负责与Web服务器所在主机打交道,包括读写监控系统配置文件、Web server配置文件、日志文件以及主机上的其他文件,并在需要时提供给监视服务器。监视服务器/Applet与Agent通讯的协议采用TCP或UDP,而具体的操作请求包含于协议数据体中。

1.1 监视服器

监视服务器的功能是获得Web server的性能参数,然后与相应的正常值进行比较,若发生显著偏差(由管理员定义偏差范围),则紧急响应,自动报警。监视服务器搜集的性能参数主要来源于模拟客户请求所得数据、Web server日志和网络传输数据,包括[2]

服务器响应时间  监视服务器周期地(10min)向Web server发送HTTP的HEAD方法请求包,记录响应时间,若响应时间过长则报警,以进行Web server的性能配置。

主机系统负载状况  代理服务器周期地(10min)将Web server所在主机系统的CPU负载及内存使用状况的参数提交给监视服务器,监视服务器进行数据精简及分析,当出现超载情况则报警。

Web server日志分析  [HT]Web server日志包括error-logaccess-log。代理服务器定期15min统计一次最新的Web server日志信息提交给监视服务器。监视服务器进行数据精简,以检测授权用户假冒(即非授权用户访问特定Web内容),Web页面被恶意删除等攻击行为。

网络数据分析监视服务器进行网络侦听,分析网络传输数据,以保护Web服务器免于拒绝服务、缓冲区溢出等攻击。如,可能导致系统崩溃的碎片,假IP包,或制造大量的半连接,SYNFlooding等。

1.2 代理服务器

代理服务器的功能是代理监视服务器、Applet与Web server所在主机交互的请求。当用户要求了解Web server当前运行状态时,Agent将作为前端界面与监视服务器的中转,为Applet和监视服务器传递请求包和响应包。

监视界面的请求主要为设置Web server的性能参数正常值及其范围,代理服务器将其写入监控系统的配置文件;显示当前运行状况。管理界面的请求包括对Web server进行配置,并在必要时重新启动。根据配置内容的目的及属性[3]作者将其分为3类,因此管理功能具体为:  文件管理  对服务器用到的文件、目录进行配置,包括服务器运行根目录(ServerRoot)、用户目录(UserDir)、日志文件位置(ErrorLog,TransferLog,AgentLog)以及文档根目录(DocumentRoot)等。

性能管理  在Apache运行时,可以通过修改配置文件对server的性能进行调整,如选择服务器运行类型(ServerType),是独立运行的方式(Standalone)或是inetd运行方式;通过改变MaxServer和StartServer的数目改变服务器所占有的资源;设置恰当的Redirect功能以使服务器负载均衡等。

安全管理  为了对某些文件的访问权限加以控制,可以在Access.conf(缺省的文件名称)文件中对整个server的访问策略进行配置,如各目录及文件的访问权限,并可在选择Standalone运行方式时,设置有效的用户和组(它们都可设置相应的密码),对某些信息进行保护。

重启  Web server被重新配置后必须重新启动才能使某些配置生效。管理模块首先根据PidFile中的进程号杀死Web server主进程然后重启Web server

除此之外,代理服务器负责检测HTML页面正确性。此项功能为管理员动态设定,因为此项检查占用Web服务器主机的系统资源较大。当管理员设定此项时,代理服务器将制作现有文件的备份,并定期检查各HTML文件的大小、修改时间和校验和,若出现改动,则将当前HTML文档和日志文件保存至指定目录,用备份文件进行自动恢复,并报警。

2 监控系统安全性

监控系统的加入不应增加Web server的不安全性,因此,监控系统自身的安全是作者考虑的一个关键问题。

首先,选择了Java语言实现监控系统,是因为在网络编程方面它有其他程序设计语言难以比拟的特点[4-6]

(1)面向对象的网络程序语言,编程简单,易于处理网络协议,减少了编程错误;多线程机制,提高了编程质量。

(2)编译时和运行时的语法检查和例外检查,垃圾回收机制,集成的面向对象的例外处理机制等,增强系统的鲁棒性。

(3)可移植性。

其次,监控系统中各部分的通信采用密文传输。因为JDK1.2的加密结构(Java Cryptograghy Architecture,JCA)提供了全面的加密服务和算法以保证网上信息的安全,本文的监控系统均采用java.security包中类实现。

3 对Web服务器性能的影响

监控系统的运行是否会对Web sever所在主机的性能产生影响?影响的程度多大?这是监控系统也要考虑的一个关键问题。在本文的监控系统中,Agent是对Web server所在主机的性能产生影响的因素。因此,作者在Agent的实现过程中如下设计:

(1)将Agent(代理服务器)加入inetd中,因为其被请求频率不高。

(2)监控系统配置文件在管理员设置后全部上载至监视服务器,监视服务器不再有与配置文件有关的请求,直至下一次更改。

(3)监控系统中的周期长短可以由Web管理员根据Web server的运行情况进行配置,从而比较接近降低资源消耗和减少漏报率之间的平衡。

(4)当前端要显示Web server运行参数时,Agent只对包做转发,而不进行加密和解密。

(5)如果Web管理员配置了检查HTML文件正确性的选项,则需设置HTML文件检查模块的运行方式,选择cron daemon激活的形式或远程消息激活的形式。cron daemon激活的方式是指Agent写crontab文件,由cron daemon每分钟检查是否该执行文件检查,这种方式比较浪费主机的资源,但执行及时,不依赖网络;远程消息激活的方式是指文件检查模块被Agent初始化后进入休眠状态,由监视模块定时发UDP包给Agent,由Agent唤醒文件检查模块,这种方式对Web server所在主机影响小。

上述实现手段使监控系统对Web server所在主机的性能影响可以只来源于Agent对网络数据包的处理。

4 结论

Web安全是一种动态的错综复杂的安全政策和安全产品的组合。Web server性能及安全的保证应构建在主机及网络安全的基础之上,由完整的安全策略评估和管理各种实施和支持Web安全的部件,包括保护、评估、检测与响应等步骤。本文的监控系统实现了检测与响应,监视服务器实质上是一个基于主机和网络的IDS的简单实现(包括部分自动响应功能),而代理服务器则实现了一个响应系统(人工响应和自动响应)的功能;统一的前端界面(浏览器)使管理员不受地点限制,随时掌握服务器运行状况,远程管理Web server,配置监控服务器。

参考文献:

[1]http://www.wrqwam.com/prodserv/namonitors.html

[2]张小斌,严望佳.黑客分析与防范技术.北京:清华大学出版社, 1999,5

[3]http://www.apache.org/docs/mod/directives.html

4Gosling J, McGilton H. The JavaTM Language Environment. Sun Microsystems, Inc., 19965

5http://developer.java.sun.com/developer/technicalArticles/Security/Crypto/index.html

6http://developer.java.sun.com/developer/technicalArticles/Security/JCE/index.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章