如何保证电子政务的安全?
【IT168 管理】在电子政务的 Web 应用中,需要实现完善的安全体系,来保证涉密行业的信息安全性。根据项目需要,本文着重于讨论如何利用管道和过滤器体系结构来为电子政务的 Web 应用提供安全审计功能,提出了电子政务安全审计的一种比较完善的解决方案。
1 电子政务
电子政务是一个综合性的信息系统,业务范围涉及政府机关内部、其他相关机关团体、社会公众等等,最终目标就是实现政府办公的网络化、数字化、自动化。
由于电子政务领域的业务特殊性,安全性显得尤为重要,贯穿了电子政务系统中的物理层、网络层、系统层、应用层等各个层次,尤其是很多涉密业务的需要,使人们对电子政务安全的话题越来越关注。
2 安全审计
大型的电子政务系统,尤其是涉密的信息子系统都要实现特定层面上的安全审计功能,主要针对的审计对象有:网络通信系统、重要服务器主机操作系统、重要服务器主机应用平台软件、重要数据库操作的审计、重要应用系统的审计、重要网络区域的客户机等。
在电子政务系统中实施安全审计要兼顾与原有系统的关系,通常有如下四种形式:
? 完全透明:即原有系统根本察觉不到审计系统的存在。
? 松散嵌入:基本上不改变原有系统。
? 紧密嵌入:需要原有系统平台层和部分应用做出较大变动。
? 一体化设计:在电子政务设计阶段就考虑安全审计的需求,所有模块均有审计接口。
安全审计的核心在于对与安全有关的活动的操作信息进行识别、记录、存储和分析。同时,可以辅助其他的一些安全措施,比如防止恶意刷新、危险IP过滤等等。通过审计记录的分析,可以知道网络上发生了哪些与安全有关的活动,哪个用户应该对这个活动负责。
在电子政务系统中实现安全审计,可以:
? 对潜在的攻击者起到震慑或警告作用。
? 对于已经发生的系统破坏行为提供有效的追究证据。
? 提供有价值的系统使用日志,帮助系统管理员及时发现系统入侵行为或潜在的系统漏洞。
? 提供系统运行的统计日志,使系统管理员能够发现系统性能上的不足。
本文从实际项目需求出发,针对某局电子政务系统应用层中对办公自动化系统、相关政务业务系统等的审计需求,充分利用过滤器机制,提出了电子政务中一种安全审计的实现方案,针对内/外/专网实现不同层面的安全审计,如外网防止恶意刷新、提取危险IP、专网的项目审核、政务业务、内网的办公自动化系统等。
3 详细解决方案
3.1 系统模型
我们充分利用了Filter技术,实现了管道式的过滤机制。通过Filter链的配置,可以根据用户对服务器的不同请求达到特定的身份认证、访问控制、访问跟踪、审计日志记录等功能。同时,基于对CC 准则的研究,我们提出了如下的审计模型:

图1 安全审计系统模型
规则管理:为保证系统在有安全保障的条件下有效运行,我们为审计管理员提供了详细的规则管理,包括对来访IP的过滤,对特定注册用户的过滤,对恶意刷新(可自定义设置次数/秒数)的屏蔽等。
审计事件鉴别:在实施审计过滤体系前,我们需要对审计事件进行鉴别,以确定哪些事件需要重点审计,据此来配置相应的过滤器链,开发相应的审计事件记录组件等。
报警处理及报警行为:对于违规访问及恶意刷新,系统会进行报警处理,自动提取来访IP或用户名,将其置入危险IP库或者拒绝服务用户库,再次地访问将被服务器拒绝,同时,系统将向审计管理员发出Email以提示系统可能潜在的危险。
日志采集:日志采集完成了安全审计的核心功能。在本项目中主要实现了在线日志采集和离线日志显示。在线日志通过访问者的SessionID可以得到用户访问的序列,而离线日志则会利用Filter过滤器组件或者数据库层触发器,存储审计日志于数据库中。
审计事件日志:审计事件日志采用数据库存储,重要包括用户的访问日志,如会话标识符、用户名、IP地址、资源URL等主要信息,以供审计使用。
安全审计报告:安全审计模块要为管理员提供各种查询统计的接口,以做到有效的追踪,对具体操作的有据可考。具体包括:对各类别日志的自定义模糊查询、提取高频率信息流、对大量访问日志的挖掘分析、对海量日志的转储方案等。
同时,日志作为安全审计系统得到的核心数据,考虑其安全性也是十分必要的,方案中通过数据库系统设置和文件过滤器的配合,来控制对日志物理文件的访问,以确保日志文件不被非授权访问和篡改。
3.2 管道过滤器体系的实现
在安全审计模型中,我们充分利用了管道过滤器体系结构。通过这种方式,可以配置完整的过滤器链,对应用系统的访问进行有效安全控制、过滤和审计事件采集。下面的配置文件说明了如何通过应用服务器来对应用系统资源进行过滤器配置:
<filter>
<filter-name>RefreshFilter</filter-name>
<description>恶意刷新过滤器</description>
<filter-class>cn.gov.bjmi.filter.RefreshFilter </filter-class>
</filter>
<filter>
<filter-name>IpFilter</filter-name>
<description>危险IP过滤器</description>
<filter-class>cn.gov.bjmi.filter.IpFilter</filter-class>
</filter>
3.3 过滤器的具体实现
上节讲述了如何来构建过滤体系,接下来我们来看看如何具体实现一个Filter。笔者使用的开发环境是Netbeans 5.0,它可以方便使用图形化界面来对web.xml进行配置,从而可以在其内方便地配置过滤器体系结构,避免了手工配置的错误。下面我们来看看如何实现上节提到的IP过滤器,来过滤危险IP,并同时获取非受限用户的访问记录。
public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = null;
HttpServletResponse res = null;
if(request instanceof HttpServletRequest && response instanceof HttpServletResponse) {
req = (HttpServletRequest)request;
res = (HttpServletResponse)response;
}
//获取客户端IP
String remoteAddr = request.getRemoteAddr();
if(!req.getRequestURI().toUpperCase().equals("ERR.JSP")) {
IP ipControl = new IP();//这里是我们定义的IP类
try {
if((remoteAddr != null )&&(ipControl.IsRestricted(remoteAddr))) {
res.sendRedirect("/err.jsp?errmsg=ip");
}
} catch (IOException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
chain.doFilter(request, response);//过滤器链传递
}
我们只需要在定义一个类的时候,使用 implements Filter让该类实现Filter接口即可,就可以在doFilter方法内实现自己的逻辑控制,它就像client和server之间的一道防火墙,你可以在请求到达服务器之前进行对客户端请求的定制响应,或者进行自定义的业务逻辑,是Java Web开发领域一项常用的技术。
4 结论
我们在实际项目中的电子政务系统提出了良好的安全审计模型,通过过滤器体系获取了格式良好、可利用性高的日志记录,并充分、深入地进行了统计分析和挖掘,为发现系统漏洞和提高系统性能提供了良好的数据支持,并为网络犯罪行为的事后调查取证提供了证据。