xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
添加文章 English Version

基于NT/2000建立安全WEB站点的解决方案


创建时间:2002-04-01
文章属性:整理
文章提交:WarnRay (WarnRay_at_MSN.com)

用NT(2000)建立的WEB站点在所有的网站中占了很大一部分比例,但NT的安全问题也一直比较突出,使得一些每个基于NT的网站都有一种如履薄冰的感觉,然而微软并没有明确的坚决方案,只是推出了一个个补丁程序,各种安全文档上对于NT的安全描述零零碎碎,给人们的感觉是无所适从。于是,有的网管干脆什么措施也不采取,有的忙着下各种各样的补丁程序,有的在安装了防火墙以后就以为万事大吉了。这种现状直接导致了大量网站的NT安全性参差不齐。只有极少数NT网站有较高的安全性,大部分网站的安全性很差。为此,瑞星公司决心对NT主要漏洞予以搜集整理,同时,站在整体的高度,力图找出一套用NT建立安全站点的解决方案来,让用户放心使用NT(2000)建立WEB站点。
解决方案:(说明:本方案主要是针对建立Web站点的NT、2000服务器安全,对于局域网内的服务器并不合适。)

一、 安装:

不论是NT还是2000,硬盘分区均为NTFS分区;
说明:
(1) NTFS比FAT分区多了安全控制功能,可以对不同的文件夹设置不同的访问权限,安全性增强。
(2) 建议最好一次性全部安装成NTFS分区,而不要先安装成FAT分区再转化为NTFS分区,这样做在安装了SP5和SP6的情况下会导致转化不成功,甚至系统崩溃。
(3) 安装NTFS分区有一个潜在的危险,就是目前大多数反病毒软件没有提供对软盘启动后NTFS分区病毒的查杀,这样一旦系统中了恶性病毒而导致系统不能正常启动,后果就比较严重,因此及建议平时做好防病毒工作。

只安装一种操作系统;
说明:安装两种以上操作系统,会给黑客以可乘之机,利用攻击使系统重启到另外一个没有安全设置的操作系统(或者他熟悉的操作系统),进而进行破坏。

安装成独立的域控制器(Stand Alone),选择工作组成员,不选择域;
说明:主域控制器(PDC)是局域网中队多台联网机器管理的一种方式,用于网站服务器包含着安全隐患,使黑客有可能利用域方式的漏洞攻击站点服务器。

将操作系统文件所在分区与WEB数据包括其他应用程序所在的分区分开,并在安装时最好不要使用系统默认的目录,如将\WINNT改为其他目录;
说明:黑客有可能通过WEB站点的漏洞得到操作系统对操作系统某些程序的执行权限,从而造成更大的破坏。

安装操作系统最新的补丁程序,NT目前为SP6,2000目前为SP2;在NT下,如果安装了补丁程序,以后如果要从NT光盘上安装新的Windows程序,都要重新安装一次补丁程序, 2000下不需要这样做。
说明:

(1) 最新的补丁程序,表示系统以前有重大漏洞,非补不可了,对于局域网内服务器可以不是最新的,但站点必须安装最新补丁,否则黑客可能会利用低版本补丁的漏洞对系统造成威胁。这是一部分管理员较易忽视的一点;
(2) 安装NT的SP5、SP6有一个潜在威胁,就是一旦系统崩溃重装NT时,系统将不会认NTFS分区,原因是微软在这两个补丁中对NTFS做了改进。只能通过Windows 2000安装过程中认NTFS,这样会造成很多麻烦,建议同时做好数据备份工作。
(3) 安装Service Pack前应先在测试机器上安装一次,以防因为例外原因导致机器死机,同时做好数据备份。

尽量不安装与WEB站点服务无关的软件;
说明:其他应用软件有可能存在黑客熟知的安全漏洞。

二、 NT设置:

帐号策略:
(1)帐号尽可能少,且尽可能少用来登录;
说明:网站帐号一般只用来做系统维护,多余的帐号一个也不要,因为多一个帐号就会多一份被攻破的危险。
(2)除过Administrator外,有必要再增加一个属于管理员组的帐号;
说明:两个管理员组的帐号,一方面防止管理员一旦忘记一个帐号的口令还
有一个备用帐号;另方面,一旦黑客攻破一个帐号并更改口令,我们还有
有机会重新在短期内取得控制权。
(3)所有帐号权限需严格控制,轻易不要给帐号以特殊权限;
(4)将Administrator重命名,改为一个不易猜的名字。其他一般帐号也应尊
循着一原则。
说明:这样可以为黑客攻击增加一层障碍。
(5)将Guest帐号禁用,同时重命名为一个复杂的名字,增加口令,并将它从
Guest组删掉;
说明:有的黑客工具正是利用了guest 的弱点,可以将帐号从一般用户提
升到管理员组。
(6)给所有用户帐号一个复杂的口令(系统帐号出外),长度最少在8位以上, 且必须同时包含字母、数字、特殊字符。同时不要使用大家熟悉的单词(如microsoft)、熟悉的键盘顺序(如qwert)、熟悉的数字(如2000)等。
说明:口令是黑客攻击的重点,口令一旦被突破也就无任何系统安全可言了,而这往往是不少网管所忽视的地方,据我们的测试,仅字母加数字的5位口令在几分钟内就会被攻破,而所推荐的方案则要安全的多。
(7)口令必须定期更改(建议至少两周该一次),且最好记在心里,除此以外不要在任何地方做记录;另外,如果在日志审核中发现某个帐号被连续尝试,则必须立刻更改此帐号(包括用户名和口令);
(8)在帐号属性中设立锁定次数,比如改帐号失败登录次数超过5次即锁定改帐号。这样可以防止某些大规模的登录尝试,同时也使管理员对该帐号提高警惕。

解除NetBios与TCP/IP协议的绑定
说明:NetBois在局域网内是不可缺少的功能,在网站服务器上却成了黑客扫描工具的首选目标。方法:NT:控制面版——网络——绑定——NetBios接口——禁用 2000:控制面版——网络和拨号连接——本地网络——属性——TCP/IP——属性——高级——WINS——禁用TCP/IP上的NETBIOS

删除所有的网络共享资源
说明: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共享仍存在,需每次重启后手工删除。

改NTFS的安全权限;
说明:NTFS下所有文件默认情况下对所有人(EveryOne)为完全控制权限,这使黑客有可能使用一般用户身份对文件做增加、删除、执行等操作,建议对一般用户只给予读取权限,而只给管理员和System以完全控制权限,但这样做有可能使某些正常的脚本程序不能执行,或者某些需要写的操作不能完成,这时需要对这些文件所在的文件夹权限进行更改,建议在做更改前先在测试机器上作测试,然后慎重更改。

系统启动的等待时间设置为0秒,控制面板->系统->启动/关闭,然后将列表显示的默认值“30”改为“0”。(或者在boot.ini里将TimeOut 的值改为0)

只开放必要的端口,关闭其余端口。
说明:缺省情况下,所有的端口对外开放,黑客就会利用扫描工具扫描那些端口可以利用,这对安全是一个严重威胁。
现将一些常用端口列表如下:

端口 协议 应用程序
21 TCP FTP
25 TCP SMTP
53 TCP DNS
80 TCP HTTP SERVER
1433 TCP SQL SERVER
5631 TCP PCANYWHERE
5632 UDP PCANYWHERE
6(非端口) IP协议
8(非端口) IP协议
加强日志审核;
说明:日志任何包括事件查看器中的应用、系统、安全日志,IIS中的WWW、SMTP、FTP日志、SQL SERVER日志等,从中可以看出某些攻击迹象,因此每天查看日志是保证系统安全的必不可少的环节。安全日志缺省是不记录,帐号审核可以从域用户管理器——规则——审核中选择指标;NTFS中对文件的审核从资源管理器中选取。要注意的一点是,只需选取你真正关心的指标就可以了,如果全选,则记录数目太大,反而不利于分析;另外太多对系统资源也是一种浪费。

加强数据备份;
说明:这一点非常重要,站点的核心是数据,数据一旦遭到破坏后果不堪设想,而这往往是黑客们真正关心的东西;遗憾的是,不少网管在这一点上作的并不好,不是备份不完全,就是备份不及时。数据备份需要仔细计划,制定出一个策略并作了测试以后才实施,而且随着网站的更新,备份计划也需要不断地调整。


只保留TCP/IP协议,删除NETBEUI、IPX/SPX协议;
说明:网站需要的通讯协议只有TCP/IP,而NETBEUI是一个只能用于局域网的协议,IPX/SPX是面临淘汰的协议,放在网站上没有任何用处,反而会被某些黑客工具利用。

停掉没有用的服务,只保留与网站有关的服务和服务器某些必须的服务。
说明:有些服务比如RAS服务、Spooler服务等会给黑客带来可乘之机,如果确实没有用处建议禁止掉,同时也能节约一些系统资源。但要注意有些服务是操作系统必须的服务,建议在停掉前查阅帮助文档并首先在测试服务器上作一下测试。


隐藏上次登录用户名,修改注册表Winnt4.0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon 中增加DontDisplayLastUserName,将其值设为1。Windows2000中该项已经存在,只需将其值改为1。
说明:缺省情况下,上次登录的用户名会出现在登录框中,这就为黑客猜测口令提供了线索,最好的方式就是隐藏上次登录用户名。

不要起用IP转发功能,控制面板->网络->协议->TCP/IP协议->属性,使这个选框为空。(NT)
说明:缺省情况下,NT的IP转发功能是禁止的,但注意不要启用,否则它会具有路由作用,被黑客利用来对其他服务器进行攻击。

安装最新的MDAC(http://www.microsoft.com/data/download.htm
说明:MDAC为数据访问部件,通常程序对数据库的访问都通过它,但它也是黑客攻击的目标,为防止以前版本的漏洞可能会被带入升级后的版本,建议卸载后安装最新的版本。注意:在安装最新版本前最好先做一下测试,因为有的数据访问方式或许在新版本中不再被支持,这种情况下可以通过修改注册表来档漏洞,祥见漏洞测试文档。
三、 IIS设置(包括IIS 4.0和IIS5.0)

只安装Optoin Pack中必须的服务,建议不要安装Index Server、FrontPage Server Extensions、示例WWW站点等功能(NT)。Windows 2000中作类似设置。
说明:IIS中的众多安全隐患是由一些其他的功能引起的,如果仅做一个WWW站点,就需要安装必须的服务,如WWW服务、FTP服务,这样减少黑客利用这些漏洞攻击的机会。

停止默认的FTP站点、默认的Web站点、管理Web站点,在新的目录下新建WWW服务与FTP服务。
说明:默认的站点与管理Web站点含有大量有安全漏洞的文件,极易给黑客造成攻击机会。具体漏洞见所附安全文档。因此,必须禁止。同时,应该在新的目录下建立服务,这个目录千万不要放在InetPub\wwwroot下,最好放在与它不同的分区下。

删除不必要的IIS扩展名映射。最好去掉 .IDC、.HTR、.STM、.IDA、.HTW应用程序映射,.shtml、.shtm等如果无用,也应去掉。
说明:上述应用程序映射,具有大量安全隐患。方法:NT(2000同):Web站点——属性——主目录——配置——应用程序映射

安装新的Service Pack后,IIS的应用程序映射应重新设置。
说明:安装新的Service Pack后,某些应用程序映射又会出现,导致出现安全漏洞。这是管理员较易忽视的一点。

设置IP拒绝访问列表
说明:对于WWW服务,可以拒绝一些对站点有攻击嫌疑的地址;尤其对于FTP服务,如果只是自己公司上传文件,就可以只允许本公司的IP访问改FTP服务,这样,安全性大为提高。

禁止对FTP服务的匿名访问
说明:如果允许对FTP服务做匿名访问,该匿名帐户就有可能被利用来获取更多的信息,以致对系统造成危害。

建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)
说明:作为一个重要措施,既可以发现攻击的迹象,采取预防措施,也可以作为受攻击的一个证据。

慎重设置WEB站点目录的访问权限,一般情况下,不要给予目录以写入和允许目录浏览权限。只给予.ASP文件目录以脚本的权限,而不要给与执行权限。
说明:目录访问权限必须慎重设置,否则会被黑客利用。
四、 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的。
五、 SQL SERVER的安全

SQL SERVER是NT平台上用的最多的数据库系统,但是它的安全问题也必须引起重视。数据库中往往存在着最有价值的信息,一旦数据被窃后果不堪设想。

及时更新补丁程序。
说明:与NT一样,SQL SERVER的许多漏洞会由补丁程序来弥补。建议在安装补丁程序之前先在测试机器上做测试,同时提前做好目标服务器的数据备份。

给SA一个复杂的口令。
说明:SA具有对SQL SERVER数据库操作的全部权限。遗憾的是,一部分网管对数据库并不熟悉,建立数据库的工作由编程人员完成,而这部分人员往往只注重编写SQL 语句本身,对SQL SERVER数据库的管理不熟悉,这样很有可能造成SA口令为空。这对数据库安全是一个严重威胁。目前具有这种隐患的站点不在少数。

严格控制数据库用户的权限,轻易不要给让用户对表有直接的查询、更改、插入、删除权限,可以通过给用户以访问视图的权限,以及只具有执行存储过程的权限。
说明:用户如果对表有直接的操作权限,就会存在数据被破坏的危险。

制订完整的数据库备份与恢复策略。
六、 PCANYWHERE的安全:

目前,PCANYWHERE是最流行的基于NT与2000的远程控制工具,同样也需要注意安全问题。

建议采用单独的用户名与口令,最好采用加密手段。千万不要采用与NT管理员一样的用户名与口令,也不要使用与NT集成的口令。
说明:PCANYWHERE 口令是远程控制的第一个关口,如果与NT的一样, 就失去了安全屏障。被攻破后就毫无安全可言。而如果采用单独的口令,即使攻破了PCANYWHERE,NT还有一个口令屏障。
及时安装较新的版本。