近日因为工作需要,准备测试虚拟化平台以便在行业内推广使用,在收集一些资料和聆听Citrix公司人员介绍之后对VMWare、Citrix、Microsoft公司的三个产品VI、XenServer、HyperV做了一个比较,具体比较文档在http://spreadsheets.google.com/ccc?key=pFJmhg0jNxG-730Ygr-dWLQ,可以看出,其实Microsoft公司的HyperV真的是一个不错的选择,HyperV本身只需要28美元,就200人民币左右。即使购买全套的管理工具,每个单台实体服务器投入也比Citrix少,更不用说昂贵的VMWare。而且XenServer和HyperV属于同源产品,优先选择测试HyperV吧。
两网隔离情况下非法连接外网的检测
现在一些单位为了避免资料泄露,都实行了隔离外网的措施,但是这样的单位往往分支机构比较多,很难保证所有的下级分支机构不会自己接入光纤、开通ADSL,实际上造成了内网、外网两网隔离工作的失败。这里提出一个在两网隔离情况下非法连接外网的检测方法,这个也是一个08年工作内容之一的总结。
首先,我们需要向所有用户工作用机部署一个常态运行的软件,可以是桌面管理程序,也可以是其他均需要有的程序,我们在这个程序的基础上做一定的开发工作。
业务流程图如下:
首先在某个应用MIS中完成对部门、人员、IP段是否可以连通互联网的权限进行设置,有连通互联网权限的终端可以不做外网连接检测,相当于设置外网连接检测的免检名单。
根据设置的连接外网检测权限和系统设置的本地Web应用URL前缀、外连检测URL、外联检测程序尝试使用路由检测、IE历史记录检测、maxthon历史记录检测、Firefox历史记录检测、代理上网检测、其他常用网络软件检测等手段检测桌面终端和外网连通情况。这种方式避免传统靠检测附加硬件设备(判断是否存在Modem等)判定的方式的局限性,更为通用和有效。
路由检测法:尝试路由到指定IP,并获取返回的路由结果。判定给定网关前缀是否在路由链中,如果在则说明通过路由检测,否则说明存在连接外网行为。
IE历史记录检测:通过编程实现获取IE的浏览页面历史记录,并剔除URL前缀符合管理员设置的本地web应用URL(自动剔除file://开头的本地文件URL),形成桌面终端用户访问网页历史记录,判定用户是否访问外网。
Firefox历史记录检测:探测firefox路径,通过编程实现获取Firefox的浏览页面历史记录,并剔除URL前缀符合管理员设置的本地web应用URL(自动剔除file://开头的本地文件URL),形成桌面终端用户访问网页历史记录,判定用户是否访问外网。Firefox 的url历史记录,可参考firefox源代码或者处理local data 目录下\Mozilla\Firefox\Profiles\******.default\Cache下的文件。另外,在firefox下访问about:cache可以看到url访问历史记录。
直连及代理上网检测:在系统设定的外连检测url中挑选3~5条作为检测项。直接使用socket连接这些检测项的URL,如果能够正常返回数据,在检测返回的数据中是否包含检测项中指定的检测字符串,如果包含则说明该桌面终端连接到外网,如果连接URL是socket出现错误,则判定不能连接外网。读取注册表(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\)中的ProxyEnable项,如果值为0或读取失败,则判定不能连接外网,如果值为非0值,读取ProxyServer的值,依次使用该值提供的代理设置,尝试使用代理连接这些检测项的URL,如果能够正常返回数据,在检测返回的数据中是否包含检测项中指定的检测字符串,如果包含则说明该桌面终端连接到外网,如果连接URL是socket出现错误,则判定不能连接外网。
其他常用网络软件检测:根据系统设定的外连检测程序,在系统的进程列表中检测是否存在管理员指定的进程,如果存在则判定连接外网。
其中每个检测所需要的参数均需要通过管理控制台来设置,在检测到有外网连接的时候,可以通过网管工具或者其他手段自动断开内网或者告警。
获取IE访问历史记录参考代码如下:
//Powered by fOx,转载请保留作者信息 : Email Destiny-fOx@hotmail.com void GetUrlHistoryMethod2() { HANDLE hFind = NULL; DWORD dwSize = NULL; hFind = ::FindFirstUrlCacheEntryA("visited:",NULL,&dwSize); HANDLE hHeap = ::HeapCreate(NULL,0x100,0x10000000); LPINTERNET_CACHE_ENTRY_INFOA pInfo = (LPINTERNET_CACHE_ENTRY_INFOA)::HeapAlloc(hHeap,LPTR,dwSize); hFind = ::FindFirstUrlCacheEntryA("visited:",pInfo,&dwSize); if(hFind) { int n = 0; while(pInfo != NULL) { /* typedef struct _INTERNET_CACHE_ENTRY_INFOA { DWORD dwStructSize; // version of cache system.0 LPSTR lpszSourceUrlName; // embedded pointer to the URL name string.4 LPSTR lpszLocalFileName; // embedded pointer to the local file name.8 DWORD CacheEntryType; // cache type bit mask.C DWORD dwUseCount; // current users count of the cache entry.10 DWORD dwHitRate; // num of times the cache entry was retrieved. DWORD dwSizeLow; // low DWORD of the file size. DWORD dwSizeHigh; // high DWORD of the file size. FILETIME LastModifiedTime; // last modified time of the file in GMT format. FILETIME ExpireTime; // expire time of the file in GMT format FILETIME LastAccessTime; // last accessed time in GMT format FILETIME LastSyncTime; // last time the URL was synchronized // with the source LPSTR lpHeaderInfo; // embedded pointer to the header info. DWORD dwHeaderInfoSize; // size of the above header. LPSTR lpszFileExtension; // File extension used to retrive the urldata as a file. union { // Exemption delta from last access time. DWORD dwReserved; DWORD dwExemptDelta; }; // Exemption delta from last access } INTERNET_CACHE_ENTRY_INFOA, * LPINTERNET_CACHE_ENTRY_INFOA; */ LPBYTE p = (LPBYTE)(pInfo->lpHeaderInfo); p += *(PWORD)p; if(p != NULL) if(p[2] != 0x10) p = NULL; else { if(p[3] == 0x1F) p += 4; else p = NULL; } printf("[%d] SourceUrlName : %s ,LocalFileName : %s Title : %S \r\n" ,n,pInfo->lpszSourceUrlName,pInfo->lpszLocalFileName,p); n++; pInfo = NULL; dwSize = 1000; pInfo = (LPINTERNET_CACHE_ENTRY_INFOA)::HeapAlloc(hHeap,LPTR,dwSize); if(pInfo == NULL) { DWORD dwError = ::GetLastError(); printf("HeapAlloc Error : %d\r\n",dwError); } BOOL bSus = ::FindNextUrlCacheEntryA(hFind,pInfo,&dwSize); if(bSus == FALSE) { pInfo = NULL; DWORD dwError = ::GetLastError(); printf("Error : %d\r\n",dwError); } } ::FindCloseUrlCache(hFind); ::HeapDestroy(hHeap); } }
网线布线与Vista
部门搬迁到新办公地点办公,室内网络也是新布线的。办公室里面就我一个人用Vista,结果出现了一个非常奇怪的现象:把网线和笔记本连接之后,是不是会出现不能正常连接的情况,网络连接里面显示“网络线缆被拔出”,过完年之后就一直这样,郁闷坏了。
用测线仪检测,再插上网线,又好了,过一会儿又不行了,如此反复,排查了操作系统、防火墙等等,终于发现问题出现在网线布线上。
大家知道,网线8根线中有两根接地线,这两根可以当作电话的音频线一起部署在信息点,这样部署后计算机会显示出10M网络,布线人员常常用这个方法来减少布线量。问题就出在这里,更改这两根接地线用途之后,故障消失。
非常奇怪的是这种常见的网线布线方式在Win98、Win2k/2k3、WinXP下都没有问题,独独在我的Vista下面出现问题,不知道是不是所有的Vista都有这个问题。如果也这样不放试试看不要一线多用。
专题推荐
标签
分类目录
- Apple (3)
- dotNet (4)
- IT服务 (3)
- JAVA (2)
- linux (2)
- Oracle (1)
- Web应用 (38)
- 工作 (5)
- 生活叫吠 (28)
- 电力相关 (3)
- 智能电网 (1)
- 系统应用 (3)
- 网站管理 (7)
- 读书 (4)
- 软件应用 (21)
新浪微博
存档
最近文章
- 分享某公司负责IT运维的部门工作量统计文档和技术人员考核文档
- VMWare 中虚拟机报错“eth0 设备的 MAC 地址与预想的不符,忽略。”解决办法
- PayDollar支付通道开发介绍及ECShop开发PayDollar注意事项
- 科技项目“主要技术经济指标”的编写
- 解决PowerPoint 中输入中文时反应慢的问题
- 交通银行网银报错“E00001:密文参数传递丢失,请重试”解决办法
- PayPal不使用人民币自动购汇设置方法
- 理想中的IEC 61850应用开发API
- Drupal6中启用文章内容多语言支持的方法
- 域名更换为xuplus.com
近期评论
- iTouch 在 原来苹果iOS也要维护呀,升级后也需要删除旧文件 上的评论
- Dominic 在 Xoops中获取模块配置参数的方法。 上的评论
- 小艾 在 Excel 2007:双击Excel文件打不开提示找不到文件解决办法 上的评论
- Anco 在 GMail 不能用Outlook发信了吗?原来是换端口了。新端口是587 上的评论
- Dominic 在 PHPMailer类发送中文邮件兼谈解决XOOPS中文发送邮件乱码 上的评论
- 我途求职 在 PHPMailer类发送中文邮件兼谈解决XOOPS中文发送邮件乱码 上的评论
- 我途求职 在 PHPMailer类发送中文邮件兼谈解决XOOPS中文发送邮件乱码 上的评论
- Dominic 在 清除MyEclipse升级之后的残留文件 上的评论
- 小弟五体投地 在 清除MyEclipse升级之后的残留文件 上的评论
- OneCMDB中文 在 不可用CI报告与配置变更申请 上的评论

Dominic