译作上架 -《信息安全实施指南》

2005 年最后一天了,基本上没什么大事,全是整理今年的一些文档资料和未竟事宜。

翻译的新书终于上架了,这是一本针对 CEO 和 CSO 的安全指南,主要介绍了在公司内实施信息安全的方法论、人员/过程/技术及信息安全路线图等内容。

原书名“The Executive Guide To Information Security”,翻译为《信息安全实施指南》已有点不能反映本意,结果出版社又在前面加了一句很不专业的“没有任何漏洞”,预计会遭到不少专业人士的批评,无论如何,该书对于一些在企业做安全管理的人员来说,还是值得一看的,尤其有用的是方法论及书本中一些可以实际应用的评估模板。

主目录如下:


前言
第1章 信息安全挑战
第2章 信息安全概述
第3章 制定信息安全计划
第4章 人员
第5章 过程
第6章 技术
第7章 信息安全路线图
第8章 展望未来
第9章 总结
附录A 安全评估框架
附录B 信息安全网站
附录C 可用的安全标准
附录D 安全职位界定的范例

新的一年要开始了,已经和几位在 Blog 上留言的人差不多组织好了,准备翻译这本 NIST 专家的 “Role Based Access Control”(《基于角色的访问控制》),主要目的是 Learning by Doing ,呵呵。

查看《信息安全实施指南》图书信息

注意 Thumbs.db 带来的安全风险

提起 Thumbs.db 这个文件,大家一定不陌生,它就是 Windows XP/2003 为了提高文件夹在缩略图查看方式下的响应速度而对当前文件夹下的图像文件建立的缓存,这个文件本身并无大碍,因为本身是“系统文件+隐藏文件”,平常也是不显示的。

最近我却偶然发现,在有些情况下,它确能能给 Web 站点带来一定的安全风险。

如果一位 Web 站点创作者在 Windows 文件夹选项中设置显示系统文件和隐藏文件,他在制作网站的过程中制作或搜集了大量图片到某一目录,并以缩略图的方式预览过此目录,然后他在上传整个目录或所有文件到服务器的时候,就无意中把这个 Thumbs.db 也给传了上去,正是因为我在好几个网站上都看到这样的文件,所以才想到上述过程。

因为有工具可以查看 Thumbs.db 的内容,甚至导出其中的图像,这样上述操作带来的后果是什么呢? 它相当于你开启了此目录的浏览权限,因为用户可以通过 Thumbs.db 得到此文件夹中的所有文件名及缩略内容,然后可以以此来下载此目录下的所有图像文件,最坏的情况是让别人发现这缩略图中还有不健康内容 …

有时候这不是什么问题,但有些情况下,这种情况也可能会给你带来很大的麻烦。

我已经在不少网站上发现了这个 Thumbs.db 文件,我机器上安装的 Tomcat 5.5 和 Apache 上测试,都可以下载,但幸好,IIS 6.0 默认是不让下载此文件的。

查看:编程-从Thumbs.db中导出缩略图   Thumbs.db 浏览器

QuickStart: Tomcat 集群配置

网络上有好多关于 Tomcat 集群配置的文章,但有些是以 Tomcat 4 为基础的,有的并不是讲的很清楚,自己摸索了半天,试验成功了,现把简要过程写出来,让你在几分钟内体验一下 Tomcat Cluster 。

一、配置环境

  • 下载和安装 JRE 1.5 最新版 (1.5.06)
  • 下载和安装 Tomcat 最新版 (5.5.12),假定安装目录为 C:\Program Files\Apache Software Foundation\Tomcat 5.5

二、使 Tomcat 集群配置生效

  •  修改 Tomcat 安装目录\conf\server.xml ,把 Server/Service/Engine/Host 下的 Cluster 结点前后的注释符(<!– 和 –>)删除,并保存

三、配置第二个 Tomcat 实例

  • 在 C:\Program Files\Apache Software Foundation\ 下新建目录 Tomcat 5.5 Instance1
  • 将 C:\Program Files\Apache Software Foundation\Tomcat 5.5 目录下的全部内容复制到 C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1
  • 修改新实例的服务器配置文件 (C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\server.xml),把其中的 Server/Service/Connector 的端口更改,以避免和第一个冲突(8080 -> 9080,8009 -> 9009,8443 -> 9443)
  • 修改 Cluster/Receiver 结点的 tcpListenPort 端口(此端口用于 Session 复制),以避免和第一个冲突(4001 -> 4002)

注:Tomcat Cluster 默认使用多播来建立成员关系,即两个实例的多播的地址和端口一样,就可以互相认为是同一个 Cluster 的成员。

四、启动验证两个 Tomcat 实例能否正常工作

  •  直接用程序菜单里的 Monitor Tomcat 来启动第一个实例(或在服务器里启动)
  • 第二个实例启动稍微麻烦一些,在 C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\Bin 下建一个 startup.bat ,用如下 java 命令来启动:

“C:\Program Files\Java\j实re1.5.0_06\bin\java.exe” -jar .\bootstrap.jar -Dcatalina.home=”C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1″ –Dcatalina.base=”C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1″ -Djava.endorsed.dirs=”C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\endorsed” -Djava.io.tmpdir=”C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\temp” –Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=”C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\logging.properties” start

看起来挺长,其实主要是第二个实例的安装目录太长的缘故,直接执行此批处理就可以启动第二个实例,如果配置正确,应该可以看到集群管理器启动,并和第一个实例   建立成员关系的信息。

五、写一个简单Web应用,能显示和设置 Session 属性值,以供测试

  • 如果有开发工具,新建一个 Web App ,假设为 TomcatDemo 
  • 新增 index.jsp ,加入如下代码:
<%...@ page contentType="text/html; charset=UTF-8" import="java.util.*"%> <html><head><title>Cluster App Test</title></head> <body> Server Info: <%... out.print(request.getLocalAddr() + " : " + request.getLocalPort());%> <%... out.println("<br> ID " + session.getId()); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("<b>Session 列表</b>"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value); } %> <form action="index.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br> 值:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html>

以上代码主要是显示服务器信息和 Session 值,并包含一个 Form ,可以随时新建一个 Session 属性值

  • 修改此用应用的 Web.xml ,加入 distributable 属性,表示 Tomcat 要为此 Web 应用复制 Session    
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>TomcatDemo</display-name> <distributable/> </web-app>

  •  将应用打包成 WAR 文件,分别上现两个实例的 Tomcat Manager 来部署

 (如果没有 Java 开发工具,可以直接建立一个 TomcatDemo 的目录,用 Notepad 将如上的内容复制并保存成 index.jsp,然后在此目录下新建子目录 WEB-INF,再用 Notepad 新建一 Web.xml 文件,将上面的代码复制保存,然后将此目录压缩成 Zip 文件,再把后缀改成 .war ,或利用 jar 命令来创建 .war 文件)

六、测试 Tomcat 集群和 Session 复制的是否工作

  •  在 IE 中打开第一个实例中的 TomcatDemo (http://localhost:8080/TomcatDemo),在 Form 里随便设置一个 Session 属性,如 MyName = foo
  •  将 IE 地址栏中的地址修改为第二个实例中的 TomcatDemo(http://localhost:9080/TomcatDemo),刷新,就可以看到注意到 SessionID 不变, MyName 的属性值已有了
  •  同样,如果在第二实例中设置的值,在第一个实例的页面中也能看到

注意:必须在同一个 IE 窗口中进行如上测试,以保证是同一个 Session ,如果是两个窗口,则 Session 可能不同,也互相看不到 Session 复制的结果。

七、其它工作

  • 上述只实现了 Session 复制,而没有实现 Load Balance(负载均衡),这可以利用 Apache 等来实现,网上有很多相关文章,可能参考)

构想:利用 Office 2003 Document Imaging 来构建影像管理系统

在一些行业应用中,影像(有时称之为影像文档或信息影像)管理是一个比较重要的问题,如在保险行业应用中,各种保险单据的管理,如保险单、投保书等,在医疗卫生领域的病历管理等,在金融机构中的国际结算应用中,对于各种商业票据的管理等。

影像的应用虽然很广泛,但深入分析其中所涉及的具体的功能来,无非是以下几项:

  1. 录入(扫描、FAX、文档转化等)
  2. 查看/编辑(注释、插入图形/文本、高亮),如需要,补充必要的元数据信息
  3. 存储、存档/备份/恢复
  4. 处理(包括压缩、格式转换、增加水印、利用条形码来自动分类)
  5. 识别(OCR)
  6. 索引与查找(包括对识别的信息的索引和影像元数据的索引)
  7. 与应用系统的互操作(引发工作流)

目前市面也有很多相应产品,如 FileNet、Unisys等,但价格均不菲,注意到 Office 2003 中自带了 Document Imaging 和 Document Scanning 两个工具,于是考虑是否可以有效利用这两个东西来构造一个满足上述影像管理需求的系统。(以前博客堂大家也讨论过这个工具及文档格式等)

整个系统的实现构想如下:

  1. 建立影像存储服务器,可以为文件服务器或数据库,专门负责存储、存档/备份/恢复功能,复杂拓扑下可以实现 Windows DFS 的复制/缓存服务
  2. 建立影像应用服务器,可以基于 ASP.NET ,处理客户端对于影像的录入、查看/编辑、处理、识别、索引与查找及与应用系统的互操作,并对应用系统提供所有操作接口,使之即可做为独立的系统,也可与应用系统有效整合形成一体化解决方案
  3. 在应用程序端,直接使用 Office 2003 自带的 Document Imaging 和 Document Scanning ,或者利用 VBA 基于 Document Imaging 2003 Object Model 进行编程,再结合 Office Document Imaging 11.0 TypeLibrary 中包含的 MiDocView ActiveX 控件,给用户提供操作界面。

如果利用 Office 2003 自带的两个工具,则编辑和保存文档可能要利用 WebDAV 来使应用服务器可以访问影像文档,要不只能保存和编辑本机的文件。

为了证实构想,自己花了点时间用 Visual Basic 6.0 测试了一下 Object Model 和 MiDocView ,觉得上述构想基本上没有问题,一些细节实现没有过多考虑。

顺便做个广告,图中的示例文档为我最近刚完成翻译的一本书,名为“信息安全实施指南”,近期将由电子工业出版社出版

 

如何获取当前ASP.NET应用的认证模式

.NET 1.1里,

using System.Configuration;
using System.Web.Configuration;
using System.Reflection;

public AuthenticationMode GetAuthenticationMode()
{
 object auth = ConfigurationSettings.GetConfig(“system.web/authentication”);
 if (auth!= null)
 {
 //an internal class “System.Web.Configuration.AuthenticationConfig”
 Type t = auth.GetType();
 PropertyInfo pi = t.GetProperty(“Mode”,BindingFlags.Instance|BindingFlags.NonPublic);
 return (AuthenticationMode)pi.GetValue(auth,null);
  }

  return AuthenticationMode.None;
}

.NET 2.0里,

using System.Configuration;
using System.Web.Configuration;

public AuthenticationMode GetAuthenticationMode()
{
        Configuration config = WebConfigurationManager.OpenWebConfiguration(“~”);

        SystemWebSectionGroup swsg = (SystemWebSectionGroup)config.GetSectionGroup(“system.web”);

        AuthenticationSection auth = swsg.Authentication;
 return auth.Mode;
}

那些岁月,我们无路可退

呆在上海的酒店里面,穿着浴袍在写字台前面对着电脑发呆,而旁边的电视中播放着CNN频道直播的审讯萨达姆的鸟语。不过萨达姆对我来说太遥远,因为明天下午,我又要在发布大会上,使用自己那不标准的普通话,向听众讲述ASP.NET 2.0的新特性。但到现在Slides还没有完成。

有时候会突然有一种失落的感觉,脑袋中空空如也,但又似乎有万马奔腾。只不过无法用语言来描述下来。就像现在。

有时候也会有满足的感觉,曾经是年少无知爱做梦的少年,而今却可以意气风发的走向台前。就像明天。

更多的时候,则是坐在公共汽车上,与喵喵享受着一起上下班的甜蜜。喵喵曾经抱怨过,说我写过很多文字,但没有为她特意写过文字。于是有时候想为她写些什么,可是临到下笔时,却突然失去了灵感,顿生愧疚之心。喵喵,以后我会写好长好长的文字给你的,我保证。

激情而被蹉砣的岁月中,每次脑袋被惊醒的时候,总是赫然发现自己正在一架不知道飞往什么地方的飞机上。从去年10月转入DPE部门以来,在短短一年的时间内,开心的国航知音卡就已经累积了八万公里,还没有算上往返美国、新马泰的里程,以及南航、厦航、海航、上航、山航的积分。有同事戏言,来到了首都机场才感觉自己要上班了。而且在漫长的出差旅途中,越来越习惯在酒店中办公。一个人坐在电脑旁边,打开Outlook,每天处理一二百封邮件,接无数的电话,然后再写几个Slides。而真正的兴趣写代码却越来越淡忘了,为了演示方便,开心的Visual Studio中的字体始终设置为了20磅。

读自己过去的文字,遥想少年时的梦想,会发现自己真的已经实现了其中的一部分。但是却有很多的无奈在里面,梦想总是在实现的时候被扭曲了,就像哈哈镜中那些景象,相似但是别扭。

无路可退

慢慢的清醒后,再沉沉得入睡
好多年后,忘记了愁的滋味
意气风发其实只是勉强面对
有很多感悟没有时间去勾兑

勿勿的脚步,在梦中不停的追
光环之中无法区别啥错啥对
我的眼中,有你无法体会到的累
让美丽人生带着我们慢慢颓废

喜怒哀乐我们品尽人生百味
将这些思绪交给未来体会
好多年后,或者找到当初的美
生活不是包袱,太阳仍放光辉

他们说不累不累,我们要坚强面对
面对着家人,挺起我们的背
他们说再醉再醉,我们再干千杯
尽情的笑吧骂吧,因为已无路可退