分类 技术 Technology 下的文章

SQL Server 2000 属于 SQL Server 家族的早期版本,存在较多缺陷。即便 SP4 补丁集可以缓解这个问题,但在安装过程中依然会经常感冒。比较经典的一个问题就是“以前的某个程序安装已在计算机上创建挂起的文件操作,运行安装程序之前必须重新启动计算机”:

随着 SQL Server 2005 的逐步普及、2008 释出 CTP,2000 早已成为了昨日黄花。但很多企业应用依旧部署着低版本的 SQL Server。今天在一台服务器上全新安装 SQL Server 2000,遇到一个“安装程序配置服务器失败”的问题。具体表现为安装程序在复制文件阶段一切顺利,到配置服务器阶段时出现“安装程序配置服务器失败。参考服务器错误日志和 C:\WINDOWS\sqlstp.log 了解更多信息”的提示:

对于这个问题的解决办法,网上有很多说法。我前后折腾了几次,发现这个问题一般只发生在数据文件存储路径被定义在与 SQL Server 程序文件不同目录的时候。所以我们可以这样来折腾:

1、重启服务器。若问题依旧请继续往下;
2、删除 C:\Program Files\Microsoft SQL Server\MSSQL 目录。若问题依旧请继续往下;
3、做好重要数据文件的备份,然后删除安装时定义的数据文件存储目录下的 MSSQL 目录,如 D:\Database\MSSQL。若问题依旧请继续往下;
4、打开 regedit,删除与 MSSQL 有关的数据。若问题依旧请继续往下;
5、将计算机名改为大写。若问题依旧请继续往下;
6、继续 Google,尝试不同解决方式。若问题依旧请继续往下;
7、寻求微软技术支持。若问题依旧请立即离开您的服务器,走出室内,走到一片较为空旷的地方,抬头向上发出由衷的呼唤:“上帝啊,您真神奇”。然后闭幕作祷告状,以诚挚的心感动上帝,愿真主保佑您,真主就在我们身边。

近日准备对公司网络实施活动目录管理,域控制器也是一台提供远程桌面服务的服务器。今天发现原先隶属于计算机 Users 组的用户无法通过客户端建立远程桌面连接,服务器提示:要登录到这台远程计算机,您必须被授予允许通过终端服务登录的权限。默认地,“远程桌面用户”组的成员拥有该权限。如果您不是“远程桌面用户”组或其它拥有该权限的组的成员,或者如果“远程桌面用户”组没有该权限,您必须手动授予这些权限。

如下图所示:

解决办法如下:
1、打开“管理工具”中的“终端服务配置”,选择“连接”,在右边找到连接项(如:RDP-Tcp、tcp、Microsoft RDP 5.2)。如下图所示:

2、双击要修改的连接项,选择“权限”选项卡。如下图所示:

- 阅读剩余部分 -

春节是一个容易让大部分国人变得懒惰的节日。每天好吃好喝之后就犯困,要么睡大觉,要么 KTV、泡吧……总之就是应了一句话:“饱暖思淫欲”。在这样一个节日里,我也明显感受到了生活的无趣。我不是工作狂,但我一直坚信工作、生活密不可分,缺一不可。这几天彻底闲下来,直接导致我的反应能力下降;随之而来的是慵懒,懒得出门、懒得走路、懒得打电话拜年,甚至懒得吃饭、懒得睡觉。

为了避免大脑生锈,这里顺便分析一下“懒得出门”这样的短语,用 lucky说就是“咬文嚼字”。“懒得出门”这个短语最容易产生歧义的地方就是这个“得”字,因为“得”有很多种意思。《南史·陶潜传》中有云“开郑有得,便欣然忘食。”这里的“得”作名词,有“收获、心得”之意。而《史记·项羽本纪》中“君为我呼入,吾得兄事之。”这里的“得”是副词,有“必须、应该”的意思。在某些语境中,“得”还通假“德”;如《荀子》中所述“尚得推贤不失序。”此外,“得”还可以作动词,解释成“得到、获得”。而这里的“得”用在形容词“懒”的后面,连接表示程度或结果的补语“出门”,基本上算一个连接助词。“懒得出门”与“红的发紫”表意不同,前者表示懒惰到不想出门,而不是懒惰到我出门了;后者表示很红,以致于快发紫了。

我终于意识到,在我写下如此知音的标题后,眼看前面又说了这么多废话,几乎快赶上标题党了。马上开始正文。

由于一直懒得出门,所以对于电信的催缴话费的电话通知也置若罔闻。今天白天在睡梦中被这样一个电话活生生吵醒,非常郁闷:眼看青蛙已经变成了王子,正要去吻沉睡的公主,就突然没了下文。不知道公主是苏醒了过来,还是突然变成了青蛙。为了避免以后再发生此类事情,我给 10 的 4 次方去了电话,咨询能否网上支付固话账单。对方的回复是这样的:“尊敬的中国电信用户,您咨询的缴费方式目前暂未开通。您可以选择去您当地就近的营业厅办理缴费或其他业务。给您带来不便,我们深表歉意。中国电信感谢您的理解、关心与支持,祝您新春愉快、万事如意。您若还有其他疑问,欢迎您随时致电中国电信客服一万号,我们将随时恭候您的垂询。再见。”我总结了一下,两个字:不行。

随后我在搜索引擎的结果中找到一个“中国电信网上客服中心”,然后又看到各地的分站。为了确认他的权威性,我找到这个域名的 whois 记录。不出意外的话,这是官方的“网上客服中心”了,不知道电信为何没有人去宣传,甚至有工作人员对此一无所知。

我根据页面上的提示,用电话号码注册了一个帐号,登录后开始寻找为固话交费的地方。在“自助服务”下面,我找到了“话费查询”,然后终于看到“缴费”字眼了:

点击“缴费”按钮居然来到另外一个 URL:http://www.114mall.cn/ctpay/。这让我感觉到一点发现新大陆似的好奇。初步测试了一下,这个地址不能直接访问,否则会提示“参数错误”。由于 URL 后面很干净,看样子数据是 POST 过去的。如果提交的数据正确,这时页面上会显示待缴电话账户的欠费情况。我把欠款结清之后再次看到这个页面,发现是这样的:

我回到“自助服务”,发现左侧栏目中有一项“充值缴费”,试着点击了一下:

填上自家电话号码,提交:

我想了一想,如果填写的是别人的电话号码呢?我试了一下,结果非常骇人:

看来中国电信的业务透明度实在已经达到了一个非常的境界,连自家公司的电话费用都可以查到,而且户主姓名也很精确:

对于小灵通也基本一样,但查询不到号码的户主姓名:

我隐约觉得,这个功能一定是中国电信所有业务中最好、最强大的一个业务。他似乎不仅能查全国(因为查询地区可以切换)的电信固定电话与小灵通账单,还能查到固话号码所对应的户主。简直就是免费的 114,堪比您的私家侦探。且该业务目前处于免费试用期,欢迎广大新老朋友试用:)

YY 广告了一把。

事后我发现在那个叫做“百事通商城”的网站上注册一个帐号,同样也能查询到上述信息:

登录后点击左侧“固话缴费”按钮可以查询到“各种”固话账单,点击“小灵通充值”按钮可以查询到“各种”小灵通余额或欠费信息:

固定电话查询:

小灵通查询:

于是,从现在开始起,我从心底里真心佩服中国电信;无论是他那优质的服务,还是他那无畏的胆量。根据我的主观分析,固话账单也好、小灵通余额也好,都是客户的隐私信息。每一个电信业务,都意味着中国电信以甲方身份与客户签有协约。所谓“言者无意、听者有心”,泄露客户资料对中电信这样的国家级企业来说一定无所谓;但对于最终用户来说,可能有时候就会造成很大的影响。而这一切祸水的来源,都是这个 114mall.cn 的网站。在好奇心的驱使下,我查看了这个域名的 whois 信息,结果又惊讶了一回……

又是一个不眠之夜,写点东西好了。

上个月托管在某电信机房的服务器遭受ARP 欺骗,虽然不是我的服务器中毒,但还是受到了一定程度的影响。事后我认识到双向绑定的重要性,于是和机房联系做了双绑。

对于双向绑定,我的理解是在下级客户端与上级网关上分别知道自己与对方的 IP 及其 MAC 地址,并且这是一个静态的关系。ARP 协议中,默认的关系是 dynamic,而且这与使用 DHCP 与否没有关系。我们来做个实验:

C:\>arp -a
Interface: 192.168.0.201 --- 0x10003
  Internet Address      Physical Address      Type
  192.168.0.1           00-14-78-99-3d-a9     dynamic
  192.168.0.50          00-0b-2f-10-12-ab     dynamic
C:\>arp -d
C:\>arp -s 192.168.0.1 00-14-78-99-3d-a9
C:\>arp -a
Interface: 192.168.0.201 --- 0x10003
  Internet Address      Physical Address      Type
  192.168.0.1           00-14-78-99-3d-a9     static
  192.168.0.50          00-0b-2f-10-12-ab     dynamic
这个例子已经说明了问题。绑定后的状态一直都是 static,直到系统下次重启。

如果服务器处于双线机房,或者由于其他原因,具有一个以上的 IP 地址,其操作方式雷同。我的服务器上有两个 IP 地址,arp -a 后的结果是这样的:

C:\>arp -a
Interface: 60.12.104.24 --- 0x10003
  Internet Address      Physical Address      Type
  60.12.104.1           00-11-bb-3e-62-3f     dynamic
  122.225.96.1          00-11-bb-3e-62-3f     dynamic
我设计了以下的脚本。将它放入计划任务,并设置为每次系统启动时启动该脚本,配合机房在网关设备上对该服务器 IP 与其 MAC 地址的绑定,就可以使 Windows 操作系统的服务器具备防止 ARP 欺骗的能力:

@echo off
arp -d
arp -s 122.225.96.1 00-11-bb-3e-62-3f
arp -s 60.12.104.1 00-11-bb-3e-62-3f
exit
对于类 Unix 操作系统的操作也基本相似。首先通过 arp -a 获取当前信息:

#arp -a
? (60.12.104.1) at 00:11:bb:3e:62:3f on em0 [ethernet]
? (60.12.104.31) at 00:0e:0c:3c:7d:ba on em0 permanent [ethernet]
? (122.225.96.1) at 00:11:bb:3e:62:3f on em0 [ethernet]
nstech (122.225.96.31) at 00:0e:0c:3c:7d:ba on em0 permanent [ethernet]
然后执行单向绑定,注意类 Unix 系统下对 MAC 地址的书写方式:

#arp -s 122.225.96.1 00:11:bb:3e:62:3f
#arp -s 60.12.104.1 00:11:bb:3e:62:3f
服务器上操作完成后,要求机房在网关设备上对该服务器 IP 与其 MAC 地址的绑定,就实现了传说中的双向绑定。

如果服务器当前正在遭受 ARP 欺骗攻击,在机房没有对中毒服务器实施断网处理前,我们只能每隔一段时间就执行一下上面的操作。为了方便起见,我们可以这样做:

#vi /etc/ipmac 将需要做绑定的网关 IP 与其 MAC 地址写入这个文件。每行一个,中间用空格隔开:

122.225.96.1 00:11:bb:3e:62:3f
60.12.104.1 00:11:bb:3e:62:3f
然后:

#crontab -e 添加一行:

*/1 * * * * /usr/sbin/arp -f /etc/ipmac 这里的“*/1”代表每隔 1 分钟执行一次,可以根据实际情况调整。和平时期,我一般设置为 10 分钟执行一次:

* */6 * * * /usr/sbin/arp -f /etc/ipmac 战争时期就设置为 5 秒执行一次:

*/12 * * * * /usr/sbin/arp -f /etc/ipmac 对于 Windows 操作系统,只要重新设置一下计划任务的属性,让它每隔一段时间执行一下脚本就可以了。

咳咳,综上所述,这个解决方案是一个临时性解决方案,比较适用于非战时的防御。如果真的遭遇 ARP 欺骗攻击,第一件事还是通过 arp -a 找到源头,然后将信息报告给机房,让机房尽快将中毒的机器断网才是上策。

听说 FreeBSD 系统下面有一个软件叫做“ipguard”,可以有效防御 ARP 欺骗。有空研究一下。

今天看到 US-Cert 上面的一篇近期更新的文章,说的是跨站攻击。

如果一台 Web Server 支持 Trace 和 / 或 Track 方式,那么它一定存在跨站脚本漏洞,将有可能受到跨站攻击。 Trace 和 Track 是用来调试 Web 服务器连接的 HTTP 方式。

我们通常在描述各种浏览器缺陷的时候,把“Cross-Site-Tracing”(跨站攻击)简称为 XST。

攻击者可以利用此漏洞欺骗合法用户并得到他们的私人信息。

解决方案:禁用 Trace 和 / 或 Track 方式。

针对 Apache,可以借助 mod_rewrite 模块来禁止 HTTP Trace 请求。只要在各虚拟主机的配置文件里添加如下语句:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
补充其他 Web Server 的解决方案:

1、Microsoft IIS

使用 URLScan 工具禁用 HTTP Trace 请求,或者只开放满足站点需求和策略的方式。

2、Sun ONE Web Server releases 6.0 SP2 或者更高的版本:

在 obj.conf 文件的默认 object section 里添加下面的语句:

<Client method="TRACE">
AuthTrans fn="set-variable"
remove-headers="transfer-encoding"
set-headers="content-length: -1"
error="501"
</Client>
3、Sun ONE Web Server releases 6.0 SP2 或者更低的版本:

编译如下地址的 NSAPI 插件:
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603

更多信息可以查看以下资料:
http://www.whitehatsec.com/press_releases/WH-PR-20030120.pdf
http://archives.neohapsis.com/archives/vulnwatch/2003-q1/0035.html
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603
http://www.kb.cert.org/vuls/id/867593