现在有很多人都认为微软的东西漏洞太多,,微软的系统安全性极差,不过通过我在做各种系统的安全配置的过程中我总结出了一些经验,特拿来与各位共享,其实各种系统都有很多漏洞,只不过微软的东西用的人最多,普遍又是水平不是很高,不会作各种安全设置,所以才会让人有现在网上的NT/2000服务性安全性都很差的感觉,其实NT/2000的服务器如果真的做好了各项安全设置之后,其安全性绝对不会比nix系统差,如果你按照下面我说的做,我可以保证你95%以上的安全性,100%我可不敢保证,当然你必须要及时打上微软的各种大大小小的补丁,呵呵,是谁,谁拿香蕉皮扔我,站出来!!呵呵,废话少说,转入正题。
1.初级篇:NT/2000系统本身的定制安装与相关设置
用NT(2000)建立的WEB站点在所有的网站中占了很大一部分比例,主要因为其易用性与易管理性,使该公司不必再投入大量的金钱在服务器的管理上,这一点优于nix系统,不必请很专业的管理员,不必支付一份可以节省的高薪,呵呵,当然nix的管理员也不会失业,因为其开放源码和windows系统无与伦比的速度,使得现在几乎所有的大型服务器全部采用nix系统。但对于中小型企业来说windows已经足够,但NT的安全问题也一直比较突出,使得一些每个基于NT的网站都有一种如履薄冰的感觉,在此我给出一份安全解决方案,算是为中国的网络安全事业做出一份贡献吧 (说明:本方案主要是针对建立Web站点的NT、2000服务器安全,对于局域网内的服务器并不合适。)
一、 定制自己的NT/2000 SERVER
1. 版本的选择:
WIN2000有各种语言的版本,对于我们来说,可以选择英文版或简体中文版,我强烈建议:在语言不成为障碍的情况下,请一定使用英文版。要知道,微软的产品是以Bug &Patch而著称的,中文版的Bug远远多于英文版,而补丁一般还会迟至少半个月(也就是说一般微软公布了漏洞后你的机子还会有半个月处于无保护状况)
2. 组件的定制:
win2000在默认情况下会安装一些常用的组件,但是正是这个默认安装是极度危险的你应该确切的知道你需要哪些服务,而且仅仅安装你确实需要的服务,根据安全原则,最少的服务+最小的权限=最大的安全。典型的WEB服务器需要的最小组件选择是:只安装IIS的Com Files,IIS Snap-In,WWW Server组件。如果你确实需要安装其他组件,请慎重,特别是:Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML)这几个危险服务。
二、 正确安装NT/2000 SERVER
不论是NT还是2000,硬盘分区均为NTFS分区;
说明:
(1) NTFS比FAT分区多了安全控制功能,可以对不同的文件夹设置不同的访问权限,安全性增强。
(2) 建议最好一次性全部安装成NTFS分区,而不要先安装成FAT分区再转化为NTFS分区,这样做在安装了SP5和SP6的情况下会导致转化不成功,甚至系统崩溃。
(3) 安装NTFS分区有一个潜在的危险,就是目前大多数反病毒软件没有提供对软盘启动后NTFS分区病毒的查杀,这样一旦系统中了恶性病毒而导致系统不能正常启动,后果就比较严重,因此及建议平时做好防病毒工作。
(4)分区和逻辑盘的分配
有一些朋友为了省事,将硬盘仅仅分为一个逻辑盘,所有的软件都装在C驱上,这是很不好的,建议最少建立两个分区,一个系统分区,一个应用程序分区,这是因为,微软的IIS经常会有泄漏源码/溢出的漏洞,如果把系统和IIS放在同一个驱动器会导致系统文件的泄漏甚至入侵者远程获取ADMIN。推荐的安全配置是建立三个逻辑驱动器,第一个大于2G,用来装系统和重要的日志文件,第二个放IIS,第三个放FTP,这样无论IIS或FTP出了安全漏洞都不会直接影响到系统目录和系统文件。要知道,IIS和FTP是对外服务的,比较容易出问题。而把IIS和FTP分开主要是为了防止入侵者上传程序并从IIS中运行。
(5)安装顺序的选择:
win2000在安装中有几个顺序是一定要注意的: 首先,何时接入网络:Win2000在安装时有一个漏洞,在你输入Administrator密码后,系统就建立了ADMIN$的共享,但是并没有用你刚刚输入的密码来保护它,这种情况一直持续到你再次启动后,在此期间,任何人都可以通过ADMIN$进入你的机器;同时,只要安装一完成,各种服务就会自动运行,而这时的服务器是满身漏洞,非常容易进入的,因此,在完全安装并配置好win2000 SERVER之前,一定不要把主机接入网络。 其次,补丁的安装:补丁的安装应该在所有应用程序安装完之后,因为补丁程序往往要替换/修改某些系统文件,如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果,例如:IIS的HotFix就要求每次更改IIS的配置都需要安装
三、 安全配置NT/2000 SERVER
即使正确的安装了WIN2000 SERVER,系统还是有很多的漏洞,还需要进一步进行细致地配置。
1.端口:
端口是计算机和外部网络相连的逻辑接口,也是计算机的第一道屏障,端口配置正确与否直接影响到主机的安全,一般来说,仅打开你需要使用的端口会比较安全,配置的方法是在网卡属性-TCP/IP-高级-选项-TCP/IP筛选中启用TCP/IP筛选,不过对于win2000的端口过滤来说,有一个不好的特性:只能规定开哪些端口,不能规定关闭哪些端口,这样对于需要开大量端口的用户就比较痛苦。
2.IIS:
IIS是微软的组件中漏洞最多的一个,平均两三个月就要出一个漏洞,而微软的IIS默认安装又实在不敢恭维,所以IIS的配置是我们的重点,现在大家跟着我一起来:首先,把C盘那个什么Inetpub目录彻底删掉,在D盘建一个Inetpub(要是你不放心用默认目录名也可以改一个名字,但是自己要记得)在IIS管理器中将主目录指向D:\Inetpub;其次,那个IIS安装时默认的什么scripts等虚拟目录一概删除,如果你需要什么权限的目录可以自己慢慢建,需要什么权限开什么。(特别注意写权限和执行程序的权限,没有绝对的必要千万不要给)第三,应用程序配置:在IIS管理器中删除必须之外的任何无用映射,必须指的是ASP,ASA和其他你确实需要用到的文件类型,例如你用到stml等(使用server side include),实际上90%的主机有了上面两个映射就够了,其余的映射几乎每个都有一个凄惨的故事:htw, htr, idq, ida……想知道这些故事?去查以前的漏洞列表吧。在IIS管理器中右击主机->属性->WWW服务 编辑->主目录配置->应用程序映射,然后就开始一个个删吧(里面没有全选的,嘿嘿)。接着在刚刚那个窗口的应用程序调试书签内将脚本错误消息改为发送文本(除非你想ASP出错的时候用户知道你的程序/网络/数据库结构)错误文本写什么?随便你喜欢,自己看着办。点击确定退出时别忘了让虚拟站点继承你设定的属性。安装新的Service Pack后,IIS的应用程序映射应重新设置。(说明:安装新的Service Pack后,某些应用程序映射又会出现,导致出现安全漏洞。这是管理员较易忽视的一点。)
为了对付日益增多的cgi漏洞扫描器,还有一个小技巧可以参考,在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件,可以让目前绝大多数CGI漏洞扫描器失灵。其实原因很简单,大多数CGI扫描器在编写时为了方便,都是通过查看返回页面的HTTP代码来判断漏洞是否存在的,例如,著名的IDQ漏洞一般都是通过取1.idq来检验,如果返回HTTP200,就认为是有这个漏洞,反之如果返回HTTP404就认为没有,如果你通过URL将HTTP404出错信息重定向到HTTP404.htm文件,那么所有的扫描无论存不存在漏洞都会返回HTTP200,90%的CGI扫描器会认为你什么漏洞都有,结果反而掩盖了你真正的漏洞,让入侵者茫然无处下手,不过从个人角度来说,我还是认为扎扎实实做好安全设置比这样的小技巧重要的多。
最后,为了保险起见,你可以使用IIS的备份功能,将刚刚的设定全部备份下来,这样就可以随时恢复IIS的安全配置。还有,如果你怕IIS负荷过高导致服务器满负荷死机,也可以在性能中打开CPU限制,例如将IIS的最大CPU使用率限制在70%。
3.帐号策略:
(1)帐号尽可能少,且尽可能少用来登录;
说明:网站帐号一般只用来做系统维护,多余的帐号一个也不要,因为多一个帐号就会多一份被攻破的危险。
(2)除过Administrator外,有必要再增加一个属于管理员组的帐号;
说明:两个管理员组的帐号,一方面防止管理员一旦忘记一个帐号的口令还
有一个备用帐号;另方面,一旦黑客攻破一个帐号并更改口令,我们还有
有机会重新在短期内取得控制权。
(3)所有帐号权限需严格控制,轻易不要给帐号以特殊权限;
(4)将Administrator重命名,改为一个不易猜的名字。其他一般帐号也应尊循这一原则。
说明:这样可以为黑客攻击增加一层障碍。
(5)将Guest帐号禁用,同时重命名为一个复杂的名字,增加口令,并将它从
Guest组删掉;
说明:有的黑客工具正是利用了guest 的弱点,可以将帐号从一般用户提
升到管理员组。
(6)给所有用户帐号一个复杂的口令(系统帐号出外),长度最少在8位以上, 且必须同时包含字母、数字、特殊字符。同时不要使用大家熟悉的单词(如microsoft)、熟悉的键盘顺序(如qwert)、熟悉的数字(如2000)等。
说明:口令是黑客攻击的重点,口令一旦被突破也就无任何系统安全可言了,而这往往是不少网管所忽视的地方,据我们的测试,仅字母加数字的5位口令在几分钟内就会被攻破,而所推荐的方案则要安全的多。
(7)口令必须定期更改(建议至少两周该一次),且最好记在心里,除此以外不要在任何地方做记录;另外,如果在日志审核中发现某个帐号被连续尝试,则必须立刻更改此帐号(包括用户名和口令);
(8)在帐号属性中设立锁定次数,比如改帐号失败登录次数超过5次即锁定改帐号。这样可以防止某些大规模的登录尝试,同时也使管理员对该帐号提高警惕。
4.安全日志:
Win2000的默认安装是不开任何安全审核的!
那么请你到本地安全策略->审核策略中打开相应的审核,推荐的审核是:
账户管理 成功 失败
登录事件 成功 失败
对象访问 失败
策略更改 成功 失败
特权使用 失败
系统事件 成功 失败
目录服务访问 失败
账户登录事件 成功 失败
审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义。 与之相关的是:
在账户策略->密码策略中设定:
密码复杂性要求 启用
密码长度最小值 6位
强制密码历史 5次
最长存留期 30天
在账户策略->账户锁定策略中设定:
账户锁定 3次错误登录
锁定时间 20分钟
复位锁定计数 20分钟
同样,Terminal Service的安全日志默认也是不开的,我们可以在Terminal Service Configration(远程服务配置)-权限-高级中配置安全审核,一般来说只要记录登录、注销事件就可以了。
5.目录和文件权限:
为了控制好服务器上用户的权限,同时也为了预防以后可能的入侵和溢出,我们还必须非常小心地设置目录和文件的访问权限,NT的访问权限分为:读取、写入、读取及执行、修改、列目录、完全控制。在默认的情况下,大多数的文件夹对所有用户(Everyone这个组)是完全敞开的(Full Control),你需要根据应用的需要进行权限重设。
在进行权限控制时,请记住以下几个原则:
1>限是累计的:如果一个用户同时属于两个组,那么他就有了这两个组所允许的所有权限;
2>拒绝的权限要比允许的权限高(拒绝策略会先执行)如果一个用户属于一个被拒绝访问某个资源的组,那么不管其他的权限设置给他开放了多少权限,他也一定不能访问这个资源。所以请非常小心地使用拒绝,任何一个不当的拒绝都有可能造成系统无法正常运行;
3>文件权限比文件夹权限高
4>利用用户组来进行权限控制是一个成熟的系统管理员必须具有的优良习惯之一;
5>仅给用户真正需要的权限,权限的最小化原则是安全的重要保障;
6.只安装一种操作系统;
说明:安装两种以上操作系统,会给黑客以可乘之机,利用攻击使系统重启到另外一个没有安全设置的操作系统(或者他熟悉的操作系统),进而进行破坏。
7.安装成独立的域控制器(Stand Alone),选择工作组成员,不选择域;
说明:主域控制器(PDC)是局域网中队多台联网机器管理的一种方式,用于网站服务器包含着安全隐患,使黑客有可能利用域方式的漏洞攻击站点服务器。
8.将操作系统文件所在分区与WEB数据包括其他应用程序所在的分区分开,并在安装时最好不要使用系统默认的目录,如将\WINNT改为其他目录;
说明:黑客有可能通过WEB站点的漏洞得到操作系统对操作系统某些程序的执行权限,从而造成更大的破坏。同时如果采用IIS的话你应该在其设置中删除掉所有的无用的映射,同时不要安装索引服务,远程站点管理与服务器扩展最好也不要要,然后删掉默认路径下的www,整个删,不要手软,然后再硬盘的另一个硬盘建立存放你网站的文件夹,同时一定记得打开w3c日志纪录,切记(不过本人建议采用apache 1.3.24)
系统安装过程中一定本着最小服务原则,无用的服务一概不选择,达到系统的最小安装,多一个服务,多一份风险,呵呵,所以无用组件千万不要安装!
9.关于补丁:在NT下,如果安装了补丁程序,以后如果要从NT光盘上安装新的Windows程序,都要重新安装一次补丁程序, 2000下不需要这样做。
说明:
(1) 最新的补丁程序,表示系统以前有重大漏洞,非补不可了,对于局域网内服务器可以不是最新的,但站点必须安装最新补丁,否则黑客可能会利用低版本补丁的漏洞对系统造成威胁。这是一部分管理员较易忽视的一点;
(2) 安装NT的SP5、SP6有一个潜在威胁,就是一旦系统崩溃重装NT时,系统将不会认NTFS分区,原因是微软在这两个补丁中对NTFS做了改进。只能通过Windows 2000安装过程中认NTFS,这样会造成很多麻烦,建议同时做好数据备份工作。
(3) 安装Service Pack前应先在测试机器上安装一次,以防因为例外原因导致机器死机,同时做好数据备份。
尽量不安装与WEB站点服务无关的软件;
说明:其他应用软件有可能存在黑客熟知的安全漏洞。
10.解除NetBios与TCP/IP协议的绑定
说明:NetBois在局域网内是不可缺少的功能,在网站服务器上却成了黑客扫描工具的首选目标。方法:NT:控制面版——网络——绑定——NetBios接口——禁用 2000:控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS
11.删除所有的网络共享资源,在网络连接的设置中删除文件和打印共享,只留下TCP/IP协议
说明:NT与2000在默认情况下有不少网络共享资源,在局域网内对网络管理和网络通讯有用,在网站服务器上同样是一个特大的安全隐患。(卸载"Microsoft 网络的文件和打印机共享"。当查看"网络和拨号连接"中的任何连接属性时,将显示该选项。单击"卸载"按钮删除该组件;清除"Microsoft 网络的文件和打印机共享"复选框将不起作用。)
方法:
(1)NT:管理工具——服务器管理器——共享目录——停止共享;
2000:控制面版——管理工具——计算及管理——共享文件夹———停止共享
但上述两种方法太麻烦,服务器每重启一次,管理员就必须停止一次
(2)修改注册表:
运行Regedit,然后修改注册表在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters下增加一个键
Name: AutoShareServer
Type: REG_DWORD
value: 0
然后重新启动您的服务器,磁盘分区共享去掉,但IPC共享仍存在,需每次重启后手工删除。
12.改NTFS的安全权限;
说明:NTFS下所有文件默认情况下对所有人(EveryOne)为完全控制权限,这使黑客有可能使用一般用户身份对文件做增加、删除、执行等操作,建议对一般用户只给予读取权限,而只给管理员和System以完全控制权限,但这样做有可能使某些正常的脚本程序不能执行,或者某些需要写的操作不能完成,这时需要对这些文件所在的文件夹权限进行更改,建议在做更改前先在测试机器上作测试,然后慎重更改。
13.加强数据备份;
说明:这一点非常重要,站点的核心是数据,数据一旦遭到破坏后果不堪设想,而这往往是黑客们真正关心的东西;遗憾的是,不少网管在这一点上作的并不好,不是备份不完全,就是备份不及时。数据备份需要仔细计划,制定出一个策略并作了测试以后才实施,而且随着网站的更新,备份计划也需要不断地调整。
14.只保留TCP/IP协议,删除NETBEUI、IPX/SPX协议;
说明:网站需要的通讯协议只有TCP/IP,而NETBEUI是一个只能用于局域网的协议,IPX/SPX是面临淘汰的协议,放在网站上没有任何用处,反而会被某些黑客工具利用。
15.不要起用IP转发功能,控制面板->网络->协议->TCP/IP协议->属性,使这个选框为空。(NT)
说明:缺省情况下,NT的IP转发功能是禁止的,但注意不要启用,否则它会具有路由作用,被黑客利用来对其他服务器进行攻击。
16.安装最新的MDAC(http://www.microsoft.com/data/download.htm)
说明:MDAC为数据访问部件,通常程序对数据库的访问都通过它,但它也是黑客攻击的目标,为防止以前版本的漏洞可能会被带入升级后的版本,建议卸载后安装最新的版本。注意:在安装最新版本前最好先做一下测试,因为有的数据访问方式或许在新版本中不再被支持,这种情况下可以通过修改注册表来档漏洞,祥见漏洞测试文档。
17.设置IP拒绝访问列表
说明:对于WWW服务,可以拒绝一些对站点有攻击嫌疑的地址;尤其对于FTP服务,如果只是自己公司上传文件,就可以只允许本公司的IP访问改FTP服务,这样,安全性大为提高。
18.禁止对FTP服务的匿名访问
说明:如果允许对FTP服务做匿名访问,该匿名帐户就有可能被利用来获取更多的信息,以致对系统造成危害。
19.建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)
说明:作为一个重要措施,既可以发现攻击的迹象,采取预防措施,也可以作为受攻击的一个证据。
20.慎重设置WEB站点目录的访问权限,一般情况下,不要给予目录以写入和允许目录浏览权限。只给予.ASP文件目录以脚本的权限,而不要给与执行权限。
说明:目录访问权限必须慎重设置,否则会被黑客利用。
21.ASP编程安全:
安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习惯,否则,会给黑客造成可乘之机。目前,大多数网站上的ASP程序有这样那样的安全漏洞,但如果写程序的时候注意的话,还是可以避免的。
涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限。
说明:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。因此要尽量减少它们在ASP文件中的出现次数。出现次数多得用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及到与数据库连接,理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户以修改、插入、删除记录的权限。
需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。
说明:现在的需要经过验证的ASP程序多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入,因此有必要跟踪上一个页面。具体漏洞见所附漏洞文档。
防止ASP主页.inc文件泄露问题
当存在asp 的主页正在制作并没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象,如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中察看到数据库地点和结构的细节揭示完整的源代码。
解决方案:程序员应该在网页发布前对其进行彻底的调试;安全专家需要固定asp 包含文件以便外部的用户不能看他们。 首先对 .inc 文件内容进行加密,其次也可以使用 .asp 文件代替 .inc 文件使用户无法从浏览器直接观看文件的源代码。.inc 文件的文件名不用使用系统默认的或者有特殊含义容易被用户猜测到的,尽量使用无规则的英文字母。
注意某些ASP编辑器会自动备份asp文件,会被下载的漏洞
在有些编辑asp程序的工具,当创建或者修改一个asp文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一个..bak文件,如你创建或者修改了some.asp,编辑器自动生成一个叫some.asp.bak文件,如果你没有删除这个 bak文件,攻击有可以直接下载some.asp.bak文件,这样some.asp的源程序就会给下载。
在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、javascript、VBScript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。
说明:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏; 如果该输入框涉及到数据查询,他们会利用特殊查询输入得到更多的数据库数据,甚至是表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过,因此必须在服务器端再做一次检查。
防止ACCESS mdb 数据库有可能被下载的漏洞
在用ACCESS做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的ACCESS数据库的路径和数据库名称,那么他能够下载这个ACCESS数据库文件,这是非常危险的。
解决方法:
(1) 为你的数据库文件名称起个复杂的非常规的名字,并把他放在几目录下。所谓 "非常规", 打个比方: 比如有个数据库要保存的是有关书籍的信息, 可不要把他起个"book.mdb"的名字,起个怪怪的名称,比如d34ksfslf.mdb, 再把他放在如./kdslf/i44/studi/ 的几层目录下,这样黑客要想通过猜的方式得到你的ACCESS数据库文件就难上加难了。
(2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:
DBPath = Server.MapPath("cmddb.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
假如万一给人拿到了源程序,你的ACCESS数据库的名字就一览无余。因此建议你在ODBC里设置数据源,再在程序中这样写:
conn.open "shujiyuan"
(3)使用ACCESS来为数据库文件编码及加密。首先在选取 "工具->安全->加密/解密数据库,选取数据库(如:employer.mdb),然后接确定,接着会出现 "数据库加密后另存为"的窗口,存为:employer1.mdb。 接着employer.mdb就会被编码,然后存为employer1.mdb..
要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。
接下来我们为数据库加密,首先以打开经过编码了的 employer1.mdb, 在打开时,选择"独占"方式。然后选取功能表的"工具->安全->设置数据库密码", 接着 输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他是无法看到 employer1.mdb的。
23.SQL SERVER的安全
SQL SERVER是NT平台上用的最多的数据库系统,但是它的安全问题也必须引起重视。数据库中往往存在着最有价值的信息,一旦数据被窃后果不堪设想。
及时更新补丁程序。
说明:与NT一样,SQL SERVER的许多漏洞会由补丁程序来弥补。建议在安装补丁程序之前先在测试机器上做测试,同时提前做好目标服务器的数据备份。
给SA一个复杂的口令。
说明:SA具有对SQL SERVER数据库操作的全部权限。遗憾的是,一部分网管对数据库并不熟悉,建立数据库的工作由编程人员完成,而这部分人员往往只注重编写SQL 语句本身,对SQL SERVER数据库的管理不熟悉,这样很有可能造成SA口令为空。这对数据库安全是一个严重威胁。目前具有这种隐患的站点不在少数。
严格控制数据库用户的权限,轻易不要给让用户对表有直接的查询、更改、插入、删除权限,可以通过给用户以访问视图的权限,以及只具有执行存储过程的权限。
说明:用户如果对表有直接的操作权限,就会存在数据被破坏的危险。
制订完整的数据库备份与恢复策略。
24. PCANYwhere的安全:
目前,PCANYwhere是最流行的基于NT与2000的远程控制工具,同样也需要注意安全问题。
建议采用单独的用户名与口令,最好采用加密手段。千万不要采用与NT管理员一样的用户名与口令,也不要使用与NT集成的口令。同时在服务器端的设置时务必采用security options中的强加密方式,拒绝低加密水平的连接,同时采用口令加密与传输过程中的用户名与口令加密,以防止被嗅探到,还要限制连接次数,另外很重要的一点就是一定在protect item中设置高强度的口令,同时一定限制不能够让别人看到你的host端的任何设置,即便是要察看主机端的相关设置也必须要输入口令!
说明:PCANYwhere 口令是远程控制的第一个关口,如果与NT的一样, 就失去了安全屏障。被攻破后就毫无安全可言。而如果采用单独的口令,即使攻破了PCANYwhere,NT还有一个口令屏障。
及时安装较新的版本。
2.中级篇: IIS的安全与性能调整
实际上,安全和应用在很多时候是矛盾的,因此,你需要在其中找到平衡点,毕竟服务器是给用户用而不是做OPEN HACK的,如果安全原则妨碍了系统应用,那么这个安全原则也不是一个好的原则。 网络安全是一项系统工程,它不仅有空间的跨度,还有时间的跨度。很多朋友(包括部分系统管理员)认为进行了安全配置的主机就是安全的,其实这其中有个误区:我们只能说一台主机在一定的情况一定的时间上是安全的随着网络结构的变化、新的漏洞的发现,管理员/用户的操作,主机的安全状况是随时随地变化着的,只有让安全意识和安全制度贯穿整个过程才能做到真正的安全。
提高IIS 5.0网站伺服器的执行效率的八种方法
以下是提高IIS 5.0网站伺服器的执行效率的八种方法:
1. 启用HTTP的持续作用可以改善15~20%的执行效率。
2. 不启用记录可以改善5~8%的执行效率。
3. 使用 [独立] 的处理程序会损失20%的执行效率。
4. 增加快取记忆体的保存档案数量,可提高Active Server Pages之效能。
5. 勿使用CGI程式。
6. 增加IIS 5.0电脑CPU数量。
7. 勿启用ASP侦错功能。
8. 静态网页采用HTTP 压缩,大约可以减少20%的传输量。
简单介绍如下。
1、启用HTTP的持续作用
启用HTTP的持续作用(Keep-Alive)时,IIS与浏览器的连线不会断线,可以改善执行效率,直到浏览器关闭时连线才会断线。因为维持「Keep-Alive」状态时,於每次用户端请求时都不须重新建立一个新的连接,所以将改善伺服器的效率。此功能为HTTP1.1预设的功能,HTTP 1.0加上Keep-Alive header也可以提供HTTP的持续作用功能。
2、启用HTTP的持续作用可以改善15~20%的执行效率。
如何启用HTTP的持续作用呢?步骤如下:在 [Internet服务管理员] 中,选取整个IIS电脑、或Web站台,於 [内容] 之 [主目录] 页,勾选 [HTTP的持续作用] 选项。
3、不启用记录
不启用记录可以改善5~8%的执行效率。如何设定不启用记录呢?步骤如下:
在 [Internet服务管理员] 中,选取整个IIS电脑、或Web站台,於 [内容] 之 [主目录] 页,不勾选 [启用记录] 选项。设定非独立的处理程序使用 [独立] 的处理程序会损失20%的执行效率,此处所谓 独立」系指将 [主目录]、[虚拟目录] 页之应用程式保护选项设定为 [高(独立的)] 时。因此 [应用程式保护] 设定为 [低 (IIS处理程序)] 时执行效率较高如何设定非「独立」的处理程序呢?步骤如下: 在 [Internet服务管理员] 中,选取整个IIS电脑、Web站台、或应用程式的起始目录。於 [内容] 之 [主目录]、[虚拟目录] 页,设定应用程式保护选项为 [低 (IIS处理程序)] 。
4、调整快取(Cache)记忆体
IIS 5.0将静态的网页资料暂存於快取(Cache)记忆体当中;IIS 4.0则将静态的网页资料暂存於档案当中。调整快取(Cache)记忆体的保存档案数量可以改善执行效率。ASP指令档案执行过後,会在暂存於快取(Cache)记忆体中以提高执行效能。增加快取记忆体的保存档案数量,可提高Active Server Pages之效能。可以设定所有在整个IIS电脑、「独立」Web站台、或「独立」应用程式上执行之应用程式的快取记忆体档案数量。如何设定快取(Cache)功能呢?步骤如下:在 [Internet服务管理员] 中选取整个IIS电脑、「独立」Web站台、或「独立」应用程式的起始目录。於 [内容] 之 [主目录]、[虚拟目录] 页,按下 [设定] 按钮时,即可由 [处理程序选项] 页设定[指令档快取记忆体] 。如何设定快取(Cache)记忆体档案数量呢?步骤如下:在[Internet服务管理员] 中,选取整个IIS电脑、或Web站台的起始目录。於 [内容] 之[伺服器扩充程式] 页,按下 [设定] 按钮。即可设定快取(Cache)记忆体档案数量。
5、勿使用CGI程式
使用CGI程式时,因为处理程序(Process)须不断地产生与摧毁,造成执行效率不佳。一般而言,执行效率比较如下: 静态网页(Static):100 ISAPI:50 ASP:10 CGI:1 换句话说,ASP比CGI可能快10倍,因此勿使用CGI程式可以改善IIS的执行效率。以弹性(Flexibility)而言:ASP > CGI > ISAPI > 静态网页(Static)。以安全(Security)而言:ASP(独立) = ISAPI(独立)= CGI > ASP(非独立) = ISAPI(非独立)= 静态网页(Static)
6、增加IIS 5.0电脑CPU数量
根据微软的测试报告,增加IIS 4.0电脑CPU数量,执行效率并不会改善多少;但是增加IIS 5.0电脑CPU数量,执行效率会几乎成正比地提供,换句话说,两颗CPU的IIS5.0电脑执行效率几乎是一颗CPU电脑的两倍,四颗CPU的IIS 5.0电脑执行效率几乎是一颗CPU电脑的四倍IIS 5.0将静态的网页资料暂存於快取(Cache)记忆体当中;IIS 4.0 则将静态的网页资料暂存於档案当中。调整快取(Cache)记忆体的保存档案数量可以改善执行效率。
7、启用ASP侦错功能
勿启用ASP侦错功能可以改善执行效率。如何勿启用ASP侦错功能呢?步骤如下:於[Internet服务管理员] 中,选取Web站台、或应用程式的起始目录,按右键选择[内容],按 [主目录]、[虚拟目录] 或 [目录] 页,按下 [设定] 按钮,选择 [应用程式侦错] 页,不勾选 [启用ASP伺服器端指令侦错]、[启用ASP用户端指令侦错] 选项。
8、静态网页采用HTTP 压缩
静态网页采用HTTP 压缩,大约可以减少20%的传输量。HTTP压缩功能启用或关闭,系针对整台IIS伺服器来设定。用户端使用IE 5.0浏览器连线到已经启用HTTP压缩IIS5.0之Web伺服器,才有HTTP压缩功能。如何启用HTTP压缩功能呢?步骤如下:若要启用HTTP 压缩功能,方法为在 [Internet服务管理员] 中,选取电脑之 [内容],於 [主要内容] 之下选取 [WWW服务]。然後按一下 [编辑] 按钮,於 [服务] 页上,选取 [压缩静态档案] 可以压缩静态档案,不选取 [压缩应用程式档案] 。 动态产生的内容档案(压缩应用程式档案)也可以压缩,但是须耗费额外CPU处理时间,若%Processor Time已经百分之八十或更多时,建议不要压缩
以上是对采用IIS作为WEB服务器的一些安全相关的设置与其性能调整的参数设置,可以最大化的优化你的IIS,不过个人认为如果不存在障碍,还是采用apache比较好一些,漏洞少,建议采用apache 1.3.24版本,因为最近经测试,apache 1.3.23之前的版本都存在溢出漏洞,不要怕,这种漏洞很少的,呵呵。另外,个人建议不要采用ASP安全性总不叫人放心,个人认为还是采用JSP好一些,安全性好,功能强大,绝对超值,呵呵,因为PHP也存在不少的洞洞
附:IIS安全工具及其使用说明
一、IIS Lock Tool,快速设置IIS安全属性
IIS Lock Tool的推出,还要感谢红色代码,因为正是红色代码的大面积传播,致使微软设计发布这款帮助管理员们设置IIS安全性的工具。
(一)、IIS Lock Tool具有以下功能和特点
1、最基本功能,帮助管理员设置IIS安全性;
2、此工具可以在IIS4和IIS5上使用;
3、即使系统没有及时安装所有补丁,也能有效防止IIS4和IIS5的已知漏洞;
4、帮助管理员去掉对本网站不必要的一些服务,使IIS在满足本网站需求的情况下运行最少的服务;
5、具有两种使用模式:快捷模式和高级模式。快捷模式直接帮助管理员设置好IIS安全性,这种模式只适合于只有HTML和HTM静态网页的网站使用,因为设置完成以后,ASP不能运行;高级模式允许管理员自己设置各种属性,设置得当,对IIS系统任何功能均没有影响。
(二)、IIS Lock Tool的使用
1、软件下载和安装
IIS Lock Tool在微软网站下载,下载地址:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=32362 安装很简单,需要注意的是,安装以后,程序不会在系统的【程序】菜单出现,也不会在【管理工具】出现,需要安装者在安装目录寻找运行该程序。
2、软件的使用
在以下的介绍中,我们将详细介绍每一步设置的意义和推荐设置,之所以详细介绍,是为了我们明白这些设置到底意味着什么,同时,和我们原来的安全设置相对照,避免出现设置完成以后,系统出现障碍。
运行该软件,首先出现以下界面(图一):
图一
以上界面介绍了IIS Lock Tool的一些基本情况和使用时需要注意的地方:1)使用时应该选择针对本网站最少的服务,去掉不必要的服务;2)设置完成以后,建议对网站进行彻底检查,以确定设置对本网站是否合适;
在以上界面,点击【下一步】按钮,出现以下界面(图二):
图二
以上界面选择快捷模式还是高级模式来运行软件,在这里,软件介绍了两者模式的区别:
快捷模式:此设置模式关闭了IIS的一些高级服务属性,其中包括动态网页属性(ASP);所以,我们需要再重复一遍,选择快捷模式只适合提供静态页面的网站,当然,这种模式是相对最安全的。
高级模式:此模式运行安装者自定义各种属性,同时允许高级属性的运行。
快捷模式设置我们不必介绍,点击【下一步】按钮就可以设置完成。我们选择【Advanced Lockdown】(高级设置),点击【下一步】按钮,出现以下界面(图三):
图三
以上界面帮助管理员设置各种脚本映射,我们来看每一种影射应该怎样设置:
1)Disable support Active Server Pages(ASP),选择这种设置将使IIS不支持ASP功能;可以根据网站具体情况选择,一般不选择此项,因为网站一般要求运行ASP程序;
2)Disable support Index Server Web Interface(.idq,.htw,.ida),选择这一项将不支持索引服务,具体就是不支持.idq,.htw,.ida这些文件。我们先来看看到底什么是索引服务,然后来决定取舍。索引服务是IIS4中包含的内容索引引擎。你可以对它进行ADO调用并搜索你的站点,它为你提供了一个很好的web 搜索引擎。如果你的网站没有利用索引服务对网站进行全文检索,也就可以取消网站的这个功能,取消的好处是:1)减轻系统负担;2)有效防止利用索引服务漏洞的病毒和黑客,因为索引服务器漏洞可能使攻击者控制网站服务器,同时,暴露网页文件在服务器上的物理位置(利用.ida、.idq)。因此,我们一般建议在这一项前面打勾,也就是取消索引服务;
3)Disable support for Server Side Includes(.shtml,.shtm,.stm),取消服务器端包含;先来看看什么叫服务器端包含,SSI就是HTML文件中,可以通过注释行调用的命令或指针。SSI 具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,动态显示时间和日期,以及执行shell和CGI脚本程序等复杂的功能。一般而言,我们没有用到这个功能,所以,建议取消;取消可以防止一些IIS潜在地漏洞;
4)Disable for Internet Data Connector(.idc),取消Internet数据库连接;先看Internet数据库连接的作用,它允许HTML页面和后台数据库建立连接,实现动态页面。需要注意的是,IIS4和IIS5中基本已经不使用idc,所以,建议在此项打勾,取消idc;
5)Disable support for Internet Printing (.printer),取消Internet打印;这一功能我们一般没有使用,建议取消;取消的好处是可以避免.printer远程缓存溢出漏洞,这个漏洞使攻击者可以利用这个漏洞远程入侵IIS 服务器,并以系统管理员(system)身份执行任意命令;
6)Disable support for .HTR Scripting(.htr),取消htr映射;攻击者通过htr构造特殊的URL请求,可能导致网站部分文件源代码暴露(包括ASP),建议在此项前面打勾,取消映射;
理解以上各项设置以后,我们可以根据本网站情况来决定取舍,一般网站除了ASP要求保留以外,其他均可以取消,也就是全消第一项前面的勾,其他全部打勾,按【下一步】按钮,出现以下界面(图四)
图四
以上界面设置可以让管理员选择一些IIS默认安装文件的保留与否,我们来看怎样选择:
1)Remove sample web files,删除web例子文件;建议删除,因为一般我们不需要在服务器上阅读这些文件,而且,这些文件可能让攻击者利用来阅读部分网页源程序代码(包括ASP);
2)Remove the Scripts vitual directory,删除脚本虚拟目录;建议删除;
3)Remove the MSDAC virtual directory,删除MSDAC虚拟目录,建议删除;
4)Disable Distribauted Authoring and Versioning(WebDAV),删除WEBDAV,WebDav主要允许管理者远程编写和修改页面,一般我们不会用到,建议删除,删除的好处是可以避免IIS5的一个WebDav漏洞,该漏洞可能导致服务器停止。
5)Set file permissions to prevent the IIS anouymous user from executing system utilities(such as cmd.exe,tftp.exe),防止匿名用户运行可执行文件,比如cmd.exe和tftp.exe;建议选择此项,因为红色代码和尼姆达均利用了以上所说的匿名执行可执行文件的功能;
6)Set file permissions to prevent the IIS anouymous user from writing to content directories,防止匿名用户对目录具有写权限,这个不要解释,建议选择;
设置以上选项以后,按【下一步】按钮,出现以下界面(图五):
图五
要求确认是否接受以上设置,选择【是】,出现以下界面(图六)开始对系统执行设置:
图六
在以上界面中,我们可以看到对IIS的详细设置情况。设置完成以后,建议重新启动IIS。
二、URLScan Tool――过滤非法URL访问
仔细观察IIS的漏洞,我们几乎可以得出这样一个结论,所有利用这些漏洞实现对网站攻击的手段均是构造特殊的URL来访问网站,一般有以下几种类型的URL可以利用漏洞:
1、特别长的URL,比如红色代码攻击网站的URL就是这样:
GET/default.idaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u
9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u
00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 200;
2、特殊字符或者字符串的URL,比如在URL后面加::$DATA可以看到网页(ASP)源代码;
3、URL中含有可执行文件名,最常见的就是有cmd.exe;
既然这些攻击利用特殊的URL来实现,所以,微软提供了这款专门过滤非法URL的安全工具,可以达到御敌于国门之外的效果,这款工具有以下特点和功能:
1、基本功能:过滤非法URL请求;
2、设定规则,辨别那些URL请求是合法的;这样,就可以针对本网站来制定专门的URL请求规则;同时,当有新的漏洞出现时,可以更改这个规则,达到防御新漏洞的效果;
3、程序提供一套URL请求规则,这个规则包含已经发现的漏洞利用特征,帮助管理员设置规则;
(一)、软件的下载与安装
URLScan可以在微软的网站上下载,地址如下:
http://download.microsoft.com/download/iis50/Utility/1.0/NT45XP/EN-US/UrlScan.exe 和一般软件一样安装,但是,此软件不能选择安装路径,安装完成以后,我们可以在System32/InetSvr/URLScan目录下找到以下文件:
urlscan.dll:动态连接库文件;
urlscan.inf:安装信息文件;
urlscan.txt:软件说明文件;
urlscan.ini:软件配置文件,这个文件很只要,因为对URLScan的所有配置,均有这个文件来完成。
(二)、软件的配置
软件的配置由urlscan.ini文件来完成,在配置此文件以前,我们需要了解一些基本知识。
1、urlscan配置文件的构造形式
urlscan配置文件必须遵从以下规则:
(1)此文件名必须为urlscan.ini;
(2)配置文件必须和urlscan.dll在同一目录;
(3)配置文件必须是标准ini文件结构,也就是由节,串和值组成;
(4)配置文件修改以后,必须重新启动IIS,使配置生效;
(5)配置文件由以下各节组成:
[Option]节,主要设置节;
[AllowVerbs]节,配置认定为合法URL规则设定,此设定与Option节有关;
[DenyVerbs]节,配置认定为非法URL规则设定,此设定与Option节有关;
[DenyHeaders]节,配置认定为非法的header在设立设置;
[AllowExtensions]节,配置认定为合法的文件扩展名在这里设置,此设定与Option节有关;
[DenyExtensions]节,配置认定为非法的文件扩展名在这里设置,此设定与Option节有关;
2、具体配置
(1)Option节的配置,因为Option节的设置直接影响到以后的配置,因此,这一节的设置特别重要。此节主要进行以下属性的设置:
UseAllowVerbs:使用允许模式检查URL请求,如果设置为1,所有没有在[AllowVerbs]节设置的请求都被拒绝;如果设置为0,所有没有在[DenyVerbs]设置的URL请求都认为合法;默认为1;
UseAllowExtensions:使用允许模式检测文件扩展名;如果设置为 1,所有没在[AllowExtensions]节设置的文件扩展名均认为是非法请求;如果设置为0,所有没在[DenyExtensions]节设置的扩展名均被认为是合法请求;默认为0;
EnableLogging:是否允许使用Log文件,如果为1,将在urlscan.dll的相同目录设置名为urlscan.log的文件记录所有过滤;
AllowLateScanning:允许其他URL过滤在URLScan过滤之前进行,系统默认为不允许0;
alternateServerName:使用服务名代替;如果此节存在而且[RemoveServerHeader]节设置为0,IIS将在这里设置的服务器名代替默认的"Server";
NormalizeUrlBeforeScan:在检测URL之前规格化URL;如果为1,URLScan将在IIS编码URL之前URL进行检测;需要提醒的是,只有管理员对URL解析非常熟悉的情况下才可以将其设置为0;默认为1;
VerifyNormalization:如果设置为1,UrlScan将校验URL规则,默认为1;此节设定与NormalizeUrlBeforeScan有关;
AllowHighBitCharacters:如果设置为1,将允许URL中存在所有字节,如果为0,含有非ASCII字符的URL将拒绝;默认为1;
AllowDotInPath:如果设置为1,将拒绝所有含有多个"."的URL请求,由于URL检测在IIS解析URL之前,所以,对这一检测的准确性不能保证,默认为0;
RemoveServerHeader:如果设置为1,将把所有应答的服务头清除,默认为0;
(2)[AllowVerbs]节配置
如果UseAllowVerbs设置为1,此节设置的所有请求将被允许,一般设置以下请求:
GET、HEAD、POST
(3)[DenyVerbs]节配置
如果UseAllowVerbs设置为0,此节设置的所有请求将拒绝,一般设置以下请求:
PROPFIND、PROPPATCH、MKCOL、delete、PUT、COPY、MOVE、LOCK、UNLOCK
(4)[AllowExtensions]节设置
在这一节设置的所有扩展名文件将被允许请求,一般设置以下请求:
.asp、.htm、.html、.txt、.jpg、.jpeg、.gif,如果需要提供文件下载服务,需要增加.rar、.zip
(5)[DenyExtensions]节设置
在这一节设置的所有扩展名文件请求将被拒绝,根据已经发现的漏洞,我们可以在这一节增加内容,一般为以下设置:
.asa、可执行文件、批处理文件、日志文件、罕见扩展如:shtml、.printer等。
三、总结
以上两个工具功能强大,可以真正实现对IIS的保护。IIS Lock Tool简单,相对而言,只是被动的防卫;UrlScan设置比较难,建议对IIS非常熟悉的管理员使用,只要设置得当,UrlScan的功能更加强大。在使用UrlScan的时候,切记不要设置一次万事大吉,需要不停跟踪新出现的漏洞,随时修改URLScan的配置文件。
3。高级篇:NT/2000的高级安全设置
1.禁用空连接,禁止匿名获得用户名列表
Win2000的默认安装允许任何用户通过空用户得到系统所有账号/共享列表,这个本来是为了方便局域网用户共享文件的,但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码。很多朋友都知道可以通过更改注册表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1来禁止139空连接,实际上win2000的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项RestrictAnonymous(匿名连接的额外限制),这个选项有三个值: 0:None. Rely on default permissions(无,取决于默认的权限 1 :Do not allow enumeration of SAM accounts and shares(不允许枚举SAM帐号和共享) 2:No access without explicit anonymous permissions(没有显式匿名权限就不允许访问) 0这个值是系统默认的,什么限制都没有,远程用户可以知道你机器上所有的账号、组信息、共享目录、网络传输列表(NetServerTransportEnum等等,对服务器来说这样的设置非常危险。 1这个值是只允许非NULL用户存取SAM账号信息和共享信息。 2这个值是在win2000中才支持的,需要注意的是,如果你一旦使用了这个值,你的共享估计就全部完蛋了,所以我推荐你还是设为1比较好。 好了,入侵者现在没有办法拿到我们的用户列表,我们的账户安全了
2。禁止显示上次登陆的用户名HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon项中的Don't Display Last User Name串数据改成1,这样系统不会自动显示上次的登录用户名。将服务器注册表HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\
WindowsNT\CurrentVersion\Winlogon项中的Don't Display Last User Name串数据修改为1,隐藏上次登陆控制台的用户名。其实,在2000的本地安全策略中也存在该选项
Winnt4.0修改注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon 中增加DontDisplayLastUserName,将其值设为1。
2.预防DoS:
在注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中更改以下值可以帮助你防御一定强度的DoS攻击 SynAttackProtect REG_DWORD 2
EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1
EnableDeadGWDetect REG_DWORD 0 KeepAliveTime REG_DWORD 300,000
PerFORMRouterDiscovery REG_DWORD 0 EnableICMPRedirects REG_DWORD 0
在Win2000中如何关闭ICMP(Ping)
3.针对ICMP攻击
ICMP的全名是Internet Control and Message Protocal即因特网控制消息/错误报文协议,这个协议主要是用来进行错误信息和控制信息的传递,例如著名的Ping和Tracert工具都是利用ICMP协议中的ECHO request报文进行的(请求报文ICMP ECHO类型8代码0,应答报文ICMP ECHOREPLY类型0代码0)。
ICMP协议有一个特点---它是无连结的,也就是说只要发送端完成ICMP报文的封装并传递给路由器,这个报文将会象邮包一样自己去寻找目的地址,这个特点使得ICMP协议非常灵活快捷,但是同时也带来一个致命的缺陷---易伪造(邮包上的寄信人地址是可以随便写的),任何人都可以伪造一个ICMP报文并发送出去,伪造者可以利用SOCK_RAW编程直接改写报文的ICMP首部和IP首部,这样的报文携带的源地址是伪造的,在目的端根本无法追查,(攻击者不怕被抓那还不有恃无恐?)根据这个原理,外面出现了不少基于ICMP的攻击软件,有通过网络架构缺陷制造ICMP风暴的,有使用非常大的报文堵塞网络的,有利用ICMP碎片攻击消耗服务器CPU的,甚至如果将ICMP协议用来进行通讯,可以制作出不需要任何TCP/UDP端口的木马(参见揭开木马的神秘面纱三)......既然ICMP协议这么危险,我们为什么不关掉它呢?
我们都知道,Win2000在网络属性中自带了一个TCP/IP过滤器,我们来看看能不能通过这里关掉ICMP协议,桌面上右击网上邻居->属性->右击你要配置的网卡->属性->TCP/IP->高级->选项->TCP/IP过滤,这里有三个过滤器,分别为:TCP端口、UDP端口和IP协议,我们先允许TCP/IP过滤,然后一个一个来配置,先是TCP端口,点击"只允许",然后在下面加上你需要开的端口,一般来说WEB服务器只需要开80(www),FTP服务器需要开20(FTP Data),21(FTP Control),邮件服务器可能需要打开25(SMTP),110(POP3),以此类推......接着是UDP,UDP协议和ICMP协议一样是基于无连结的,一样容易伪造,所以如果不是必要(例如要从UDP提供DNS服务之类)应该选择全部不允许,避免受到洪水(Flood)或碎片(Fragment)攻击。最右边的一个编辑框是定义IP协议过滤的,我们选择只允许TCP协议通过,添加一个6(6是TCP在IP协议中的代码,IPPROTO_TCP=6),从道理上来说,只允许TCP协议通过时无论UDP还是ICMP都不应该能通过,可惜的是这里的IP协议过滤指的是狭义的IP协议,从架构上来说虽然ICMP协议和IGMP协议都是IP协议的附属协议,但是从网络7层结构上ICMP/IGMP协议与IP协议同属一层,所以微软在这里的IP协议过滤是不包括ICMP协议的,也就是说即使你设置了"只允许TCP协议通过",ICMP报文仍然可以正常通过,所以如果我们要过滤ICMP协议还需要另想办法。
刚刚在我们进行TCP/IP过滤时,还有另外一个选项:IP安全机制(IP Security),我们过滤ICMP的想法就要着落在它身上。
打开本地安全策略,选择IP安全策略,在这里我们可以定义自己的IP安全策略。一个IP安全过滤器由两个部分组成:过滤策略和过滤操作,过滤策略决定哪些报文应当引起过滤器的关注,过滤操作决定过滤器是"允许"还是"拒绝"报文的通过。要新建IP安全过滤器,必须新建自己的过滤策略和过滤操作:右击本机的IP安全策略,选择管理IP过滤器,在IP过滤器管理列表中建立一个新的过滤规则:ICMP_ANY_IN,源地址选任意IP,目标地址选本机,协议类型是ICMP,切换到管理过滤器操作,增加一个名为Deny的操作,操作类型为"阻止"(Block)。这样我们就有了一个关注所有进入ICMP报文的过滤策略和丢弃所有报文的过滤操作了。需要注意的是,在地址选项中有一个镜像选择,如果选中镜像,那么将会建立一个对称的过滤策略,也就是说当你关注any IP->my IP的时候,由于镜像的作用,实际上你也同时关注了my IP->any IP,你可以根据自己的需要选择或者放弃镜像。再次右击本机的IP安全策略,选择新建IP过滤策略,建立一个名称为ICMP Filter的过滤器,通过增加过滤规则向导,我们把刚刚定义的ICMP_ANY_IN过滤策略指定给ICMP Filter,然后在操作选框中选择我们刚刚定义的Deny操作,退出向导窗口,右击ICMP Filter并启用它,现在任何地址进入的ICMP报文都会被丢弃了。
虽然用IP sec能够对ICMP报文进行过滤,不过操作起来太麻烦,而且如果你只需要过滤特定的ICMP报文,还要保留一些常用报文(如主机不可达、网络不可达等),IP sec策略就力不从心了,我们可以利用Win2000的另一个强大工具路由与远程访问控制(Routing & Remote Access)来完成这些复杂的过滤操作。
路由与远程访问控制是Win2000用来管理路由表、配置VPN、控制远程访问、进行IP报文过滤的工具,默认情况下并没有安装,所以首先你需要启用它,打开"管理工具"->"路由与远程访问",右击服务器(如果没有则需要添加本机)选择"配置并启用路由及远程访问",这时配置向导会让你选择是什么样的服务器,一般来说,如果你不需要配置VPN服务器,那么选择"手动配置"就可以了,配置完成后,主机下将出现一个IP路由的选项,在"常规"中选择你想配置的网卡(如果你有多块网卡,你可以选择关闭某一块的ICMP),在网卡属性中点击"输入筛选器",添加一条过滤策略"from:ANY to:ANY 协议:ICMP 类型:8 :编码:0 丢弃"就可以了(类型8编码0就是Ping使用的ICMP_ECHO报文,如果要过滤所有的ICMP报文只需要将类型和编码都设置为255)
细心的朋友刚才可能已经发现,在输入、输出过滤器的下面,还有一个"碎片检查"功能,这个功能使用来应付IP碎片攻击的,这已经超出了本文所讨论的范围,我会在以后的拒绝服务攻击的文章中继续和大家一起探讨的。Win2000的路由及远程访问是一个功能非常强大的工具集
4.改变windows系统的一些默认值(例如:数据包的生存时间(TTL)值,不同系统有不同的值,有经验的人可以根据TTL的不同的值判断对方使用的是何种操作系统(例如windows 2000默认值128),我改改改,看你怎么看)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)
说明:指定传出IP数据包中设置的默认生存时间(TTL)值.TTL决定了IP数据包在到达
目标前在网络中生存的最大时间.它实际上限定了IP数据包在丢弃前允许通过的路由
器数量.有时利用此数值来探测远程主机操作系统.
5.防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnableICMPRedirects REG_DWORD 0x0(默认值为0x1)
说明:该参数控制Windows 2000是否会改变其路由表以响应网络设备(如路由器)发送给它的ICMP重定向消息,有时会被利用来干坏事.Win2000中默认值为1,表示响应ICMP重定向报文.
6.禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
PerFORMRouterDiscovery REG_DWORD 0x0(默认值为0x2)
说明:"ICMP路由公告"功能可造成他人计算机的网络连接异常,数据被窃听,计算机被用于流量攻击等严重后果.此问题曾导致校园网某些局域网大面积,长时间的网络异常.因此建议关闭响应ICMP路由通告报文.Win2000中默认值为2,表示当DHCP发送路由器发现选项时启用
7.防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
SynAttackProtect REG_DWORD 0x2(默认值为0x0)
说明:SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的时
间.路由缓存项资源分配延迟,直到建立连接为止.如果synattackprotect=2,
则AFD的连接指示一直延迟到三路握手完成为止.注意,仅在TcpMaxHalfOpen和
TcpMaxHalfOpenRetried设置超出范围时,保护机制才会采取措施.
8.禁止C$、D$一类的缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
AutoShareServer、REG_DWORD、0x0
9.禁止ADMIN$缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
AutoShareWks、REG_DWORD、0x0
10.限制IPC$缺省共享
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
restrictanonymous REG_DWORD 0x0 缺省
0x1 匿名用户无法列举本机用户列表
0x2 匿名用户无法连接本机IPC$共享
说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server
11.不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
IGMPLevel REG_DWORD 0x0(默认值为0x2)
说明:记得Win9x下有个bug,就是用可以用IGMP使别人蓝屏,修改注册表可以修正这个
bug.Win2000虽然没这个bug了,但IGMP并不是必要的,因此照样可以去掉.改成0后用
route print将看不到那个讨厌的224.0.0.0项了.
12.设置arp缓存老化时间设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
ArpCacheLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)
ArpCacheMinReferencedLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为600)
说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP缓存项在ArpCacheLife秒后到期.如果ArpCacheLife小于阿ARPCacheMinReferencedLife,未引用项在ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期.每次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项。
13.禁止死网关监测技术
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
EnableDeadGWDetect REG_DWORD 0x0(默认值为ox1)
说明:如果你设置了多个网关,那么你的机器在处理多个连接有困难时,就会自动改用备份网关.有时候这并不是一项好主意,建议禁止死网关监测.
14.不支持路由功能
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
IPEnableRouter REG_DWORD 0x0(默认值为0x0)
说明:把值设置为0x1可以使Win2000具备路由功能,由此带来不必要的问题.
15.做NAT时放大转换的对外端口最大值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters
MaxUserPort REG_DWORD 5000-65534(十进制)(默认值0x1388--十进制为5000)
说明:当应用程序从系统请求可用的用户端口数时,该参数控制所使用的最大端口数.正常情况下,短期端口的分配数量为1024-5000.将该参数设置到有效范围以外时,就会使用最接近的有效数值(5000或65534).使用NAT时建议把值放大点.
16.修改MAC地址
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
找到右窗口的说明为"网卡"的目录,
比如说是{4D36E972-E325-11CE-BFC1-08002BE10318}
展开之,在其下的0000,0001,0002...的分支中找到"DriverDesc"的键值为你网卡的说明,比如说"DriverDesc"的值为"Intel(R) 82559 Fast Ethernet LAN on Motherboard"然后在右窗口新建一字符串值,名字为"Networkaddress",内容为你想要的MAC值,比如说是"004040404040"然后重起计算机,ipconfig /all看看.
17.防止密码被DUMP,你只需在服务里面关掉Remote regisitery services
http://siyizhu.com/blogview.asp?logID=312