我和另外3个同事在L市出差调研一个项目,调研快结束时,我们公司在L市的另一个客户打电话过来,说服务器进不去了,不明就里,于是赶到了现场。经过一番查看后,原来是服务器挂在公网上,自带的防火墙没有开,而且服务器上也没有装其它防火墙和杀毒监控软件。这样,服务器便成了肉鸡,系统下被放置了n个木马,系统用户也被创建了n个。通过一番折腾,勉强进入了windows,客户这时候脸色情转多云。以为大功告成,这时候代理商自告奋勇装上趋势防火墙。客户那里的网管又删掉了几个被创建的用户。重启完毕,结果进程里还是有木马程序,发现很多服务无法启动,自然很多功能无法使用,连复制粘贴功能也用不起来,这时候客户的脸色又晴转多云了。
服务器上是项目管理系统,是由WSS2.0扩展定制的门户项目管理系统。此系统里面有大量的文档,资料。对于客户很重要。之前Active Directory也没有备份过,因此能否恢复成功,还是个未知数。我分析了一下,AD账户的问题,可以从WSS的内容数据库的用户表里导出。剩下的关联再慢慢调整。
于是我的同事重做了操作系统,等装完系统我过去一看,机器名和原来的机器名不同,域名也跟原来的域名不同,这不是存心给我恢复系统增加难度嘛。没办法,硬着头皮上。
第一步,先还原sharepoint的内容数据库和配置数据库, 配置数据库包括服务器的全部全局设置,而内容数据库包括所有的站点内容,如列表项和文档等。于是我根据现有的配置数据库创建了sharepoint管理中心,下一步就是根据现有的内容数据库进行还原了,在虚拟服务器扩展里我选择了对已有的数据库进行扩展,显然根据原来的数据库读出来的配置是旧的连接,主机名,用户名,密码。主机名不同,当然无法连接内容数据库。于是我用Sql Server事件探查器监视了一下页面执行时调用的sql语句,发现使用的是配置数据库表里的servername,更改为现在的主机名,到sharepoint页面上执行扩展,直接报错。看来此路不通。不管了,直接改主机名,重启,再进行扩展,打开页面,使用Administrator登录,成功。只是少了几个定制的图片,到C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\Images下添加图片,显示OK。
第二步,只有系统管理员账户能够登录,其它的仍然不行。三四百个用户,添加不是闹着玩的,于是拿出了我以前写的一个导入AD账户已经创建Exchange邮箱的小程序,导入完毕,替换UserInfo里的所有账户名(将域名改成现有域名),再次使用普通账户登录,还是不行,再回到UserInfo表,注意到有一个td_SystemID字段,很可能sharepoint使用td_SystemID这个字段的GUID作为标识进行登录的,那么这个标识怎么生成的呢,原来是使用SUSER_SID
()
函数生成的,
UPDATE UserInfo SET tp_systemid = suser_sid(tp_login).
再次登录,成功!
这个故事再一次证明了系统安全的重要性,服务器密码要有一定的复杂性,定期更换。服务器一定要安装防火墙等等。
AD及Exchange邮箱导入