在家输液的快感…

最近得出一个结论,人在输液的时候,如果头不晕的话,那一定很无聊:(

想来刚进网管会跟着小林子的时候,我还疯狂的从154上拖了很多很多的Ebook,当时资源真是丰富啊,不过自然结果仅仅限于收藏,和陈振同学目前的心境比较类似:)

闲来无事,又翻开原来拖的那一堆咚咚,有个题目比较嚣张《高质量C/C++编程指南》,只有101页,花了一个多小时看了一遍,感觉还是有所收获,至少学到一个名词—“野指针”,原来一直不知道怎么形容这种状况,但是对这个作者的写作语气很是不喜欢。

鉴于上次见识了陈鑫同学做的C语言作业题,感觉还是贴出来,反正比较短,一下就看完了( PS: 既然陈鑫同学也感冒了,还有幸传给了我,不如输输液,无聊的时候可以静静的看看书 🙂 )

另外,WEB/FTP+SSL好像必须要架设CA证书中心,而且好像可以在同一台机器上,感觉有点怪怪的…

(2005-06-04 17:12:44) 徐峥
嗯,其实输液还是给你补充水分的,只要你哪天晚上大汗一场就好了

关于Gmail怨念的附件下载

在Gmail下载了马莞迪的一个附件,同时生成了两个文件,CAG6D4B.和CAG6D4B,改任意一个后缀为DOC后正常浏览,后删除二者,结果只删掉一个,还剩下了一个CAG6D4B.,说找不到文件…

于是怨念的旅程便开始了,先试了各种方法删除之:

在win下查看属性,隐藏和只读,分别改之,提示找不到文件

Dos下:

del /F /ARH ...提示找不到文件
Attrib -rh ...提示找不到文件
ren ... 提示找不到文件

现在意识到问题的严重性,而且听说季翔也不幸中招…..上网查资料,各大Blog,论坛很多地方有和我一样的问题,但是没有任何有用的回复(有人说安全模式下可以删除,结果小白的跑去试,当然不行,提示找不到文件)

接着采用原来屡试不爽的杀手锏:

del. file-pathfile-name... 提示找不到文件

当然再接下来就是国外的网站,因为感觉这些BT的咚咚老外老是厉害一点(应该不算崇洋媚外吧)结果发现根本没有这个问题的内容(后来才发现此问题大概只出现在Gmail处理中文附件的时候,所以老外大概没有机会碰上吧)

至此我已彻底无语,剩下的路不多了:

配ServU将路径指向桌面,然后用FTPRush删除之,提示成功,但没有删除

又发现国内某论坛有人对此有所深入探究,引用如下:

“我在同目录里(桌面)又建立了一个名叫“CAJUWNF5”的文件,名字一样但没有那个点儿。再删除原先那个“CAJUWNF5.”时,轻松成功。然而,新建立这个“CAJUWNF5”却删不掉了。现在它的文件名里没有了点,仍删不掉,也照样不能改名或移动。 ”

唉,他这个想法就比较BT,不过还是没有解决问题,但是倒让人很生疑惑,文中他还提到:

“更糟的是,我又重复了一次原先的操作(从gmail中保存附件),想看看是怎么回事。现在,我的桌面上有两块橡皮膏了。”(我也是这样…)

“毛病出在文件名末尾的“.”上。似乎这个点让NTFS在判别文件时产生了什么循环,以致找不到文件。要是FAT,碰到这种文件,用扇区读写工具(比如 debug)进入分区表,手工就能解决。不知NTFS有没有类似的办法。 ”(想来要是FAT,我也不会用debug改分区表…)

本来想就此打住,上各大论坛发帖询问,结果突然看见了任务栏上196的远程SecureCRT连接,想象要是在linux下用rm -rf说不定可以干掉,说干就干:

配共享,开防火墙(天网,Microsoft,IBM)终于在196上smbclient -L 202.115.22.*看到了桌面的共享,然后rm -rf …轻松干掉

有的时候还是感觉linux好阿

196 Apache UTF-8 Encoded URL Problem

[现象描述]

当你在IE的浏览器中输入URL地址的时候,IE会以UTF-8对其进行编码(除非在高级设置里面取消选项“总是以UTF-8发送URL”),由此,全面支持国际化语言。
但是对于一般配置的apache服务器,默认并不会支持UTF-8编码的URL,因此当你发送包含中文的URL(例如:http://***.***.***.***/音乐.***)时,会返回 404 Not Found 错误。
一般的解决方法是将发送URL请求中的中文采用URLEncode()进行转换,形成apache能够支持的URL格式(例如:http://***.***.***.***/%D2%F4%C0%D6.***),但是这样解决的问题是,如果下载的是mp3的话,下载链接中包含乱码,可能会导致某些播放器不能正确显示歌名,进而导致不能正确使用迷你歌词。
综上所述,最好的解决方案是使apache支持直接包含中文的URL。

[解决方法]

对于此问题,apache官方并没有发布相应的解决方案,但是在网上却于很早以前已经解决了此问题,方法是使用由第三方发布的一个转换模块,籍由apache提供的第三方模块安装工具apxs安装即可。(ps:其实此模块代码极少,就是做个转换:P,主要是同apache的接口结合比较麻烦)具体步骤描述如下:

1、首先要确保apache服务器在编译的时候安装了apxs,并且configure的时候采用了选项 –enable-so(apache 2.0)或者 –enable-module=so(apache 1.0) (请务必注意版本,如果写错,提示不容易发现,最终会导致没法编入模块)。
采用以上编译选项会使apache支持第三方插件。
另外,如果apche服务器是使用的安装系统时候自带的(以RedHat 9.0为例),则没有apxs这个软件,请先行安装apache-devel软件包,并且此软件包的版本务必与你apache服务器的版本一致。

2、下载并安装mod_utf8软件包(目前版本1.3)
注意选对apache1.*和apache2.*,然后执行:
apxs -a -i -c mod_utf8.c

3、重启apache服务器

当然实际操作过程中,可能会遇到各种各样的问题,因为这个软件包还并不是特别的完美,因此需要具备一定的排错能力,软件包由C语言书写,下载源代码,请点击这里

考试前,搞定一个问题—configure参数

大家都知道,Linux下用源码包安装软件,一般会用到./configure命令,其后经常跟很多参数,但是安装完后:
1、忘掉参数;
2、本身就不是你装的;
这下若想查出参数就够你受的了:(
虽然现在还没有想到什么解决的办法,不过今天在QQ上问了问小林子倒是有一个解决部分参数问题的办法,现总结如下:

参数限制

一般为查询是否加载某模块,本例为mod_so.c

方法

原来使用过文件倾印工具的会比较熟悉一点,(例如原来在borland的C++ Builder下的TDump)
实际上objdump就是Linux下的文件倾印工具

$objdump -T /path/httpd | grep so

080920a0 g DO .data 00000038 Base so_module

可见,–with-module-so

BTW

谁能告诉我196的apache是谁装的?我吗?你吗?实在记不得了,想问他/我几个问题!!!

绚色你的生活

# DO NOT EDIT THIS FILE! It was created by Ethereal
@[email protected] eq 80 or tcp.port eq 443@[22328,55704,24713][65083,65535,42083]
@[email protected] eq 53 or udp.port eq 53@[63477,65535,101][0,32767,0]
@Bad [email protected] or icmp@[0,0,0][57311,25186,25957]
@Microsoft@smb or nbns@[0,5080,65535][65535,65535,65535]
@IPX@ipx@[60652,0,1542][65535,65535,65535]
@DHCP@bootp@[39064,15934,40863][65535,65535,65535]
@Intel ANS probes@ans@[56173,56173,56173][0,0,0]
@Background Noise@stp or arp or eth.dst eq ff:ff:ff:ff:ff:ff@[65535,65535,65535][26214,26214,26214]
炫色1

# DO NOT EDIT THIS FILE! It was created by Ethereal
@httptcp@ tcp.srcport == 80 or tcp.dstport == 80@[38385,62683,65534][0,0,0]
@DNS@dns@[19194,65534,32100][0,0,0]
@ARP@arp@[65202,65533,24456][0,0,0]
@icmp@icmp@[65534,8609,6712][0,0,0]
@STP@stp@[65534,65534,65534][8262,42200,9408]
@[email protected] == 139 or tcp.dstport == 139 or tcp.srcport == 138 or tcp.dstport == 138 or tcp.srcport == 137 or tcp.dstport == 137 or udp.srcport == 139 or udp.dstport == 139 or udp.srcport == 138 or udp.dstport == 138 or udp.srcport == 137 or udp.dstport == 137@[7961,5947,65534][64045,65535,62556]
@smtp@ tcp.srcport == 25 or tcp.dstport == 25@[65534,10208,51170][62059,62059,62059]
@pop@ tcp.srcport == 110 or tcp.dstport == 110@[65534,7268,54440][0,0,0]
@nntp@nntp@[49886,47154,63549][992,992,992]
@snmp@snmp@[62556,52730,2142][7636,32644,64045]
@igmp@igmp@[45944,5999,65534][0,0,0]
@telnet@ tcp.srcport == 23 or tcp.dstport == 23@[9274,47661,3862][0,0,0]
@tftp@tftp@[59220,3637,65534][0,0,0]
@ftp@ftp@[62721,6393,65534][0,13490,65038]
@Q931@q931@[14275,65534,25039][0,0,0]
@rsvp@rsvp@[60324,7655,65534][63348,65535,9481]
@CMIP@ udp.srcport == 164 or udp.dstport == 164@[47957,9122,9122][60977,63600,0]
@tcp@tcp@[40555,49091,65534][0,0,0]
@udp@udp@[39040,49264,65534][64542,64542,64542]
炫色2

# DO NOT EDIT THIS FILE! It was created by Ethereal
@Linksys [email protected] contains 00:04:5A || eth.addr contains 00:06:25 || eth.addr contains 00:0C:41 || eth.addr contains 00:0F:66@[65535,50372,0][0,0,0]
@d-Link [email protected] contains 00:05:5D || eth.addr contains 00:0D:88 || eth.addr contains 00:0F:3D || eth.addr contains 00:00:50:BA || eth.addr contains 00:80:C8@[65535,50372,0][0,0,0]
@Netgear [email protected] contains 00:09:5B@[65535,50372,0][0,0,0]
@Unwanted Protocals@spx || ipx || aarp || aim@[65535,65535,65535][65535,0,0]
@SpanningTree Topology [email protected] == 0x80@[0,0,0][65535,63222,0]
@HSRP state change@ hsrp.state != 8 && hsrp.state != 16@[0,0,0][65535,63222,0]
@ospf state change@ ospf.msg != 1@[0,0,0][65535,63222,0]
@MS Master Browser [email protected]@[62965,63222,42148][65535,0,0]
@NW [email protected] || cdp || hsrp || vrrp || ospf || bgp || eigrp || rip || rtmp || eth.addr == 01:00:0c:cc:cc:cc@[43573,39932,39932][0,0,0]
@IP Time-to-Live < [email protected] < 5@[63736,26728,34952][0,0,0] @TCP [email protected]@[63736,26728,34952][0,0,0] @Bad IP [email protected]_bad@[63736,26728,34952][65535,65535,65535] @Bad UDP [email protected]_bad@[63736,26728,34952][65535,65535,65535] @Bad TCP [email protected]_bad@[63736,26728,34952][65535,65535,65535] @TCP Seg [email protected]@[63736,26728,34952][65535,65535,65535] @TCP Seg [email protected]@[63736,26728,34952][65535,65535,65535] @TCP Long Frag [email protected]@[63736,26728,34952][65535,65535,65535] @[email protected] & 0x02@[36663,59478,37540][607,3474,607] @[email protected] & 0x04@[61717,47055,24609][0,0,0] @[email protected] & 0x01@[56433,42925,57086][0,0,0] @HTTP@http@[30428,62589,62589][0,0,0] @TCP@tcp@[57455,60592,62451][0,0,0] @UDP@udp@[52264,63736,63736][0,0,0] @arp@arp@[65140,65535,49151][0,2987,65535] 炫色3

选一款喜欢的,然后开始绚色生活吧!
不过要是阿梅能帮忙配配色就更好了,呵呵!(题外)

IIS 5安全清单

IIS的安全性首先要基于Windows系统的安全性,详细部分请见相关文档。对IIS的安全控制可从以下四个方面进行:

* IP地址的域名安全限制(目录/文件安全性):视需求而定,可暂时阻止DOS;
* IIS身份验证安全限制(目录/文件安全性):
匿名访问:帐号IUSR_HOSTNAME,不过期,不能更改口令,Guest组成员;
基本身份验证:服务器上的真实用户名/密码,明文传输;
Digest身份验证:哈希散列值传输;(只使用Windows2k的域)
集成Windows验证:需要用相同用户名和密码登录;
* IIS权限
* NTFS权限

一、 为虚拟目录设置适当的 ACL

虽然一般情况下,虚拟目录的ACL取决于应用程序的需要,但一些通常的规则依然适用;

1、脚本和动态内容
可读
可执行脚本
2、静态内容
可读
3、可执行程序
可读
可执行
4、类数据库内容
可读
可写

推荐为每一种文件类型创建新的目录,在这些目录上仔细设置 ACL,并允许 ACL 继承到文件。至少建站第一步就应该在ACL中删除虚拟目录和Web页面的Everyone组。

例如,目录结构可能如下所示:
* myserverstatic (.html)
* myserverinclude (.inc)
* myserverscript (.asp)
* myserverexecutable (.dll)
* myserverimages (.gif, .jpeg)

此外,有两个目录需要特别注意:
* ftproot (FTP server)
* mailroot (SMTP server)

这两个目录上的 ACL 都是“Everyone(完全控制)”,应当根据您的功能设置更加严格的ACL,若不使用则不要安装。

对于仅开启IIS的主机,可以参考下列ACL设置(下面ACL采用的是极其严格的ACL,可能会对管理及SQL等的使用造成不便,应在此基础上逐项添加权限,才能做到权限最小化):

1.对于所有硬盘分区:
System 完全控制
Administrator 完全控制
允许继承
2.Program FilesCommon Files
Everyone 读取及运行 列出文件目录 读取
允许继承
3.webroot
IUSR_HOSTNAME 读取及运行 列出文件目录 读取
允许继承
4.Winntsystem32下除Inetsrv,Centsrv以外的所有目录
不允许继承
5.Winnt下除Downloaded Program Files、Help、IIS Temporary Compressed Files、Offline Web Pages、system32、Tasks、Temp、Web以外的所有目录
不允许继承
6.Winnt
Everyone 读取及运行 列出文件和目录 读取
允许继承
7.WinntTemp
Everyone 修改
允许继承

除上面提到的权限外,删除所有用户、组的权限。

二、 设置适当的 IIS 日志文件 ACL

请确保 IIS 生成的日志文件 (%systemroot%system32LogFiles) 上的 ACL 是:
Administrators(完全控制)
System(完全控制)
Everyone (RWC)

三、 启用日志记录

通过下列步骤使用 W3C 扩展日志记录格式:

1. 站点|属性|网站|启用日志
2. 活动日志格式|W3C 扩展日志文件格式|属性|扩展属性:
客户端 IP 地址
用户名
方法
URI 资源
Win32 状态
用户代理
服务器 IP 地址(如果多网卡)
服务器端口

当您检查日志时,请注意错误5,即被拒绝的访问。

[小知识]
如何察看错误代码所代表的意义?net helpmsg

四、 验证可执行内容的可信度

用 DumpBin 工具来查看可执行内容是否调用了某些 API。许多 Win32 开发工具都含有 DumpBin(tdump,dumpbin…)。

五、 在 IIS 服务器上更新根目录的 CA 证书

该过程包括两个步骤:

第一步:添加所有信任的新根目录证书颁发机构 (CA) 证书;
第二步:删除所有不信任的根目录 CA 证书;

请注意如果您不知道发布根目录证书的公司名称,那么就不应当信任他们!

注意: 不要删除 Microsoft 或 VeriSign 根目录。操作系统会大量使用它们。

六、 禁用或删除所有示例应用程序

例如Internet Information Server 5 中的示例文件:

IIS 示例 IISSamples c:inetpubiissamples
IIS 文档 IISHelp c:winnthelpiishelp
数据访问 MSADC c:program filescommon filessystemmsadc

七、 禁用或删除不需要的COM 组件

考虑禁用“文件系统对象”组件(FSO),但需要注意的是这样也会删除 Dictionary 对象。通常禁用COM组件的发式是直接卸载其链接文件(撤消注册),具体步骤是:regsvr32 *** /u;

例如:
下列命令将禁用“文件系统对象”:regsvr32 scrrun.dll /u

八、 删除 IISADMPWD 虚拟目录

该目录允许您重新设置 Windows NT 和 Windows 2000 密码。这主要是为 Intranet 方案设计的,并且不作为 IIS 5 的一部分来安装,但是在 IIS 4 服务器升级到 IIS 5 时将不会被删除。如果您不使用 Intranet 或者您将服务器连接到网站上,则应当将其删除。

有关此功能的详细信息,请参考Microsoft Knowledge Base文章Q184619。

九、 删除不使用的脚本映射

当 IIS 接收到针对其中某一类型文件的请求时,该调用由 DLL 进行处理。如果您不会用到其中某些扩展名或功能,请进行删除,方法如下:网站|属性|主目录|配置,然后删除下列引用:

* 基于网站的密码重置 .htr
* Internet 数据库连接器(所有 IIS 5 网站应当使用 ADO 或相似技术) .idc
* 采用SSI技术的服务器端包含程序 .stm, .shtm 和 .shtml
* Internet 打印 .printer
* 索引服务器 .htw, .ida , .idq

注意: 关于“Internet 打印”可以通过组策略和 Internet 服务管理器来配置。如果组策略设置和 Internet 管理器设置有冲突,那么组策略设置优先。默认组策略既不启用也不禁用“Internet 打印”。请选择“计算机配置”|“管理模板”|“打印”|“基于 Web 的打印”来禁用它。

十、 禁用父路径

父路径允许您在调用诸如 MapPath 等功能时使用“..”。默认状态下,该选项是启用的,您应当禁用它:网站|属性|主目录|配置|选项|启用父路径;

十一、 在“Content-Location”中禁用 IP 地址

“Content-Location”首部会暴露通常隐藏在网络地址转换 (NAT) 防火墙或代理服务器后的内部 IP 地址。如下设置后可以使服务器返回URL而不是IP地址:

将UseHostName添加到Metabase中的W3SVC键上;

例如: Set IISSchemaObject = GetObject(“IIS://Axqd/Schema/w3svc”)…

更简单的方法是使用IIS5.0提供的默认情况下安装在InetpubAdminscripts下面的ADSUTIL程序
(IIS 4.0在winntsystem32inetsrvadminsamples):

Adsutil set w3svc/UseHostName True

然后必须重启Web服务器。

有关禁用该选项的详细信息,请参阅知识库文章Q218180。IIS6.0目前没有提供这个问题的解决方案;

最后,关于针对DOS攻击的压力测试可以采用Microsoft Web Application Stress Tool;

关于IIS安全方面的工具,特别推荐IISLockDown以及URLSCAN(可从IISLockDown中分离出来);