下载第 24章 服务器防护现在应该已经建立了自己的 We b应用程序,可以轻松地部署它,然后坐下来休息。但是还有些因素需要认真考虑。如果恶作剧的黑客闯入了刚刚建立的 i n t r a n e t,并把职员的私人信息发送给公司的每个职员,将会产生什么后果?必须防止这种情况发生。
实际上,i n t r a n e t或 I n t e r n e t上的代码和信息的安全问题,应该是任何一个 We b开发者优先考虑的问题。在 I n t e r n e t上,即使是不大熟练的黑客使用自动黑客工具攻击一个网站也是一件很简单的事情。不用关心自己为什么会成为黑客们攻击的目标,但做好防范,至少可以在家里安稳地睡觉。
安全问题只有一小部分是开发者的责任,其实更应该是开发者和系统管理员共同的责任,
所以这两种人应该详细地阅读本章。开发者和系统管理员应该共同在系统上为雇员和在线顾客提供可能达到的最高水平的安全。通过服务器各方面的操作,如操作系统、磁盘访问、
I n t e r n e t协议,防火墙等等,保证你拥有一个安全和具有防护功能的计算机系统。
本章将讨论以下内容:
安全的定义。
安全策略。
Windows 2000的安全防护问题。
防火墙和代理服务器。
IIS 5.0的安全问题。
SQL Server 7.0和 O B J C O N N C安全问题。
ASP应用程序的安全问题。
注意,Window 2000的一般管理知识和其安全概念是理解本章的基础。
24.1 安全的定义在计算机安全的很多定义中,最适合的定义将其描述为防御攻击、阻止偷窃和未经授权的泄密行为的能力水平。
我们可能从来没有遇到过攻击,更多的时候是某些人试着从系统中窃取一些资料。文档和计算机资源是黑客的猎物之一。但是更多的黑客从高速的 I n t e r n e t连接闯入,并利用我们的服务器和网络在 I n t e r n e t上攻击其他的网络和系统。黑客不是想对其他公司报复就是想知道他们是否具有这个能力。
在 A S P应用程序范围内,安全是通过使用 S S L或其他方法,防止口令和重要信息被泄露。
一些人有足够的理由来窃取这些信息,所以必须保护我们的网站。在网站上,像信用卡号码那样的重要信息是应重点关注的。例如,在电子商务交易站上,可能有极其重要的信息。
24.1.1 Internet上的安全问题
I n t e r n e t的安全问题,主要是黑客用各种方法截取基本的数据包数据,使用“不好”的口第 2 4章 服务器防护 计计 727下载令 (很容易猜出的 )访问系统,等等。尽管这种威胁看来势不可挡,但可以采取一些方法来保护安全结构设计较差的网络系统。管理员必须主动地研究所用产品的 I n t e r n e t安全特性。如果做好预防工作,就能在 I n t e r n e t上构建一个安全的系统。
测试 ASP We b站点的安全程序的最好方法是,在服务器还在开发阶段而没有正式投入到
I n t e r n e t之前,自己尝试着闯入破坏它。测试网站是否具有防止“拒绝服务”攻击的能力;测试所设置的访问控制的综合能力。最好定期访问那些提供最新黑客工具和自动攻击软件的网站,例如:
http://www,r o o t s h e l l,c o m
http://www,h a c k e r s,c o m
http://www,d a r k - s e c r e t s,c o m
1,恶意攻击和破坏最近恶意的在线破坏仿佛要成为一种趋势。这种做法相当标准,攻击者窃取口令或找到其他的方法进入你的系统,并把你的站点弄得面目全非。幸运的是我们可以很容易地清除
“在线涂改”,并且改变口令以防止重复攻击,但最主要的事情是使自己的口令保密。下一章将研究加密方法。
破坏者也可以用 F T P和 t e l n e t闯入你的系统。因此,除非是必须的,否则就不要提供这些服务。除非使用第三方软件,否则 Windows 2000不支持 t e l n e t和远程控制台访问。所以,
Windows 2000使用者只需要考虑有关 F T P的安全问题。如果服务器是内部的,应该用一个光盘驱动器或其他形式的介质升级你的网站。从长远观点来看,这种额外的努力是很值得的。
2,假冒和 I P欺骗在 I n t e r n e t上最大的问题之一就是假冒,即攻击者以别人的身份进入你的系统。对于那些使用 I P和用户身份验证的服务器来说,这是个大问题。
让我们来研究一下 I P。它是 T C P / I P的一部分。 I P由四个层次组成,如表 2 4 - 1所示。
表 24-1 IP的四个层次层 次 说 明源端主机 (Source Host) 产生数据包 ( p a c k e t,数据的单位 )的主机源端端口 (Source Port) 发出数据包的端口目的端主机 (Destination Host) 数据包接收端主机目的端口 (Destination Host) 数据包接收端口在我们讨论“假冒”问题时,源端主机是需要重点研究的一个层次。它是信息块 — 也就是所谓的“包” ( p a c k e t )— 的来源,是信息的起始端。如果能用自己的数据包假冒源端主机的数据包,就能使主机相信它们来自被假冒的地址。这种技术就称为,I P欺骗” ( I P
s p o o f i n g )。在网络上,攻击者用这种方法伪装成受信任的主机。事实上,大多数拒绝服务攻击是用这种方法掩盖自己的起始地址。
不要完全相信自己的网络是很可靠的,但这不应归责于 I P,因为它唯一的目的就是提供 4
个层次,使路由器知道向何处发送数据包,没有提供检查的方法。一个反假冒的手段就是使用防火墙检查数据包是否确实来自它声称的源端主机。虽然对于 I P欺骗,防火墙不是万无一失的。但一个法则是配置你的路由器,使其丢弃那些声称来自你的网络的入站数据包。丢弃声称不是来自你的网络的出站数据包,可以防止自己的职员攻击其他网络。
3,不要成为攻击者
I P欺骗和假冒能使你的服务器处在危险之中,但这也意味着你的机器能在无意中成为攻击其他主机的帮凶。其原因相当深奥,但其逻辑非常简单。攻击的前提是目标服务器出现时正在使用广播 I C M P回应请求。它能访问网络上所有机器来 p i n g某一主机。如果攻击者假冒一个主机并将这些回应请求发送到你的网络和另外的一个网络。尽管被假冒的主机实际上没有请求它们,但两个网络上的所有机器都会回应它。如果你有十台服务器,另一个网络也有同样多的服务器,这样目标主机就会收到 2 0个不必要的回应数据包,向不知情的网络重复发送大容量的 I C M P回应请求数据包,最终将导致目标服务器断开连接。
这就是网络中面临的服务器防护问题。为了防止自己的网络在无意中成为攻击的帮凶,
就要确保你的路由器和计算机不应答广播 I C M P回应请求。
24.1.2 安全策略系统 (网络 )管理员应经常做的事情是维护一个最新的安全策略。大多数用户没有认识到交换口令和他们认为不重要的其他信息能引起系统 (或公司 )潜在的安全漏洞。
通过建立安全策略,管理员可以保护他们的用户和自己的安全。用户应被告知,如果他们不能执行这个策略,对系统应负的责任和可能产生的潜在问题。同时这个策略也适用于系统管理员。
安全策略必须落实,并由制定者强制执行。如果用户不能遵守这个策略,应采取相应的行动。这些规则必须严格执行。
1,安全策略剖析制定一个策略后,你很快将认识到有比人们预期的多得多的内容要加入到安全策略中。
对整个系统有详尽的规范,覆盖的问题有备份策略、系统访问、维护、软件版本、操作系统版本和日志文件的检查。
为了容易理解,可以把策略分成三部分。
用户需求
经理责任
管理员的责任
2,用户需求在系统上设置一个新的安全策略,对于系统管理员来说是不轻松的。如果在系统安全策略的严密性上过分苛刻,你将很快就成为所有用户都讨厌的人。另一方面,如果在严密性上放松要求,这个策略就不能发挥相应的作用。我们的目标是在与用户保持和谐关系的同时,
制定一个有效的安全策略。
下面的一些问题需要认真考虑的:
用户需要访问哪些系统?
每个用户都需要什么种类的访问?是完全的读写访问还是尽可能少的访问?匿名的用户怎样使用系统?
什么时间用户可以访问系统?因为大部分的安全问题都发生在工作时间以外,所以限定时间是一个好办法。
需要用户名和口令验证吗?如果需要,将要制定一些选择口令的规则,这些规则确保不
728计计 ASP 3 高级编程 下载把口令写在明处,并不使口令泄露。对在家通过调制解调器和 I S D N拨号上网的用户要制定相应的计划。
是否需要基于 I P的验证?识别用户计算机的 I P地址与识别用户的名字和口令一样能为那些需要它的系统区域建立额外的安全保护。
对那些特殊的用户是否进行合理的分组?例如:金融部门的用户需要访问金融方面的记录,销售部门的用户需要特定的产品信息,后勤部门的用户需要的可能是另一种类型的产品信息。
系统的某个区域是否需要某种程度的加密?例如,在 a m a z o n,c o m站点上不需要对书的相关信息进行防护,但必须对填写信用卡信息的区域提供加密。
安全模型的处理是否处于应用程序层上?在开发阶段,这对于所有的用户甚至是匿名用户都是有用的,对系统能够进行完全的读写访问。但在正式使用时,这是这个潜在的安全漏洞。
谈及安全问题时,这些信息都是相关的,只要有可能,应该试着在各种层次上回答这些问题。显然我们并不希望基于 We b的应用程序在 I n t e r n e t上对用户开放时,再回答这些问题。应该尽早做出比较准确的估计。
3,经理责任通过说明需要落实的安全措施以及不遵守它时产生的安全风险,在一个组织内部,应该把一些网络责任归于经理的身上,下面是这样做的几个理由:
他们能在系统管理员、用户和开发者之间充当中间人,减轻执行安全策略对每个人产生的压力。
通过让他们理解规则方面的非专业术语,经理能有效地向其他人发布信息。
他们应该制定出如果不遵守规章要采取的措施。
不要忽略对管理方面任何问题的讨论,而且一定要全力支持为用户制定的规则。
4,系统管理员的责任如果对一个策略不进行相应的管理,那么该策略将是无效的,因此系统管理员也必须制定相应的规则。这包括:
如果发生中断,该怎么做?
如果用户不遵守规则,该怎么做?
如何建立新的用户帐号、新用户组策略、文件和目录权限等。
备份措施。备份介质的种类,执行备份的时间和形式 (完全的或递增的 ),备份存储的位置和应急恢复计划。
硬件维护。服务器如何更新?升级的时间和要升级哪些硬件设备 ( B I O S、网卡,还是其他的硬件 )
软件版本,如果可以从销售商得到一个新版本、服务包、升级包或补丁,系统管理员应当对是否使用它们做出理由充分的决定。在服务器上安装了什么东西的记录应当被保留。
操作系统和软件一样,任何一个新的或升级的 (或补丁 )的操作系统版本,在应用于服务器之前,都应在单独的机器上做严格的测试,唯一的不同是对操作系统的所有变化应该做最严格的测试。
为了知道用户是否在做他们应该做的事情,应该每天都检查日志文件,如果出现异常,
就要采取措施。
第 2 4章 服务器防护 计计 729下载
730计计 ASP 3 高级编程 下载
24.2 Windows 2000的防护在这部分,将研究防护自己的操作系统的方式,以保证不受一般性攻击的影响。也将研究有关与 I n t e r n e t不进行连接的专用网络的相关知识。具体将研究以下几个方面的内容:
硬盘格式。
创建访问控制列表 (Access Control List,A C L )。
子系统删除 ( r e m o v a l )。
删除不必要的网络服务。
限制网络访问。
TCP/IP过滤。
以上几方面的问题决定网络的安全程度。本节的目标是建立一系列防护 I n t e r n e t网站的安全措施,防止破坏网络安全。
24.2.1 磁盘格式在 Windows 2000中,有三种不同的文件系统格式,FAT,FAT 3 2和 N T F S。每一种格式都与微软公司的操作系统有不同程度的兼容性。对于大多数安全的站点,应该立即略过这一部分并选择使用 Windows 2000支持的 N T F S的最新版本 ( N T F S 5 ),它提供了 FAT和 FAT 3 2所没提供的下列安全特性:
访问控制列表 (Access Control List):对对象、文件及文件夹进行访问控制。 A C L包括详细记录,指出用户对文件和对象有什么访问权限。
磁盘配额 (Disk Quota):管理员可以监视和限制提供给用户使用的磁盘空间的大小。因此,也能防止硬盘被填满。
加密的文件 (Encrypted File):进一步的加密。当文件和信息被保存到磁盘时,N T F S能加密敏感文件和信息。
正如你所看到的那样,要建立一个安全的 I n t e r n e t网络服务器,N T F S文件系统是非常好的选择。如果你拥有有多个 Wi n d o w s操作系统的网络,或负担不起升级的费用,应考虑如何设置系统。
1,跨操作系统的兼容性并不每个 Wi n d o w s版本都支持所有类型的文件系统,但网络共享可以解决这个问题:
Windows 2000支持 NTFS 5,NTF 4,FAT 3 2和 FAT。
Windows NT 4支持 NTFS 4和 FAT。
Windows 98支持 FAT 3 2和 FAT。
Windows 95,D O S和 O S / 2仅支持 FAT。
2,磁盘和文件容量每种文件系统也对文件、磁盘和分区的大小有不同的限制,例如:
FAT的分区不大于 2 G B。
FAT 3 2的分区不大于 2 T B,且一个文件不得超过 4 G B。
NTFS的分区不大于 2 T B,而且文件大小只受分区大小的限制,但它不能在软盘上使用。
24.2.2 Window 2000安全检查列表为了说明其余部分,将假定服务器使用 Windows 2000。要建立一个可以提供安全的
I n t e r n e t环境的服务器,下一步是创建一个检查列表。在我们继续之前,有一些事情要考虑。
以下建议的一部分要涉及改变系统注册表,如果不知道会发生什么后果,应该备份它。虽然在后面的部分中要做的没什么危险,但为了安全起见,首先应备份系统注册表。
1,设置服务器在域中的角色在 We b服务器上安装 Windows 2000时,选择不是域控制器。如果使用 Windows NT 4.0,
选择既不是域控制器,也不是备份域控制器的独立服务器,这将移除敏感的域信息,例如用户名和口令,使之不暴露到 I n t e r n e t。
(1) 磁盘格式化如前所述,N T F S提供了比 FAT和 FAT 3 2更多的安全特性,如果服务器中的一个驱动器已经用 FAT或 FAT 3 2格式化过,而且认为有必要改成 N T F S,可以用 c o n v e r t,e x e命令,过程很简单:
打开一个命令提示窗口。
键入 C:\>convert d:/fs,ntfs。
按照屏幕提示一步步进行。
注意这个过程不可逆转。
(2) 硬盘分区把网络服务器的硬盘分成多个分区是一个好方法。把所有的 We b文件都放在扩展分区或逻辑分区上,这样就算黑客能控制你的网站,但也无法控制你的主分区,因此他无法修改和损害任何系统文件 (因为所有系统文件都在主分区上 )。
(3) 最新服务包和 h o t - f i x
检查确定服务器上有符合自己安全策略的服务包和 h o t - f i x,检查安装在服务器上的所有软件在微软安全公告栏 (Microsoft Security Bulletins)上的相关信息,在 h t t p,/ / w w w,m i c r o s o f t,
c o m / s e u r i t y上可找到这些内容。
(4) NTFS 8.3命名格式
N T F S对 1 6位程序提供一些向下的兼容性,在需要时会自动生成 8,3格式文件名,例如:
P r o g r a ~ 1 / w o r d,e x e,但在安全的 I n t e r n e t环境中,这个功能应该关闭。要关闭这项功能,可以这样做:执行 S t a r t菜单中的 R u n,键入 r e g e d i t,并在注册表中编辑表 2 4 - 2所示的键值。
表 24-2 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n tCo n t r o l S e t \ C o n t r o l \ F i l e S y s t e m
名称 NtfsDisable8dot 3NameCreation
新值 1
注意,如此操作后,性能也会有所提高。
(5) 隐藏最后进入系统的用户名能在服务器控制台隐藏最后进入系统的用户的用户名,即使有很多的人使用它也很容易。
第 2 4章 服务器防护 计计 731下载
732计计 ASP 3 高级编程 下载两个键值控制着 Wi n d o w s的这个特殊功能。实际上,第一步是停止在 Wi n d o w s登录窗口中显示用户名字。键值修改如表 2 4 - 3所示。
表 24-3 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 D o n t D i s p l a y L a s t U s e r N a m e
新值 1
但是,登录窗口仍然显示由第二个键控制的默认用户名,可以把他设成空白或一个不存在的用户,如果在用户名框里显示一个伪造的用户名,会给服务器提供很大的安全。键值修改如表 2 4 - 4所示。
表 24-4 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 D e f a u l t U s e r N a m e
新值 设置成空白或其他的内容
(6) 显示一个合法的警告信息显示一个合法的警告信息,可以提醒一些人,并且也是系统获得 C 2安全认证所必须的 (仅在美国 )。这个认证由 N S A的 National Computer Security负责,表明这个服务器基本符合一个安全的操作系统的标准,要在登录窗口内显示一段合法警告,可在注册表中编辑如表 2 4 - 5、
表 2 4 - 6所示的键值。
表 24-5 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A C _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 L e g a l N o t i c e C a p t i o n
新值 要显示的信息窗口的标题表 24-6 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 L e g a l N o t i c e Te x t
新值 要显示的信息窗口的文本
(7) 检查登录窗口中“关闭”按钮的状态正如我们所知道的,不需进入系统,在登录窗口可以关闭 Windows 2000服务器。通过设置表 2 4 - 7所示的注册表键值避免这种情况的发生。
表 24-7 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 S h u t d o w n Wi t h o u t L o g o n
新值 0
(8) 禁止匿名的网络访问
Windows 2000允许未经验证的用户枚举在系统上的用户。通过编辑注册表来禁止这一功能,如表 2 4 - 8所示。
表 24-8 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ C o n t r o l \ L S A
名称 r e s t r i c t a n o n y m o u s
值 1
(9) 禁止自动共享网络共享
Windows 2000允许共享创建的网络驱动器并自动共享所有的驱动器,并在 C,\ w i n n t下创建一个 A D M I N S $共享。在一个标准的网络中,这是一个很好的特性,但由于多方面的安全原因,
不适合于一个安全的 I n t e r n e t环境。可以新建下列键来禁止这个功能。如表 2 4 - 9所示。
表 24-9 新建注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ L a n m a n S e r v e r \ P a r a m e t e r s
名称 A u t o S h a r e S e r v e r
值 1
(10) 检查注册表中对于远程访问的许可
Windows 2000支持对注册表的远程访问,我们应该使用 r e g e d t 3 2,而不是使用 r e g e d i t在下列键值上设置相应的许可。如表 2 4 - 1 0所示。
表 24-10 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ C o n t r o l \ S e c u r e P i p e S e r v e r s
名称 \ w i n r e g
点击工具栏上的 S e c u r i t y,并选择 P e r m i s s i o n s,将注意到管理员有完全的控制,B a c k u p
O p e r a t o r (备份操作员 )有读访问的权限。如果在本地的计算机上有备份软件则可删除这个读访问权限。如果远程备份软件没有备份注册表,也可删除它。
( 11) 给管理员的帐号改名第 2 4章 服务器防护 计计 733下载
734计计 ASP 3 高级编程 下载因为系统管理员对系统有最大的权限,所以黑客总是试着以管理员的身份攻击系统。为了防止这种情况发生,可以改变管理员的帐号,并且建立一个假帐号并禁止它没有任何访问权限。用下面简单的几步就可实现,在 S t a r t菜单中选择 P r o g r a m s│ Administrative To o l s│
Computer Management,在出现的对话框中选择 System To o l s│ Local Users and Groups│ U s e r s。
选择他并按 F 2,就可以修改管理员的帐号了。要建立一个假的管理员帐号,在 A c t i o n菜单中选 New User.,,,并命名帐号为 A d m i n i s t r a t o r,如图 2 4 - 1所示。
图 24-1 建立一个假的管理员帐号的窗口
(12) 禁止使用管理员工具有一些工具只有管理员能够使用。实施的最简单的方式是创建一个新的文件夹,如
c,\ a d m i n t o o l s,将相应的工具拷贝到该文件夹内,并设置文件夹的许可权限,使之仅能由
A d m i n i s t r a t o r和 S y s t e m帐号控制其内容。可在 Windows Explorer中右击文件夹,选择 P r o p e r t i e s
可得到文件夹的安全对话窗口。
下面是一些应该以上述方式保护的工具的列表。可根据自己的情况进行相应删减。
cmd.exe:给出可以运行系统任务的命令提示。
cscript.exe,Wi n d o w s脚本主机,用于在命令行中执行一个脚本。
ftp.exe:用于跨服务器和网络传输文件。
net.exe:用于在网络中完成许多功能。
telnet.exe:用于启动远程控制台,与另一个服务器进行 t e l n e t会话。
telnetc.exe:同上。
wscript.exe,Wi n d o w s脚本主机,用于在 G U I环境中执行一个脚本。
2,使用微软管理控制台 (Microsoft Management Console,M M C )
Windows 2000最大改进之一是使用 M M C来控制每一个管理应用程序,可以通过自定义
M M C来控制所有管理工具。因此可以避免一次打开很多辅助工具引起的混乱。下面的步骤能建立一个包含所有用信息的自定义 M M C会话。
在 S t a r t菜单中选择 R u n,并键入 mmc /a,引出一个 M M C窗口,并提供管理员特权。
在 C o n s o l e菜单中,选择 A d d│ Remove Snap-in.。
在对话框中点击 A d d按钮。
在 Add standalone snap-in 对话框中,选择 Group Policy 和 Event Vi e w e r,在两处均选择
Local Computer选项。
点击 C l o s e,然后点击 O k。
展开 Local Computer Policy。
展开 Computer Configuration。
展开 Windows Settings。
展开 Security Settings。
在这个安全性文件夹中,大部分选项都可以选取,如图 2 4 - 2所示。
图 24-2 创建自定义的 M M C会话
(1) 增强口令的安全性确保所有的口令至少有九个字符,这样能减小被发现的风险。把口令加密,确保有大小写字母和数字的混合。通过改变存储在 Account Policy下的 Password Policy文件夹中的值来指定这些选项或其他的一些选项。
(2) 帐号锁定保护如果有人试着去猜测某帐号的口令,应该封锁该用户的帐号。为实现这个功能,进入
Account Lockout Policy文件夹,改变 Account Lockout Count的值,这个值表示输入几次错误口令就封锁帐号。也可以设定一段时间内封锁该帐号,并且在到期后恢复该帐号。
(3) 限时网络访问的范围
Windows 2000缺省情况下允许每个人都可以从网上访问服务器,这是一个相当大的安全漏洞。可以进入 Local Policies文件夹,选择 User Rights Assignment文件夹来改变这个功能。
双击 Access this computer from the network 图标,不要选择 E v e r y o n e框中的 Local Policies,点击 A d d按钮,并选择 Authenticated Users,然后点击 A d d并点击 O K按钮,将得到是否更新的提示信息,然后选 Ye s。
(4) 审计对服务器的登录为了在安全事件日志文件中记录登录活动的信息,可以进入文件夹 Audit Policy,并改变
audit account logon events和 audit logon events 的设置。应该对所有登录尝试,无论成功与否都记录在日志文件中。这是一个很好的办法,能够了解对用户帐号进行的活动。
(5) 日志文件的覆盖间隔第 2 4章 服务器防护 计计 735下载根据网站访问量和登录者的数量,决定保持多大的安全日志文件和什么时候开始重新覆盖日志文件。对于比较忙的服务器来说设置 5 M B的空间应该够了,因为我们需要足够的空间来捕获当前的事件并保持网站的事件后备日志。另一方面,选择覆盖方针要依靠经验。一个好的开始是根据需要选择是否覆盖。
展开 Event Viewer 插件可来进行这两项设置,右击这个安全日志并选择 P r o p e r t i e s。
3,网络接口安全在讨论完用户名和口令之后,需要把注意力放在网络设置上,要确保设置是正确的而且安全的。有不同的方法可以得到这个窗口,最简单的方法是在桌面上右击 My Network Places
图标并选择 P r o p e r t i e s。在对话框中右击 L o c a l
Area Connection再选择 P r o p e r t i e s。
唯一与 I n t e r n e t 服务器有关的协议是
T C P / I P。因此确定没有安装不必要的协议。选择 Internet Protocol(TCP/IP)并点击 P r o p e r t i e s按钮,将显示计算机 I P地址和 D N S条目,但我们更关心的是 W I N S ( Windows Internet Name
S e r v i c e )的属性,通过点击 A d v a n c e d,即能找到 WINS 的属性,如图 2 4 - 3所示。
(1) 禁用 W I N S
在安全的 I n t e r n e t环境里,不能在服务器上运行 W I N S,也不能在远程服务器上使用。使用运行 W I N S的服务器时,有一些安全问题。而且 I n t e r n e t纯粹是基于 T C P / I P的,移走任何使用 W I N S的服务器,然后卸载 W I N S。
(2) 禁用 N e t B I O S
网络输入输出系统 ( N e t B I O S )是传统的用于 Wi n d o w s网络通信的网络协议。 T C P / I P很容易就可取代它。 N e t B I O S提供的几个小的工具软件,也能导致出现安全漏洞。可以在 W I N S选项卡中选择 Disable NetBIOS over TCP/IP来禁用它。
(3) 禁止 L M H O S T S查找
L M H O S T S文件用于 I P地址与 Wi n d o w s的计算机名称的映射,迄今为止,还没有关于因
L M H O S T S查找引起的安全漏洞的报告,但它确实没有什么用途,除非不能用 I P地址而必须用计算机的名称上网。可以通过在 W I N S选项卡中不选取相应的单选项来禁用 L M H O S T S查找。
(4) TCP/IP Filtering
缺省时,将有相当数量的网络端口打开,这些端口被 H T T P,F T D等使用。即使已经在防火墙或代理服务器后面,也要把服务器不用的其他端口关闭。仍在 TCP/IP Settings对话框中选择 O p t i o n s选项卡,然后选择 TCP/IP Filtering的属性。
如果原来没有选择,则选择 Enable TCP/IP Filtering(All adapters)。
在 T C P端口里,只能增加已知的正在使用的端口,如端口 2 1是提供给 F T P的,端口 8 0提供给 H T T P的,端口 4 4 3提供给 S S L的,端口 2 5提供给 S M T P的。照此,也可以增加其他的端口。
736计计 ASP 3 高级编程 下载图 24-3 WINS 的属性设置
允许非 U D P端口。
只允许使用 I P v 6,这是 I P的一个新版本并有更多的安全特性。
根据服务器的使用情况,TCP/IP Filtering对话框如图 2 4 - 4所示。
图 24-4 TCP/IP Filtering对话框
24.2.3 防火墙和代理服务器在继续完善安全策略之前,需在网络安全问题上再多说一点。因为 I n t e r n e t以惊人的速度增长,以致于黑客活动频繁,所以人们比以前任何时候都更加关心网络安全。我们已经掌握了一些保护服务器的方法,但一种最广泛的方法是用防火墙或代理服务器,在服务器和网络之间做为缓冲。
防火墙是能在两个网络之间,通常是 I n t e r n e t和内部网络之间,建立一道安全屏障的硬件设施。代理服务器是特殊类型的防火墙,能够代表一个计算机完成其自身不能或不想完成的工作。
防火墙设置为一个网络接口面向内部网络,另一个接口面向 I n t e r n e t,两者之间没有直接连接。这里可以有多个网卡,但为简单起见,我们假设使用了两个网卡。
防火墙和代理服务器的用途是取得不可路由的 ( n o n - r o u t a b l e )地址,并把它们转换成可路由的 ( r o u t a b l e )地址。由于它们能控制经过它所传递的信息,所以对于防止自己网络受到侵害和骚扰有很大作用。另外,防火墙也可以阻止向 I n t e r n e t上传递敏感信息。
通常防火墙的工作方式基于两句话:
没有明确的允许就是否定。
没有明确的禁止就是允许。
二者之间的差异是很容易理解的。为了安全起见,应该选择非肯定即否定的观点。如果选择了后者的原则,将会感到在服务器上有很多的工作要做。
图 2 4 - 5是典型的两个网络接口设置的工作方式。
为了特定的目的,在服务器上安装了两个网卡,外部接口用于与外部的 I n t e r n e t相连,而内部接口用于与内部局域网相连。这是前面提到的典型设置。连接两端的防火墙将禁止 I P路由。简单地说,局域网与外界的所有通信都来自于防火墙或外部网上的另一个全局地址。防火墙把内部网与外部公共 I n t e r n e t分开,并成为我们网络的安全中心。
第 2 4章 服务器防护 计计 737下载
738计计 ASP 3 高级编程 下载图 24-5 防火墙的工作方式防火墙能通过运行操作系统上的软件来实现,也可以是专门的硬件,比如用 C I S C O的 P I X
防火墙。专用的独立于操作系统的硬件防火墙总比相应的软件运行得快,但需要付出更多的费用。
1,专用网络的地址分配管理员完成内部网络物理连接以后,可通过防火墙与外界联系;可能仅仅移去原来的面向外部 I n t e r n e t的没有防火墙的计算机上的网卡。通过给 I n t e r n e t每台机器分配私有网络 I P地址,
确保 I n t e r n e t接收“好象”是来自防火墙的请求。
互联网分配的数字机构 (Internet Assigned Numbers Authority,I A N A )给内部的专用网络分配三块特定的地址,这些地址不能以最初的状态与 I n t e r n e t连接。由仲裁网关 (如标准的网关、
防火墙或代理服务器 )通过自身传递来自这些地址的请求,并把源地址转换成自己的 I P地址。
因此仍然可以允许专用网络上的主机与公共 I n t e r n e t相连,但这样可以更好地保护自己的专用网络。
专用地址块是:
A类,1 0,0,0,0 ~ 1 0,2 5 5,2 5 5,2 5 5
B类,1 7 2,1 6,0,0 ~ 1 7 2,3 1,2 5 5,2 5 5
C类,1 9 2,1 6 8,0,0 ~ 1 9 2,1 6 8,2 5 5,2 5 5,
例如,有一个 I P地址为 1 9 2,1 6 8,0,6的服务器,不经外部网址的防火墙转换地址,这个服务器不能放在公共 I n t e r n e t地址空间。这是通过网络地址翻译 (Network Address Tr a n s l a t i o n,
N AT )实现的,将在下一部分着重讨论这个问题。
使用这种专用网络空间各有利弊,但很明显,网络安全性能提高了,允许我们控制少数的几台计算机,并允许它们直接访问 I n t e r n e t。由于不需要注册 I S P正在使用的专用地址,这种方法实现相对比较容易。
把局域网接入 I n t e r n e t时,如果不使用专用地址空间就会出现问题。在这种情况下,每台机器将被分配一个可以接入 I n t e r n e t的全球的 I P地址,用一台机器做防火墙几乎是不可能的。
2,网络地址翻译网络地址翻译 ( N AT )的目的是把不可路由地址转换成可路由地址。 N AT有两种类型:动态转换和静态转换。
动态 N AT的目的是给主机提供一个或多个可能的 I P地址用作与外部通信的别名。翻译工作是在使用别名 I P地址的连接的基础上工作的,这个别名只在连接期间使用。用图 2 4 - 6来表工作站组所有外部通信要通过
192.168.0.254 处的网关防火墙示更易理解。
图 24-6 网络地址翻译示意图使用 N AT,能使内部服务器有一个全球的公共地址,这个地址在其他地方可以访问。理解这个问题最简单的方法就是认为服务器有两个 I P地址,实际上,并不是这样。防火墙翻译了所有通过防火墙的进站或出站数据包。
可设定数据包过滤规则来确定允许什么数据包经过防火墙进入内部服务器,我们最感兴趣的是接受 8 0端口和 4 4 3端口 (如果使用 S S L )的 T C P数据包,拒绝其他所有的数据包。甚至可以禁止 I C M P数据包通过防火墙。 I C M P数据包可用来检查一台机器是否响应网络的请求。如果允许 I C M P,机器可能在无意中成为攻击其他网络的帮凶。
I I S和 N AT的问题即使防火墙提供了一个 I P的别名地址做为源主机,I I S自身发出的请求 (或响应 )中的
C o n t e n t - L o c a t i o n引用仍包含内部的 I P地址。显然,这不是我们想要的,但这个问题很容易解决。
打开 I I S并启动站点的 P r o p e r t i e s对话框。
切换到 HTTP Headers选项卡,在 Custom HTTP Headers区域点击 A d d。
把 Custom Header Name设成实际的位置 (内部 I P )。
把 Custom Header Va l u e设成实际的全球的服务器域 ( h t t p,/ / w w w,e x a m p l e,c o m )。
用这种方法,将显示真实的全球的 I P地址,而不是内部的 I P地址。
24.3 IIS 5.0的防护最后,讨论应在本章开头讨论的问题:怎样安全地配置 I I S。在这一部分,将讨论怎样保护 IIS 5.0的安全和建立安全的 I n t e r n e t网站的有关问题。
24.3.1 IIS 的安全配置
1,尽可能少地安装组件安装 Windows 2000时,将自动地为 IIS 5.0安装一些缺省的项目。从安全的观点考虑,一般不会全部安装它们。在保证满足网站需要的同时尽可能少地安装 I I S组件。例如,如果不用
F r o n t P a g e做网页,就不必安装 FrontPage Server Extensions。除非在 A S P应用程序中使用 C D O
或 C D O N T发邮件,否则也不必安装 S M T P功能 (缺省安装 )。
如果已经安装了 I I S也不要紧。卸载也很容易,打开 Add/Remove Program控制面板,选择
Add/Remove Windows Components,然后,卸载不需要的 I I S组件。
第 2 4章 服务器防护 计计 739下载
3) 防火墙使用 NAT 将源主机 IP 192.168,0.7
转换为全球 IP 207.110.67.51
1) 使用专用 IP 192.168.0.7 的网络上的 Web 服务器
2) 所有外部通过内部
IP 192.168,0.254 处的网关
4) 通信从外部
IP 207.110,67.50
处的防火墙发往 Internet
2,建立合理的安全目录结构合理的 We b结构,使我们对应用程序的安全管理变得相当容易。在 Windows Explorer 中,
允许在文件夹而不是文件的基础上定义严格的安全权限。如可定义一些目录,它们只包含唯一类型的文件,例如可执行文件,A S P网页、服务器端包含文件等。
从安全观点看,表 2 4 - 11所示的这个示例结构很容易管理,但还有许多的工作需要 We b设计者设计。然而,也有许多有用的准则对我们有指导意义。
表 2 4 - 11 目录结构示例目录名称 内 容 文件扩展名 权限设定
We b r o o t \ e x e c 可执行文件,e x e,匿名 We b用户 ( I U S R _ M A C H I N E ) (只读
,d l l,和执行 )
,p l A d m i n i s t r a t o r (无限制 )
S y s t e m (无限制 )
We b r o o t \ i n c s 包含文件,i n c,
,s h t m l,
,s h t m
We b r o o t \ a s p A S P网页,a s p
We b r o o t \ h t m l H T M L \客户端脚本,h t m,匿名 We b用户 (IUSR_MACHINE) (只读 )
,h t m l Administrator (无限制 )
S y s t e m (无限制 )
We b r o o t \ i m g s 图像文件,g i f,
,j p e g
注意,尽量避免把,E x e文件放到在线应用程序中,它们非常有可能产生安全问题。
3,保持干净的服务器从服务器上删除所有不必要的资料。
在 C:\inetpub\ iisamples\中的示例应用程序和 IIS SDK是服务器上多余的负担。
另外,在 C,\ i n e t p u b \ A d m i n S c r i p t s \中的 Admin Scripts也应删除。
I I S中的缺省 We b站点也是删除的候选对象,因为它的物理根目录通常位于服务器的主引导分区。如前所述,如果黑客控制了缺省 We b站点,也就可以访问引导分区,Wi n d o w s
文件和命令 s h e l l等。
如果在线应用程序没有使用脚本运行期库对象 (见第 5章 )或 A S P服务器组件,取消它们的注册。在 S t a r t菜单中选择 R u n并键入:
这里,x x x,d l l是包含组件的文件的名称。要意识到某些应用程序需要使用某些对象。因此,在取消组件的注册之前,一定要检查依赖性。
4,加强 R D S的安全性在第 1 0章中,你已经知道微软公司已发布了有关使用远程数据服务 ( R D S )功能的安全声明,
可在 h t t p,/ / s u p p o r t,m i c r o s o f t,c o m / s u p p o r t / k b / a r t i c l e s / Q 1 8 4 / 3 / 7 5,a s p中看到详细内容。过去,
R D S是防止拒绝服务攻击的基础,但微软建议从服务器中删除 R D S或加强其安全防范措施,
这些方法都写在上述地址的网页中。
5,不要给后端 ( B a c k - E n d )代码编索引我们经常看到在应用程序中索引底层代码和用户实际将看到的相关信息,甚至在一些网
740计计 ASP 3 高级编程 下载第 2 4章 服务器防护 计计 741下载站的搜索结果中时常出现一些 g l o b a l,a s a文件,这个错误能在连接字符串中泄露口令、用户名或目录结构。黑客利用这些信息,可获得对网站的非授权访问。
防止这种情况发生的最简单的方法是把后端代码放到主 ( m a s t e r )目录中,并设置索引服务器不能对其索引,从而把它与站点的其余部分分开。通过站点的 r o b o t s,t x t文件指定该目录不能从外部接触,也能防止 I n t e r n e t搜索引擎的对其索引。
6,设置 We b日志文件并保护日志文件在 I I S中,所有的日志配置选项都能通过运行 We b站点的 P r o p e r t i e s对话框并选择 E n a b l e
L o g g i n g来访问,如图 2 4 - 7所示。日志是网站安全的最重要的方面之一。好的日志能提供所需要的所有信息。它有助于监控网站上的活动和活动的起始位置。特别是,W 3 C扩展日志文件格式允许记录一些关键的信息,比如,客户的 I P地址、用户名、服务器 I D、服务器端口号、
方法,URI Stem和协议状态。
图 24-7 配置日志选项应该意识到当用户开始大量进入时,日志文件会迅速地膨胀。当我们必须从网上下载日志时,会慢得令人难以忍受。
如果必须下载这些日志文件,那么确保只有 A d m i n i s t r a t o r和 S y s t e m帐号才有访问日志文件夹的权力。可以考虑把它们加密或使用 K e r b e r o s进行双重安全保护。
另一方面,如果在本地计算机产生日志文件,不应到 We b站点上访问日志文件夹。否则很有可能使自己的日志文件被其他人访问。
7,过滤 I P地址限制对站点的访问
I I S中的一个 We b站点的安全选项 (见 We b站点的 P r o p e r t i e s对话框中的 Directory Security选项卡 )是基于请求访问的客户的 I P地址来限制对网站的访问。正如在本章开始所讲的,这对 I P
欺骗至少是一种威慑。
当地址被拒绝接受时,将向客户返回一个定制的错误页面,提示的关键信息如下:
HTTP 403.6-Forbidden:IP address rejected
该页面位于 C,\ W I N N T \ h e l p \ i i s H e l p \ c o m m o n \ 4 0 3 - 6,h t m,并可进行修改,换成特定的信息,
甚至什么也不显示。要这样做的原因是,如果客户知道是因为 I P地址而被拒绝,那么他们中的一些人就会进一步找到绕过去的方法。
8,认真配置 We b应用程序在 I I S中创建的每个虚拟应用程序,都有相应的配置对话框,以确保其安全。在应用程序的 P r o p e r t i e s对话框中的 H o m e / Virtual Directory选项卡中,点击 C o n f i g u r a t i o n按钮,就可以找到该配置对话框,如图 2 4 - 8所示。
图 24-8 We b应用程序的配置对话框从 APP Mappings选项卡开始,最应该做的是删除不使用的应用程序与文件扩展名之间的映射关系。黑客可通过这种映射关系禁用目标服务器 (这个安全漏洞的详细资料可在
h t t p,/ / w w w,e e y e,c o m / d a t a b a s e / a d v i s o r i e s / a d 0 6 0 8 1 9 9 9,h t m l中查到 )。选择一个想要删除的映射关系,点击 R e m o v e按钮即可。
选择 App Options 选项卡,可以考虑禁用父路径 (Parent Path),这样客户就不能在自己的
U R L请求中使用,.,”表示父路径,使其不能进入隐藏区域,例如,h t t p,/ / w w w,e x a m p l e,
c o m /’,,/ _ v t i _ b i n’ 。另一个解决的方法是在每个文件夹内用默认的主页文件名建立一个文件,
可以防止目录被浏览。
24.3.2 验证方法确认 I n t e r n e t / i n t r a n e t的每一个应用程序都使用了最强大的验证模式。方法越强大,就越能确保用户能够准确地表明自己的身份。 I I S支持三种类型的验证控制:匿名访问、基本验证和
Wi n d o w s内置验证。每一种模式都能在 I I S中的 We b站点 P r o p e r t i e s对话框的 Directory Security
选项卡内设置。点击顶部的 E d i t按钮,可看到图 2 4 - 9的对话框。
每种方式的复选框都能独立地选择。这意味可以同时启用多种机制,并为请求自动地选择最合适的一种模式。
1,匿名验证匿名访问可用时,I I S不管用户的身份,分配一个预先指定的帐号和权限给访问 We b服务器上的文件的任何人。匿名用户的默认帐户是安装 I I S时生成的 I U E R _ M a c h i n e N a m e。注意,
在这里的 M a c h i n e N a m e是安装 I I S的计算机的名称。这个帐号被分配给 G u e s t s帐号组,并给出
742计计 ASP 3 高级编程 下载一个可以修改的口令,并给用户,Log on
L o c a l l y”的权限,用户可以访问 IIS 5.0的
W W W服务。
如果匿名验证启用,访问 W W W服务的用户就可以以分配给 I U S R _ M a c h i n e N a m e
帐号的权限访问这些资源,可以通过上面显示的对话框中的 E d i t钮来修改权限和匿名者的帐号。
注意,安装 I I S 5,0时,也产生另外一个叫 I WA M _ M A C H I N E N A M E的用户帐号。当我们建立一个 I I S进程外运行的 We b应用程序时,将产生一个在 I WAM_ MACHINENAME
帐号下运行的 M T S数据包。
2,基本验证如果用户要使用匿名用户不允许使用的资源,请求将被拒绝,并将,401 Access Denied”
消息返回给用户。如果其他两种验证方式中的一种启用了,则大部分的浏览器将提示用户给出用户名和口令,并把用户名和口令以及请求提交给服务器确认。
基本验证和 Wi n d o w s内置验证之间的不同在于用户名和口令的传递方式不同。在基本验证中,它们没有加密,以明文的方式传递。用户的 I D也可简单地表示 (如 M o b i u s ),也能完整地 表 示 (如 D o m a i n N a m e / M o b i u s )。 在 IIS 5.0中还 能 用 新 的 形 式表 示,如 m o b i w s @
D o m a i n N a m e,c o m,
明文形式传送的用户名和口令可以用 S S L来加密。
3,Wi n d o w s内置的验证 ( I WA )
使用 I WA (以前在 Windows NT 4.0中称为 T L M或 Windows NT Challenge/Response验证 ),
用户口令不必在网络上传递,因此黑客们无法窃取。服务器 ( I I S )询问用户信息时,客户用服务器预先选定好的已加密的安全信息包来回应,其加密方法和验证方法依赖于 Wi n d o w s所用的协议。
如果客户和 I I S服务器都与一个 Kerberos KDC(Key Distribution Center)有可信的连接并且都有 A D兼容性,I I S将使用 K e r b e r o s网络验证协议 (Kerberos Network Authentication Protocol)
来验证。 Windows 2000的验证基于 K e r b e r o s模式,K e r b e r o s是一种新的安全模式。可在下面的网址找到更多的关于这方面的信息,h t t p,/ / w w w,m i c r o s o f t,c o m / s e c u r i t y / t e c h / k e r b e r o s。
如果服务器或客户端与 K e r b e r o s不兼容,那么,服务器将使用 Windows NT Challenge/
R e s p o n s e协议。可在下面的网址中找到有关这方面的更多信息,h t t p,/ / w w w,microsoft.
c o m / N T S e r v e r / s e c u r i t y。
不考虑这些协议的详细内容,有关 I WA有两点需要搞清楚:
匿名用户被拒绝或匿名用户访问一个页面时,在建立与页面内容的连接之前而被强制进行身份验证时,才会使用 I WA进行验证。
IWA与 Internet Explorer 2以上版本兼容。
第 2 4章 服务器防护 计计 743下载图 24-9 验证方法设置窗口
24.4 SQL Server 7.0和 O D B C的安全无论是一个简单地展示自己开发的 S Q L数据库的内容的 A S P网页,还是正在开发完整的
I n t e r n e t / i n t r a n e t应用程序,当建立 A S P到 S Q L的连接时,要采取适当的安全措施。
24.4.1 保护 s a帐号首先要采取的步骤是保护 s a帐号。 s a是 SQL Server的缺省系统管理员的帐号,缺省时没有口令。按下面的步骤来设置口令:
1) 运行 SQL Server Enterprise Manger。
2) 连接到保存数据库的 SQL Server。
3) 打开 S e c u r i t y文件夹。
4) 点击 L o g i n s。
5) 右击 sa 帐号而后选择 P r o p e r t i e s。
6) 在口令框中输入新口令。
7) 点击 O K按钮。
8) 再次输入口令来确定。
24.4.2 为数据库访问建立替代帐号保护 S Q L服务器的下一步骤是创建一个角色 ( r o l e ),提供使用 We b站点 / We b应用程序所需的最小数量的访问权限。不同的帐号可能执行不同的任务,可以建立几个不同的任务。可在
Enterprise Manager中创建 SQL Database Role:
1) 打开网页使用的数据库的文件夹。
2) 选择 R o l e s。
3) 在空白区域单击鼠标右键,选择 New Database Role 。
4) 在文本框中给出角色名称并选择 O K。
5) 右击新添加的角色,并选 P r o p e r t i e s。
6) 点击 P e r m i s s i o n s按钮。
产生的对话框允许为每个数据库相关对象设定访问权限。应该确定给予 We b站点 / We b应用程序能够进行访问的权限。并对角色进行相应的设置。例如,如果网站只浏览指定的数据表,则该角色只能对该对象进行 S E L E C T访问。
安全策略中最重要的一点是不允许直接对数据库表进行访问。取而代之的是,对表的访问必须通过视图和存储过程进行,他们提供访问功能,并给予角色使用它们的适当权限。这样即使具有合法的用户名 /口令的用户也不能超越 A S P代码,做其他事情。
现在,可以准备为数据库增加一个替代帐号。为了安全起见,不应在自己的网站上使用
s a帐号。系统管理员的帐号有每个数据库的完全访问权限,并且有权增加用户和进行其他工作。如果使用 s a帐号,如果黑客控制了我们的 O D B C连接,他们就可能不受任何限制。在
Enterprise Manager中可按如下方法建立一个新的 S Q L帐号:
打开 S e c u r i t y文件夹。
选择 L o g i n s。
744计计 ASP 3 高级编程 下载
在空白区域右击后选 New login。
在 N a m e文本框内,键入用户 I D。
点击 SQL Server Authentication,并在 P a s s w o r d文本框里输入口令。
将缺省的数据库改为自己的数据库。
点击 Database Access选项卡。
允许访问自己的数据库。
允许访问我们在 We b站点 / We b应用程序中建立的数据库角色。
如果在应用程序环境中使用 S Q L,并想通过使用 S Q L数据库验证用户 I D和口令,则有两个选择:一方面,可以把所有用户的帐号和口令存在一个表中,并根据这个表编写自己的用户验证程序。另一方面,可以把用户 I D和口令作为 S Q L服务器的 S Q L连接字符串的一部分来验证,这意味着为每个访问系统的人创建一个用户 I D。但这也意味着如果用户输入错误的用户 I D和口令,则 A S P数据库连接将失败。
编写代码并不困难,例如建立一个 l o g i n,h t m l文件:
这段代码将把用户的 I D和口令提交给 Ve r i f y,a s p,Ve r i f y,a s p将把它们插入一个连接字符串中,并试着连接数据库,并将显示连接是否成功的消息。
第 2 4章 服务器防护 计计 745下载如果选择使用 D S N来连接 S Q L服务器数据库,当使用缺省的注册 I D和口令设置 S Q L
Server Authentication可用时,上面的注册程序代码中的数据库连接字符串应改为如下的代码。
24.5 建立自己的 A S P安全系统本章一直在讲这个问题。我们已经研究了用服务器上的硬件和软件来实现安全的措施,
在 A S P编码范围内也可以实现这些安全机制。 建立自己的基于 A S P的应用程序级上的安全模式,
能提供更高水平的安全保证、更好的防御机制和定制的用户跟踪功能,为我们提供一个便利的容易使用的个性化系统。
典型的 A S P应用程序级安全逻辑应该包括:
对封闭用户组 (Closed User Group,C U G )实施访问控制并限制 We b站点的访问。
在访问网站的某一特定区域之前,强制登录用户提供个人情况细节。
使网络的访问日志更加详细。这样的日志能用来调查安全漏洞、客户计帐、规划容量和判断网站某一区域受欢迎的程度。
编程访问存储在客户数字证书中的数据。
我们已知道怎样才能使 I I S日志更加详细,在下一章里,将看到关于数字证书更加详细的内容。在本章的余下部分,将讨论关于实现对某些网页的访问控制的问题,限制 We b页面接受成员,即上面涉及到的封闭用户组。
请看下面的例子,并根据自己的需要进行相应的修改。这个例子包括了处理用户身份验证的基本代码和前面所讲的访问控制逻辑。可从 h t t p,/ / w w w,w r o x,c o m下载本书里所有的代码。
实现封闭用户组 /成员关系这里的成员关系网站包括两个分开的站点:
成员网站:由公共网页和只有成员才能访问的网页两部分组成的 I n t e r n e t网络应用,如图 2 4 - 1 0所示。
图 24-10 成员站点主页
746计计 ASP 3 高级编程 下载第 2 4章 服务器防护 计计 747下载
成员关系管理网站:允许成员关系管理员查看成员数据库并接受或拒绝申请的 I n t r a n e t
We b应用程序,如图 2 4 - 11所示。
图 2 4 - 11 成员关系管理主页注意,I n t r a n e t网站工作在 T C P / I P的 8 8 8 0端口上,这里假定防火墙只允许访问
8 0端口,因此我们能确信在公司网络以外没有人能访问这个 We b应用程序。此外,
这个网站使用 Wi n d o w s内置验证来验证特定人员(即成员关系管理员)的访问。
1,成员数据库成员站点包含的一个功能是用户可注册他们的详细资料,另一个功能是进入成员区,在用户注册时能够得到的信息是:
邮件箱地址 ( E m a i l A d d r e s s )。
姓名 ( N a m e )。
公司 ( C o m p a n y )。
口令 ( P a s s w o r d )。
这些信息被写入 SQL Server 7.0数据库中一个名为 U s e r s的表里。另外,记录中的一个字段为 S t a t u s,用来表明成员资格申请的状态,成员资格管理应用程序允许管理员检查数据库并可修改 S t a t u s字段,可分别为 P e n d i n g,(未定 ) R e j e c t e d (拒绝 )和 M e m b e r (成员 )。
登录过程包括询问用户的 e m a i l地址和口令,并通过数据库进行验证,如果用户的身份正确并且 S t a t u s字段设置为 M e m b e r,用户就被重新定向到成员区。如果当前的字段 S t a t u s是
P e n d i n g或 R e j e c t e d,则显示相应的信息。
为了节约时间,可用下面的脚本自动生成 U s e r s表和相应的字段。打开 SQL Query
A n a l y z e r,选择想用来存放数据的表,在窗口输入这段代码,然后按 F 5。
生成的表如图 2 4 - 1 2所示。
748计计 ASP 3 高级编程 下载图 24-12 Users表的结构
2,成员 I n t e r n e t站点成员 I n t e r n e t站点有如下简单的结构:
网站的内容在下列子目录中,它们是:
public:包括可被任何人浏览的站点内容。
members:包括只能被成员浏览的网页内容。
global:包括用于许多文件的公共内容。
images:包括所有的图形文件。
_private:保留给 F r o n t P a g e使用。
g l o b a l,i m a g e s和 _ p r i v a t e文件夹没什么要解释的。我们直接来看一下这个应用程序的核心 p u b l i c文件夹,用户可以在 p u b l i c文件夹中注册到该网站并登录到站点的受限区域,如图 2 4 - 1 3所示。
3,用户注册页面在这个站点中,P r e g s i t e r,a s p是我们最感兴趣的第一个页面,
如图 2 4 - 1 4所示。因为它控制新用户访问网站的成员区所需的注册。
它有两个任务 (或方式 ):
显示 H T M L窗体,来得到用户的信息。 图 24-13 成员站点的结构图 24-14 用户注册页面
当窗体提交后处理用户信息。
(1) 显示方式
H T M L窗体将用户信息提交给同一个 A S P文件,但同时将一个参数 (mode = apply)添加在
U R L末尾。这样 A S P将很容易地判定需要完成的是那一个任务。
当用户信息被提交以后,除检查 m o d e参数以外,A S P将检查窗体中字段是否有空白。如果有一个或多个没有填写,则重新显示窗体。
(2) 数据库更新方式窗体的这个处理过程将把信息写入 SQL Server数据库,可以用 A D O (见本书的第 8 ~ 1 2章 )
来完成这项工作。注意,在这个页面和其它页面,你自己必须把连接字符串添加到 U s e r s表中。
这个字符串的内容依赖于最初是在那里创建这个表。
首先,调用一个查询来检查 E m a i l的地址是否已经存在于数据库中。如果不存在,把这个信息添加到 U s e r s表中。注意,此时的 S t a t u s应设置为,P” ( P e n d i n g )。
第 2 4章 服务器防护 计计 749下载
4,用户登录页面注册到站点后,用户需要等待其成员资格的申请被批准。我们把发出通知这件工作留给读者来完成。申请被批准后,用户需要登录。用 P l o g o n,a s p来完成这个工作。
与 P r e g i s t e r,a s p类似,这个页面也有两个方式:
显示 H T M L窗体,获取用户的身份凭证。
验证用户身份并决定允许对成员区访问或拒绝请求。
P l o g o n,a s p如图 2 4 - 1 5所示。
图 24-15 用户登录窗口
(1) 显示方式和 P r e g i s t e r,a s p一样,H T M L将信息提交给同样的 P l o g o n,a s p文件,并在 U R L末端添加一个参数 (mode = logon),使其意识到应以验证方式运行。
750计计 ASP 3 高级编程 下载
(2) 验证方式在 P l o g o n,a s p文件的开始,检查用户提供无效的身份凭证和登录失败次数,计数将被存放在 ASP Session对象中。三次失败后,把用户重定向到主页。这样将阻止黑客进入站点的尝试。
然后,再检查 m o d e参数以及用户是否填写了所有的内容。如果不是这样,我们假设仍然在显示方式中,并输出相应的窗体。
验证之后,在 U s e r s表中检索与指定的邮件地址匹配的记录。再次提醒,在代码中为 U s e r s
表填写了正确的连接字符串。
如果发现了相应的记录,就检查 P a s s w o r d字段。如果口令正确,检查 S t a t u s的内容。如果用户的申请被拒绝或没有确定,浏览器将重定向到 P l o g o n f a i l,a s p页面,显示相应的错误信息。
如果用户的申请被接受,用户将进入网站。同时,把一些用户信息从数据库中取出并存放到 S e s s i o n对象中,使用户的区域个性化。
还需要注意的是,我们设置 S e s s i o n (,A u t h” ) =,Y”,这个标志表明已经通过了验证过程。我们将马上会看到为什么这一点很重要。
第 2 4章 服务器防护 计计 751下载如果口令不正确,将重新显示 H T M L窗体,失败次数增加 1:
5,用户登录失败如图 2 4 - 1 6所示,我们用一个非常简单的 P l o g o n f a i l,a s p页面来显示用户登录失败的各种原因。
图 24-16 Plogonfail.asp页面登录失败的原因由 U R L中的 r e a s o n参数决定。该参数在将用户重定向到该页面前给出。
6,保持成员区域的安全成员区所有的限制性内容都位于 M e m b e r s
子目录下。一旦用户登录成功,他们将被重定向到 M h o m e,a s p。这个文件包含到所有受限内容的链接,如图 2 4 - 1 7所示。
在登录 成功时,我们设 置了 S e s s i o n
(,A u t h” ) =,Y” 。每个页面都有如下的 A S P逻辑来检查用户是否通过了验证。这样,任何人也不可能不经登录而直接进入受限网页。
因此,避免登录而直接进入受限网页的任何企图都将导致用户的浏览器重新定向到登录窗口。
752计计 ASP 3 高级编程 下载图 24-17 成员区窗口第 2 4章 服务器防护 计计 753下载
7,成员资格管理者的 I n t r a n e t站点和 I n t e r n e t网站一样,基于 I n t r a n e t的成员资格管理站点也很简单。它包含了一个菜单页面
( d e f a u l t,a s p )和完成各种工作的文件 m e m b e r,a s p。
8,成员管理者页面
M e m b e r s,a s p是显示成员数据库条目的 A S P文件,如图 2 4 - 1 8所示。另外,它允许修改每一个记录的 S t a t u s字段。此文件能在五种方式下运行:
显示批准的成员。
显示未定的成员。
显示被拒绝的成员。
显示所有记录。
处理管理者做出的修正。
图 24-18 成员管理者页面
(1) 显示方式可以从主菜单 ( d e f a u l t,a s p )中选择某种显示方式,并在 U R L中作为 S t a t u s参数传递。
使用简单的 A D O逻辑,我们能检索到匹配想要 S t a t u s的一个 R e c o r d s e t,它包含了用户的详细资料。如果想要的 S t a t u s不是 A (所有记录 ),在 S Q L查询中,将指定一个 W h e r e子句。
R e c o r d s e t以表中的 C o m p a n y字段排序,使屏幕上的记录以同样的顺序显示。注意,在代码中为 U s e r s表填写了正确的连接字符串。
用户的详细资料将通过遍历 R e c o r d s e t中的条目显示。 每个记录的 S t a t u s用一个下拉框显示,
并被设置成显示正确的值。
所有成员的详细资料都显示在 H T M L窗体里,可被提交给其自身,以更新任何成员的已改变的 S t a t u s字段。
754计计 ASP 3 高级编程 下载
(2) 数据库更新方式在 A S P文件的开始,检查 U s e r s表是否需要更新。通过检查页面请求中的 b u t S u b m i t值来实现这一功能。
在更新模式下,每个用户记录根据窗体中的 S t a t u s字段更新。
一旦数据库被更新,把用户重新定向到主菜单。
24.6 小结现在,你应该对建立一个安全的网站时会遇到的安全问题的各个方面有很全面的了解。
在短短的一章里,我们不能面面俱到地讲述所有知识,因此必须紧跟最新技术的步伐。要时刻注意有关所使用的软件的安全漏洞问题。通常漏洞一出现,相应的补丁马上就会推出。
研究和学习是跟上潮流的最好方法,应尽可能地了解自己所用产品的安全漏洞。通过管理使系统的雇员和用户都遵守这些规则来实施自己的安全策略。
第 2 4章 服务器防护 计计 755下载
实际上,i n t r a n e t或 I n t e r n e t上的代码和信息的安全问题,应该是任何一个 We b开发者优先考虑的问题。在 I n t e r n e t上,即使是不大熟练的黑客使用自动黑客工具攻击一个网站也是一件很简单的事情。不用关心自己为什么会成为黑客们攻击的目标,但做好防范,至少可以在家里安稳地睡觉。
安全问题只有一小部分是开发者的责任,其实更应该是开发者和系统管理员共同的责任,
所以这两种人应该详细地阅读本章。开发者和系统管理员应该共同在系统上为雇员和在线顾客提供可能达到的最高水平的安全。通过服务器各方面的操作,如操作系统、磁盘访问、
I n t e r n e t协议,防火墙等等,保证你拥有一个安全和具有防护功能的计算机系统。
本章将讨论以下内容:
安全的定义。
安全策略。
Windows 2000的安全防护问题。
防火墙和代理服务器。
IIS 5.0的安全问题。
SQL Server 7.0和 O B J C O N N C安全问题。
ASP应用程序的安全问题。
注意,Window 2000的一般管理知识和其安全概念是理解本章的基础。
24.1 安全的定义在计算机安全的很多定义中,最适合的定义将其描述为防御攻击、阻止偷窃和未经授权的泄密行为的能力水平。
我们可能从来没有遇到过攻击,更多的时候是某些人试着从系统中窃取一些资料。文档和计算机资源是黑客的猎物之一。但是更多的黑客从高速的 I n t e r n e t连接闯入,并利用我们的服务器和网络在 I n t e r n e t上攻击其他的网络和系统。黑客不是想对其他公司报复就是想知道他们是否具有这个能力。
在 A S P应用程序范围内,安全是通过使用 S S L或其他方法,防止口令和重要信息被泄露。
一些人有足够的理由来窃取这些信息,所以必须保护我们的网站。在网站上,像信用卡号码那样的重要信息是应重点关注的。例如,在电子商务交易站上,可能有极其重要的信息。
24.1.1 Internet上的安全问题
I n t e r n e t的安全问题,主要是黑客用各种方法截取基本的数据包数据,使用“不好”的口第 2 4章 服务器防护 计计 727下载令 (很容易猜出的 )访问系统,等等。尽管这种威胁看来势不可挡,但可以采取一些方法来保护安全结构设计较差的网络系统。管理员必须主动地研究所用产品的 I n t e r n e t安全特性。如果做好预防工作,就能在 I n t e r n e t上构建一个安全的系统。
测试 ASP We b站点的安全程序的最好方法是,在服务器还在开发阶段而没有正式投入到
I n t e r n e t之前,自己尝试着闯入破坏它。测试网站是否具有防止“拒绝服务”攻击的能力;测试所设置的访问控制的综合能力。最好定期访问那些提供最新黑客工具和自动攻击软件的网站,例如:
http://www,r o o t s h e l l,c o m
http://www,h a c k e r s,c o m
http://www,d a r k - s e c r e t s,c o m
1,恶意攻击和破坏最近恶意的在线破坏仿佛要成为一种趋势。这种做法相当标准,攻击者窃取口令或找到其他的方法进入你的系统,并把你的站点弄得面目全非。幸运的是我们可以很容易地清除
“在线涂改”,并且改变口令以防止重复攻击,但最主要的事情是使自己的口令保密。下一章将研究加密方法。
破坏者也可以用 F T P和 t e l n e t闯入你的系统。因此,除非是必须的,否则就不要提供这些服务。除非使用第三方软件,否则 Windows 2000不支持 t e l n e t和远程控制台访问。所以,
Windows 2000使用者只需要考虑有关 F T P的安全问题。如果服务器是内部的,应该用一个光盘驱动器或其他形式的介质升级你的网站。从长远观点来看,这种额外的努力是很值得的。
2,假冒和 I P欺骗在 I n t e r n e t上最大的问题之一就是假冒,即攻击者以别人的身份进入你的系统。对于那些使用 I P和用户身份验证的服务器来说,这是个大问题。
让我们来研究一下 I P。它是 T C P / I P的一部分。 I P由四个层次组成,如表 2 4 - 1所示。
表 24-1 IP的四个层次层 次 说 明源端主机 (Source Host) 产生数据包 ( p a c k e t,数据的单位 )的主机源端端口 (Source Port) 发出数据包的端口目的端主机 (Destination Host) 数据包接收端主机目的端口 (Destination Host) 数据包接收端口在我们讨论“假冒”问题时,源端主机是需要重点研究的一个层次。它是信息块 — 也就是所谓的“包” ( p a c k e t )— 的来源,是信息的起始端。如果能用自己的数据包假冒源端主机的数据包,就能使主机相信它们来自被假冒的地址。这种技术就称为,I P欺骗” ( I P
s p o o f i n g )。在网络上,攻击者用这种方法伪装成受信任的主机。事实上,大多数拒绝服务攻击是用这种方法掩盖自己的起始地址。
不要完全相信自己的网络是很可靠的,但这不应归责于 I P,因为它唯一的目的就是提供 4
个层次,使路由器知道向何处发送数据包,没有提供检查的方法。一个反假冒的手段就是使用防火墙检查数据包是否确实来自它声称的源端主机。虽然对于 I P欺骗,防火墙不是万无一失的。但一个法则是配置你的路由器,使其丢弃那些声称来自你的网络的入站数据包。丢弃声称不是来自你的网络的出站数据包,可以防止自己的职员攻击其他网络。
3,不要成为攻击者
I P欺骗和假冒能使你的服务器处在危险之中,但这也意味着你的机器能在无意中成为攻击其他主机的帮凶。其原因相当深奥,但其逻辑非常简单。攻击的前提是目标服务器出现时正在使用广播 I C M P回应请求。它能访问网络上所有机器来 p i n g某一主机。如果攻击者假冒一个主机并将这些回应请求发送到你的网络和另外的一个网络。尽管被假冒的主机实际上没有请求它们,但两个网络上的所有机器都会回应它。如果你有十台服务器,另一个网络也有同样多的服务器,这样目标主机就会收到 2 0个不必要的回应数据包,向不知情的网络重复发送大容量的 I C M P回应请求数据包,最终将导致目标服务器断开连接。
这就是网络中面临的服务器防护问题。为了防止自己的网络在无意中成为攻击的帮凶,
就要确保你的路由器和计算机不应答广播 I C M P回应请求。
24.1.2 安全策略系统 (网络 )管理员应经常做的事情是维护一个最新的安全策略。大多数用户没有认识到交换口令和他们认为不重要的其他信息能引起系统 (或公司 )潜在的安全漏洞。
通过建立安全策略,管理员可以保护他们的用户和自己的安全。用户应被告知,如果他们不能执行这个策略,对系统应负的责任和可能产生的潜在问题。同时这个策略也适用于系统管理员。
安全策略必须落实,并由制定者强制执行。如果用户不能遵守这个策略,应采取相应的行动。这些规则必须严格执行。
1,安全策略剖析制定一个策略后,你很快将认识到有比人们预期的多得多的内容要加入到安全策略中。
对整个系统有详尽的规范,覆盖的问题有备份策略、系统访问、维护、软件版本、操作系统版本和日志文件的检查。
为了容易理解,可以把策略分成三部分。
用户需求
经理责任
管理员的责任
2,用户需求在系统上设置一个新的安全策略,对于系统管理员来说是不轻松的。如果在系统安全策略的严密性上过分苛刻,你将很快就成为所有用户都讨厌的人。另一方面,如果在严密性上放松要求,这个策略就不能发挥相应的作用。我们的目标是在与用户保持和谐关系的同时,
制定一个有效的安全策略。
下面的一些问题需要认真考虑的:
用户需要访问哪些系统?
每个用户都需要什么种类的访问?是完全的读写访问还是尽可能少的访问?匿名的用户怎样使用系统?
什么时间用户可以访问系统?因为大部分的安全问题都发生在工作时间以外,所以限定时间是一个好办法。
需要用户名和口令验证吗?如果需要,将要制定一些选择口令的规则,这些规则确保不
728计计 ASP 3 高级编程 下载把口令写在明处,并不使口令泄露。对在家通过调制解调器和 I S D N拨号上网的用户要制定相应的计划。
是否需要基于 I P的验证?识别用户计算机的 I P地址与识别用户的名字和口令一样能为那些需要它的系统区域建立额外的安全保护。
对那些特殊的用户是否进行合理的分组?例如:金融部门的用户需要访问金融方面的记录,销售部门的用户需要特定的产品信息,后勤部门的用户需要的可能是另一种类型的产品信息。
系统的某个区域是否需要某种程度的加密?例如,在 a m a z o n,c o m站点上不需要对书的相关信息进行防护,但必须对填写信用卡信息的区域提供加密。
安全模型的处理是否处于应用程序层上?在开发阶段,这对于所有的用户甚至是匿名用户都是有用的,对系统能够进行完全的读写访问。但在正式使用时,这是这个潜在的安全漏洞。
谈及安全问题时,这些信息都是相关的,只要有可能,应该试着在各种层次上回答这些问题。显然我们并不希望基于 We b的应用程序在 I n t e r n e t上对用户开放时,再回答这些问题。应该尽早做出比较准确的估计。
3,经理责任通过说明需要落实的安全措施以及不遵守它时产生的安全风险,在一个组织内部,应该把一些网络责任归于经理的身上,下面是这样做的几个理由:
他们能在系统管理员、用户和开发者之间充当中间人,减轻执行安全策略对每个人产生的压力。
通过让他们理解规则方面的非专业术语,经理能有效地向其他人发布信息。
他们应该制定出如果不遵守规章要采取的措施。
不要忽略对管理方面任何问题的讨论,而且一定要全力支持为用户制定的规则。
4,系统管理员的责任如果对一个策略不进行相应的管理,那么该策略将是无效的,因此系统管理员也必须制定相应的规则。这包括:
如果发生中断,该怎么做?
如果用户不遵守规则,该怎么做?
如何建立新的用户帐号、新用户组策略、文件和目录权限等。
备份措施。备份介质的种类,执行备份的时间和形式 (完全的或递增的 ),备份存储的位置和应急恢复计划。
硬件维护。服务器如何更新?升级的时间和要升级哪些硬件设备 ( B I O S、网卡,还是其他的硬件 )
软件版本,如果可以从销售商得到一个新版本、服务包、升级包或补丁,系统管理员应当对是否使用它们做出理由充分的决定。在服务器上安装了什么东西的记录应当被保留。
操作系统和软件一样,任何一个新的或升级的 (或补丁 )的操作系统版本,在应用于服务器之前,都应在单独的机器上做严格的测试,唯一的不同是对操作系统的所有变化应该做最严格的测试。
为了知道用户是否在做他们应该做的事情,应该每天都检查日志文件,如果出现异常,
就要采取措施。
第 2 4章 服务器防护 计计 729下载
730计计 ASP 3 高级编程 下载
24.2 Windows 2000的防护在这部分,将研究防护自己的操作系统的方式,以保证不受一般性攻击的影响。也将研究有关与 I n t e r n e t不进行连接的专用网络的相关知识。具体将研究以下几个方面的内容:
硬盘格式。
创建访问控制列表 (Access Control List,A C L )。
子系统删除 ( r e m o v a l )。
删除不必要的网络服务。
限制网络访问。
TCP/IP过滤。
以上几方面的问题决定网络的安全程度。本节的目标是建立一系列防护 I n t e r n e t网站的安全措施,防止破坏网络安全。
24.2.1 磁盘格式在 Windows 2000中,有三种不同的文件系统格式,FAT,FAT 3 2和 N T F S。每一种格式都与微软公司的操作系统有不同程度的兼容性。对于大多数安全的站点,应该立即略过这一部分并选择使用 Windows 2000支持的 N T F S的最新版本 ( N T F S 5 ),它提供了 FAT和 FAT 3 2所没提供的下列安全特性:
访问控制列表 (Access Control List):对对象、文件及文件夹进行访问控制。 A C L包括详细记录,指出用户对文件和对象有什么访问权限。
磁盘配额 (Disk Quota):管理员可以监视和限制提供给用户使用的磁盘空间的大小。因此,也能防止硬盘被填满。
加密的文件 (Encrypted File):进一步的加密。当文件和信息被保存到磁盘时,N T F S能加密敏感文件和信息。
正如你所看到的那样,要建立一个安全的 I n t e r n e t网络服务器,N T F S文件系统是非常好的选择。如果你拥有有多个 Wi n d o w s操作系统的网络,或负担不起升级的费用,应考虑如何设置系统。
1,跨操作系统的兼容性并不每个 Wi n d o w s版本都支持所有类型的文件系统,但网络共享可以解决这个问题:
Windows 2000支持 NTFS 5,NTF 4,FAT 3 2和 FAT。
Windows NT 4支持 NTFS 4和 FAT。
Windows 98支持 FAT 3 2和 FAT。
Windows 95,D O S和 O S / 2仅支持 FAT。
2,磁盘和文件容量每种文件系统也对文件、磁盘和分区的大小有不同的限制,例如:
FAT的分区不大于 2 G B。
FAT 3 2的分区不大于 2 T B,且一个文件不得超过 4 G B。
NTFS的分区不大于 2 T B,而且文件大小只受分区大小的限制,但它不能在软盘上使用。
24.2.2 Window 2000安全检查列表为了说明其余部分,将假定服务器使用 Windows 2000。要建立一个可以提供安全的
I n t e r n e t环境的服务器,下一步是创建一个检查列表。在我们继续之前,有一些事情要考虑。
以下建议的一部分要涉及改变系统注册表,如果不知道会发生什么后果,应该备份它。虽然在后面的部分中要做的没什么危险,但为了安全起见,首先应备份系统注册表。
1,设置服务器在域中的角色在 We b服务器上安装 Windows 2000时,选择不是域控制器。如果使用 Windows NT 4.0,
选择既不是域控制器,也不是备份域控制器的独立服务器,这将移除敏感的域信息,例如用户名和口令,使之不暴露到 I n t e r n e t。
(1) 磁盘格式化如前所述,N T F S提供了比 FAT和 FAT 3 2更多的安全特性,如果服务器中的一个驱动器已经用 FAT或 FAT 3 2格式化过,而且认为有必要改成 N T F S,可以用 c o n v e r t,e x e命令,过程很简单:
打开一个命令提示窗口。
键入 C:\>convert d:/fs,ntfs。
按照屏幕提示一步步进行。
注意这个过程不可逆转。
(2) 硬盘分区把网络服务器的硬盘分成多个分区是一个好方法。把所有的 We b文件都放在扩展分区或逻辑分区上,这样就算黑客能控制你的网站,但也无法控制你的主分区,因此他无法修改和损害任何系统文件 (因为所有系统文件都在主分区上 )。
(3) 最新服务包和 h o t - f i x
检查确定服务器上有符合自己安全策略的服务包和 h o t - f i x,检查安装在服务器上的所有软件在微软安全公告栏 (Microsoft Security Bulletins)上的相关信息,在 h t t p,/ / w w w,m i c r o s o f t,
c o m / s e u r i t y上可找到这些内容。
(4) NTFS 8.3命名格式
N T F S对 1 6位程序提供一些向下的兼容性,在需要时会自动生成 8,3格式文件名,例如:
P r o g r a ~ 1 / w o r d,e x e,但在安全的 I n t e r n e t环境中,这个功能应该关闭。要关闭这项功能,可以这样做:执行 S t a r t菜单中的 R u n,键入 r e g e d i t,并在注册表中编辑表 2 4 - 2所示的键值。
表 24-2 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n tCo n t r o l S e t \ C o n t r o l \ F i l e S y s t e m
名称 NtfsDisable8dot 3NameCreation
新值 1
注意,如此操作后,性能也会有所提高。
(5) 隐藏最后进入系统的用户名能在服务器控制台隐藏最后进入系统的用户的用户名,即使有很多的人使用它也很容易。
第 2 4章 服务器防护 计计 731下载
732计计 ASP 3 高级编程 下载两个键值控制着 Wi n d o w s的这个特殊功能。实际上,第一步是停止在 Wi n d o w s登录窗口中显示用户名字。键值修改如表 2 4 - 3所示。
表 24-3 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 D o n t D i s p l a y L a s t U s e r N a m e
新值 1
但是,登录窗口仍然显示由第二个键控制的默认用户名,可以把他设成空白或一个不存在的用户,如果在用户名框里显示一个伪造的用户名,会给服务器提供很大的安全。键值修改如表 2 4 - 4所示。
表 24-4 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 D e f a u l t U s e r N a m e
新值 设置成空白或其他的内容
(6) 显示一个合法的警告信息显示一个合法的警告信息,可以提醒一些人,并且也是系统获得 C 2安全认证所必须的 (仅在美国 )。这个认证由 N S A的 National Computer Security负责,表明这个服务器基本符合一个安全的操作系统的标准,要在登录窗口内显示一段合法警告,可在注册表中编辑如表 2 4 - 5、
表 2 4 - 6所示的键值。
表 24-5 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A C _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 L e g a l N o t i c e C a p t i o n
新值 要显示的信息窗口的标题表 24-6 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 L e g a l N o t i c e Te x t
新值 要显示的信息窗口的文本
(7) 检查登录窗口中“关闭”按钮的状态正如我们所知道的,不需进入系统,在登录窗口可以关闭 Windows 2000服务器。通过设置表 2 4 - 7所示的注册表键值避免这种情况的发生。
表 24-7 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S O F T WA R E
注册表键 \ M i c r o s o f t \ Windows NT\Current Ve r s i o n \ Wi n l o g o n
名称 S h u t d o w n Wi t h o u t L o g o n
新值 0
(8) 禁止匿名的网络访问
Windows 2000允许未经验证的用户枚举在系统上的用户。通过编辑注册表来禁止这一功能,如表 2 4 - 8所示。
表 24-8 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ C o n t r o l \ L S A
名称 r e s t r i c t a n o n y m o u s
值 1
(9) 禁止自动共享网络共享
Windows 2000允许共享创建的网络驱动器并自动共享所有的驱动器,并在 C,\ w i n n t下创建一个 A D M I N S $共享。在一个标准的网络中,这是一个很好的特性,但由于多方面的安全原因,
不适合于一个安全的 I n t e r n e t环境。可以新建下列键来禁止这个功能。如表 2 4 - 9所示。
表 24-9 新建注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ S e r v i c e s \ L a n m a n S e r v e r \ P a r a m e t e r s
名称 A u t o S h a r e S e r v e r
值 1
(10) 检查注册表中对于远程访问的许可
Windows 2000支持对注册表的远程访问,我们应该使用 r e g e d t 3 2,而不是使用 r e g e d i t在下列键值上设置相应的许可。如表 2 4 - 1 0所示。
表 24-10 修改注册表的键值项 目 路径和值注册表路径 H K E Y _ L O C A L _ M A C H I N E \ S Y S T E M
注册表键 \ C u r r e n t C o n t r o l S e t \ C o n t r o l \ S e c u r e P i p e S e r v e r s
名称 \ w i n r e g
点击工具栏上的 S e c u r i t y,并选择 P e r m i s s i o n s,将注意到管理员有完全的控制,B a c k u p
O p e r a t o r (备份操作员 )有读访问的权限。如果在本地的计算机上有备份软件则可删除这个读访问权限。如果远程备份软件没有备份注册表,也可删除它。
( 11) 给管理员的帐号改名第 2 4章 服务器防护 计计 733下载
734计计 ASP 3 高级编程 下载因为系统管理员对系统有最大的权限,所以黑客总是试着以管理员的身份攻击系统。为了防止这种情况发生,可以改变管理员的帐号,并且建立一个假帐号并禁止它没有任何访问权限。用下面简单的几步就可实现,在 S t a r t菜单中选择 P r o g r a m s│ Administrative To o l s│
Computer Management,在出现的对话框中选择 System To o l s│ Local Users and Groups│ U s e r s。
选择他并按 F 2,就可以修改管理员的帐号了。要建立一个假的管理员帐号,在 A c t i o n菜单中选 New User.,,,并命名帐号为 A d m i n i s t r a t o r,如图 2 4 - 1所示。
图 24-1 建立一个假的管理员帐号的窗口
(12) 禁止使用管理员工具有一些工具只有管理员能够使用。实施的最简单的方式是创建一个新的文件夹,如
c,\ a d m i n t o o l s,将相应的工具拷贝到该文件夹内,并设置文件夹的许可权限,使之仅能由
A d m i n i s t r a t o r和 S y s t e m帐号控制其内容。可在 Windows Explorer中右击文件夹,选择 P r o p e r t i e s
可得到文件夹的安全对话窗口。
下面是一些应该以上述方式保护的工具的列表。可根据自己的情况进行相应删减。
cmd.exe:给出可以运行系统任务的命令提示。
cscript.exe,Wi n d o w s脚本主机,用于在命令行中执行一个脚本。
ftp.exe:用于跨服务器和网络传输文件。
net.exe:用于在网络中完成许多功能。
telnet.exe:用于启动远程控制台,与另一个服务器进行 t e l n e t会话。
telnetc.exe:同上。
wscript.exe,Wi n d o w s脚本主机,用于在 G U I环境中执行一个脚本。
2,使用微软管理控制台 (Microsoft Management Console,M M C )
Windows 2000最大改进之一是使用 M M C来控制每一个管理应用程序,可以通过自定义
M M C来控制所有管理工具。因此可以避免一次打开很多辅助工具引起的混乱。下面的步骤能建立一个包含所有用信息的自定义 M M C会话。
在 S t a r t菜单中选择 R u n,并键入 mmc /a,引出一个 M M C窗口,并提供管理员特权。
在 C o n s o l e菜单中,选择 A d d│ Remove Snap-in.。
在对话框中点击 A d d按钮。
在 Add standalone snap-in 对话框中,选择 Group Policy 和 Event Vi e w e r,在两处均选择
Local Computer选项。
点击 C l o s e,然后点击 O k。
展开 Local Computer Policy。
展开 Computer Configuration。
展开 Windows Settings。
展开 Security Settings。
在这个安全性文件夹中,大部分选项都可以选取,如图 2 4 - 2所示。
图 24-2 创建自定义的 M M C会话
(1) 增强口令的安全性确保所有的口令至少有九个字符,这样能减小被发现的风险。把口令加密,确保有大小写字母和数字的混合。通过改变存储在 Account Policy下的 Password Policy文件夹中的值来指定这些选项或其他的一些选项。
(2) 帐号锁定保护如果有人试着去猜测某帐号的口令,应该封锁该用户的帐号。为实现这个功能,进入
Account Lockout Policy文件夹,改变 Account Lockout Count的值,这个值表示输入几次错误口令就封锁帐号。也可以设定一段时间内封锁该帐号,并且在到期后恢复该帐号。
(3) 限时网络访问的范围
Windows 2000缺省情况下允许每个人都可以从网上访问服务器,这是一个相当大的安全漏洞。可以进入 Local Policies文件夹,选择 User Rights Assignment文件夹来改变这个功能。
双击 Access this computer from the network 图标,不要选择 E v e r y o n e框中的 Local Policies,点击 A d d按钮,并选择 Authenticated Users,然后点击 A d d并点击 O K按钮,将得到是否更新的提示信息,然后选 Ye s。
(4) 审计对服务器的登录为了在安全事件日志文件中记录登录活动的信息,可以进入文件夹 Audit Policy,并改变
audit account logon events和 audit logon events 的设置。应该对所有登录尝试,无论成功与否都记录在日志文件中。这是一个很好的办法,能够了解对用户帐号进行的活动。
(5) 日志文件的覆盖间隔第 2 4章 服务器防护 计计 735下载根据网站访问量和登录者的数量,决定保持多大的安全日志文件和什么时候开始重新覆盖日志文件。对于比较忙的服务器来说设置 5 M B的空间应该够了,因为我们需要足够的空间来捕获当前的事件并保持网站的事件后备日志。另一方面,选择覆盖方针要依靠经验。一个好的开始是根据需要选择是否覆盖。
展开 Event Viewer 插件可来进行这两项设置,右击这个安全日志并选择 P r o p e r t i e s。
3,网络接口安全在讨论完用户名和口令之后,需要把注意力放在网络设置上,要确保设置是正确的而且安全的。有不同的方法可以得到这个窗口,最简单的方法是在桌面上右击 My Network Places
图标并选择 P r o p e r t i e s。在对话框中右击 L o c a l
Area Connection再选择 P r o p e r t i e s。
唯一与 I n t e r n e t 服务器有关的协议是
T C P / I P。因此确定没有安装不必要的协议。选择 Internet Protocol(TCP/IP)并点击 P r o p e r t i e s按钮,将显示计算机 I P地址和 D N S条目,但我们更关心的是 W I N S ( Windows Internet Name
S e r v i c e )的属性,通过点击 A d v a n c e d,即能找到 WINS 的属性,如图 2 4 - 3所示。
(1) 禁用 W I N S
在安全的 I n t e r n e t环境里,不能在服务器上运行 W I N S,也不能在远程服务器上使用。使用运行 W I N S的服务器时,有一些安全问题。而且 I n t e r n e t纯粹是基于 T C P / I P的,移走任何使用 W I N S的服务器,然后卸载 W I N S。
(2) 禁用 N e t B I O S
网络输入输出系统 ( N e t B I O S )是传统的用于 Wi n d o w s网络通信的网络协议。 T C P / I P很容易就可取代它。 N e t B I O S提供的几个小的工具软件,也能导致出现安全漏洞。可以在 W I N S选项卡中选择 Disable NetBIOS over TCP/IP来禁用它。
(3) 禁止 L M H O S T S查找
L M H O S T S文件用于 I P地址与 Wi n d o w s的计算机名称的映射,迄今为止,还没有关于因
L M H O S T S查找引起的安全漏洞的报告,但它确实没有什么用途,除非不能用 I P地址而必须用计算机的名称上网。可以通过在 W I N S选项卡中不选取相应的单选项来禁用 L M H O S T S查找。
(4) TCP/IP Filtering
缺省时,将有相当数量的网络端口打开,这些端口被 H T T P,F T D等使用。即使已经在防火墙或代理服务器后面,也要把服务器不用的其他端口关闭。仍在 TCP/IP Settings对话框中选择 O p t i o n s选项卡,然后选择 TCP/IP Filtering的属性。
如果原来没有选择,则选择 Enable TCP/IP Filtering(All adapters)。
在 T C P端口里,只能增加已知的正在使用的端口,如端口 2 1是提供给 F T P的,端口 8 0提供给 H T T P的,端口 4 4 3提供给 S S L的,端口 2 5提供给 S M T P的。照此,也可以增加其他的端口。
736计计 ASP 3 高级编程 下载图 24-3 WINS 的属性设置
允许非 U D P端口。
只允许使用 I P v 6,这是 I P的一个新版本并有更多的安全特性。
根据服务器的使用情况,TCP/IP Filtering对话框如图 2 4 - 4所示。
图 24-4 TCP/IP Filtering对话框
24.2.3 防火墙和代理服务器在继续完善安全策略之前,需在网络安全问题上再多说一点。因为 I n t e r n e t以惊人的速度增长,以致于黑客活动频繁,所以人们比以前任何时候都更加关心网络安全。我们已经掌握了一些保护服务器的方法,但一种最广泛的方法是用防火墙或代理服务器,在服务器和网络之间做为缓冲。
防火墙是能在两个网络之间,通常是 I n t e r n e t和内部网络之间,建立一道安全屏障的硬件设施。代理服务器是特殊类型的防火墙,能够代表一个计算机完成其自身不能或不想完成的工作。
防火墙设置为一个网络接口面向内部网络,另一个接口面向 I n t e r n e t,两者之间没有直接连接。这里可以有多个网卡,但为简单起见,我们假设使用了两个网卡。
防火墙和代理服务器的用途是取得不可路由的 ( n o n - r o u t a b l e )地址,并把它们转换成可路由的 ( r o u t a b l e )地址。由于它们能控制经过它所传递的信息,所以对于防止自己网络受到侵害和骚扰有很大作用。另外,防火墙也可以阻止向 I n t e r n e t上传递敏感信息。
通常防火墙的工作方式基于两句话:
没有明确的允许就是否定。
没有明确的禁止就是允许。
二者之间的差异是很容易理解的。为了安全起见,应该选择非肯定即否定的观点。如果选择了后者的原则,将会感到在服务器上有很多的工作要做。
图 2 4 - 5是典型的两个网络接口设置的工作方式。
为了特定的目的,在服务器上安装了两个网卡,外部接口用于与外部的 I n t e r n e t相连,而内部接口用于与内部局域网相连。这是前面提到的典型设置。连接两端的防火墙将禁止 I P路由。简单地说,局域网与外界的所有通信都来自于防火墙或外部网上的另一个全局地址。防火墙把内部网与外部公共 I n t e r n e t分开,并成为我们网络的安全中心。
第 2 4章 服务器防护 计计 737下载
738计计 ASP 3 高级编程 下载图 24-5 防火墙的工作方式防火墙能通过运行操作系统上的软件来实现,也可以是专门的硬件,比如用 C I S C O的 P I X
防火墙。专用的独立于操作系统的硬件防火墙总比相应的软件运行得快,但需要付出更多的费用。
1,专用网络的地址分配管理员完成内部网络物理连接以后,可通过防火墙与外界联系;可能仅仅移去原来的面向外部 I n t e r n e t的没有防火墙的计算机上的网卡。通过给 I n t e r n e t每台机器分配私有网络 I P地址,
确保 I n t e r n e t接收“好象”是来自防火墙的请求。
互联网分配的数字机构 (Internet Assigned Numbers Authority,I A N A )给内部的专用网络分配三块特定的地址,这些地址不能以最初的状态与 I n t e r n e t连接。由仲裁网关 (如标准的网关、
防火墙或代理服务器 )通过自身传递来自这些地址的请求,并把源地址转换成自己的 I P地址。
因此仍然可以允许专用网络上的主机与公共 I n t e r n e t相连,但这样可以更好地保护自己的专用网络。
专用地址块是:
A类,1 0,0,0,0 ~ 1 0,2 5 5,2 5 5,2 5 5
B类,1 7 2,1 6,0,0 ~ 1 7 2,3 1,2 5 5,2 5 5
C类,1 9 2,1 6 8,0,0 ~ 1 9 2,1 6 8,2 5 5,2 5 5,
例如,有一个 I P地址为 1 9 2,1 6 8,0,6的服务器,不经外部网址的防火墙转换地址,这个服务器不能放在公共 I n t e r n e t地址空间。这是通过网络地址翻译 (Network Address Tr a n s l a t i o n,
N AT )实现的,将在下一部分着重讨论这个问题。
使用这种专用网络空间各有利弊,但很明显,网络安全性能提高了,允许我们控制少数的几台计算机,并允许它们直接访问 I n t e r n e t。由于不需要注册 I S P正在使用的专用地址,这种方法实现相对比较容易。
把局域网接入 I n t e r n e t时,如果不使用专用地址空间就会出现问题。在这种情况下,每台机器将被分配一个可以接入 I n t e r n e t的全球的 I P地址,用一台机器做防火墙几乎是不可能的。
2,网络地址翻译网络地址翻译 ( N AT )的目的是把不可路由地址转换成可路由地址。 N AT有两种类型:动态转换和静态转换。
动态 N AT的目的是给主机提供一个或多个可能的 I P地址用作与外部通信的别名。翻译工作是在使用别名 I P地址的连接的基础上工作的,这个别名只在连接期间使用。用图 2 4 - 6来表工作站组所有外部通信要通过
192.168.0.254 处的网关防火墙示更易理解。
图 24-6 网络地址翻译示意图使用 N AT,能使内部服务器有一个全球的公共地址,这个地址在其他地方可以访问。理解这个问题最简单的方法就是认为服务器有两个 I P地址,实际上,并不是这样。防火墙翻译了所有通过防火墙的进站或出站数据包。
可设定数据包过滤规则来确定允许什么数据包经过防火墙进入内部服务器,我们最感兴趣的是接受 8 0端口和 4 4 3端口 (如果使用 S S L )的 T C P数据包,拒绝其他所有的数据包。甚至可以禁止 I C M P数据包通过防火墙。 I C M P数据包可用来检查一台机器是否响应网络的请求。如果允许 I C M P,机器可能在无意中成为攻击其他网络的帮凶。
I I S和 N AT的问题即使防火墙提供了一个 I P的别名地址做为源主机,I I S自身发出的请求 (或响应 )中的
C o n t e n t - L o c a t i o n引用仍包含内部的 I P地址。显然,这不是我们想要的,但这个问题很容易解决。
打开 I I S并启动站点的 P r o p e r t i e s对话框。
切换到 HTTP Headers选项卡,在 Custom HTTP Headers区域点击 A d d。
把 Custom Header Name设成实际的位置 (内部 I P )。
把 Custom Header Va l u e设成实际的全球的服务器域 ( h t t p,/ / w w w,e x a m p l e,c o m )。
用这种方法,将显示真实的全球的 I P地址,而不是内部的 I P地址。
24.3 IIS 5.0的防护最后,讨论应在本章开头讨论的问题:怎样安全地配置 I I S。在这一部分,将讨论怎样保护 IIS 5.0的安全和建立安全的 I n t e r n e t网站的有关问题。
24.3.1 IIS 的安全配置
1,尽可能少地安装组件安装 Windows 2000时,将自动地为 IIS 5.0安装一些缺省的项目。从安全的观点考虑,一般不会全部安装它们。在保证满足网站需要的同时尽可能少地安装 I I S组件。例如,如果不用
F r o n t P a g e做网页,就不必安装 FrontPage Server Extensions。除非在 A S P应用程序中使用 C D O
或 C D O N T发邮件,否则也不必安装 S M T P功能 (缺省安装 )。
如果已经安装了 I I S也不要紧。卸载也很容易,打开 Add/Remove Program控制面板,选择
Add/Remove Windows Components,然后,卸载不需要的 I I S组件。
第 2 4章 服务器防护 计计 739下载
3) 防火墙使用 NAT 将源主机 IP 192.168,0.7
转换为全球 IP 207.110.67.51
1) 使用专用 IP 192.168.0.7 的网络上的 Web 服务器
2) 所有外部通过内部
IP 192.168,0.254 处的网关
4) 通信从外部
IP 207.110,67.50
处的防火墙发往 Internet
2,建立合理的安全目录结构合理的 We b结构,使我们对应用程序的安全管理变得相当容易。在 Windows Explorer 中,
允许在文件夹而不是文件的基础上定义严格的安全权限。如可定义一些目录,它们只包含唯一类型的文件,例如可执行文件,A S P网页、服务器端包含文件等。
从安全观点看,表 2 4 - 11所示的这个示例结构很容易管理,但还有许多的工作需要 We b设计者设计。然而,也有许多有用的准则对我们有指导意义。
表 2 4 - 11 目录结构示例目录名称 内 容 文件扩展名 权限设定
We b r o o t \ e x e c 可执行文件,e x e,匿名 We b用户 ( I U S R _ M A C H I N E ) (只读
,d l l,和执行 )
,p l A d m i n i s t r a t o r (无限制 )
S y s t e m (无限制 )
We b r o o t \ i n c s 包含文件,i n c,
,s h t m l,
,s h t m
We b r o o t \ a s p A S P网页,a s p
We b r o o t \ h t m l H T M L \客户端脚本,h t m,匿名 We b用户 (IUSR_MACHINE) (只读 )
,h t m l Administrator (无限制 )
S y s t e m (无限制 )
We b r o o t \ i m g s 图像文件,g i f,
,j p e g
注意,尽量避免把,E x e文件放到在线应用程序中,它们非常有可能产生安全问题。
3,保持干净的服务器从服务器上删除所有不必要的资料。
在 C:\inetpub\ iisamples\中的示例应用程序和 IIS SDK是服务器上多余的负担。
另外,在 C,\ i n e t p u b \ A d m i n S c r i p t s \中的 Admin Scripts也应删除。
I I S中的缺省 We b站点也是删除的候选对象,因为它的物理根目录通常位于服务器的主引导分区。如前所述,如果黑客控制了缺省 We b站点,也就可以访问引导分区,Wi n d o w s
文件和命令 s h e l l等。
如果在线应用程序没有使用脚本运行期库对象 (见第 5章 )或 A S P服务器组件,取消它们的注册。在 S t a r t菜单中选择 R u n并键入:
这里,x x x,d l l是包含组件的文件的名称。要意识到某些应用程序需要使用某些对象。因此,在取消组件的注册之前,一定要检查依赖性。
4,加强 R D S的安全性在第 1 0章中,你已经知道微软公司已发布了有关使用远程数据服务 ( R D S )功能的安全声明,
可在 h t t p,/ / s u p p o r t,m i c r o s o f t,c o m / s u p p o r t / k b / a r t i c l e s / Q 1 8 4 / 3 / 7 5,a s p中看到详细内容。过去,
R D S是防止拒绝服务攻击的基础,但微软建议从服务器中删除 R D S或加强其安全防范措施,
这些方法都写在上述地址的网页中。
5,不要给后端 ( B a c k - E n d )代码编索引我们经常看到在应用程序中索引底层代码和用户实际将看到的相关信息,甚至在一些网
740计计 ASP 3 高级编程 下载第 2 4章 服务器防护 计计 741下载站的搜索结果中时常出现一些 g l o b a l,a s a文件,这个错误能在连接字符串中泄露口令、用户名或目录结构。黑客利用这些信息,可获得对网站的非授权访问。
防止这种情况发生的最简单的方法是把后端代码放到主 ( m a s t e r )目录中,并设置索引服务器不能对其索引,从而把它与站点的其余部分分开。通过站点的 r o b o t s,t x t文件指定该目录不能从外部接触,也能防止 I n t e r n e t搜索引擎的对其索引。
6,设置 We b日志文件并保护日志文件在 I I S中,所有的日志配置选项都能通过运行 We b站点的 P r o p e r t i e s对话框并选择 E n a b l e
L o g g i n g来访问,如图 2 4 - 7所示。日志是网站安全的最重要的方面之一。好的日志能提供所需要的所有信息。它有助于监控网站上的活动和活动的起始位置。特别是,W 3 C扩展日志文件格式允许记录一些关键的信息,比如,客户的 I P地址、用户名、服务器 I D、服务器端口号、
方法,URI Stem和协议状态。
图 24-7 配置日志选项应该意识到当用户开始大量进入时,日志文件会迅速地膨胀。当我们必须从网上下载日志时,会慢得令人难以忍受。
如果必须下载这些日志文件,那么确保只有 A d m i n i s t r a t o r和 S y s t e m帐号才有访问日志文件夹的权力。可以考虑把它们加密或使用 K e r b e r o s进行双重安全保护。
另一方面,如果在本地计算机产生日志文件,不应到 We b站点上访问日志文件夹。否则很有可能使自己的日志文件被其他人访问。
7,过滤 I P地址限制对站点的访问
I I S中的一个 We b站点的安全选项 (见 We b站点的 P r o p e r t i e s对话框中的 Directory Security选项卡 )是基于请求访问的客户的 I P地址来限制对网站的访问。正如在本章开始所讲的,这对 I P
欺骗至少是一种威慑。
当地址被拒绝接受时,将向客户返回一个定制的错误页面,提示的关键信息如下:
HTTP 403.6-Forbidden:IP address rejected
该页面位于 C,\ W I N N T \ h e l p \ i i s H e l p \ c o m m o n \ 4 0 3 - 6,h t m,并可进行修改,换成特定的信息,
甚至什么也不显示。要这样做的原因是,如果客户知道是因为 I P地址而被拒绝,那么他们中的一些人就会进一步找到绕过去的方法。
8,认真配置 We b应用程序在 I I S中创建的每个虚拟应用程序,都有相应的配置对话框,以确保其安全。在应用程序的 P r o p e r t i e s对话框中的 H o m e / Virtual Directory选项卡中,点击 C o n f i g u r a t i o n按钮,就可以找到该配置对话框,如图 2 4 - 8所示。
图 24-8 We b应用程序的配置对话框从 APP Mappings选项卡开始,最应该做的是删除不使用的应用程序与文件扩展名之间的映射关系。黑客可通过这种映射关系禁用目标服务器 (这个安全漏洞的详细资料可在
h t t p,/ / w w w,e e y e,c o m / d a t a b a s e / a d v i s o r i e s / a d 0 6 0 8 1 9 9 9,h t m l中查到 )。选择一个想要删除的映射关系,点击 R e m o v e按钮即可。
选择 App Options 选项卡,可以考虑禁用父路径 (Parent Path),这样客户就不能在自己的
U R L请求中使用,.,”表示父路径,使其不能进入隐藏区域,例如,h t t p,/ / w w w,e x a m p l e,
c o m /’,,/ _ v t i _ b i n’ 。另一个解决的方法是在每个文件夹内用默认的主页文件名建立一个文件,
可以防止目录被浏览。
24.3.2 验证方法确认 I n t e r n e t / i n t r a n e t的每一个应用程序都使用了最强大的验证模式。方法越强大,就越能确保用户能够准确地表明自己的身份。 I I S支持三种类型的验证控制:匿名访问、基本验证和
Wi n d o w s内置验证。每一种模式都能在 I I S中的 We b站点 P r o p e r t i e s对话框的 Directory Security
选项卡内设置。点击顶部的 E d i t按钮,可看到图 2 4 - 9的对话框。
每种方式的复选框都能独立地选择。这意味可以同时启用多种机制,并为请求自动地选择最合适的一种模式。
1,匿名验证匿名访问可用时,I I S不管用户的身份,分配一个预先指定的帐号和权限给访问 We b服务器上的文件的任何人。匿名用户的默认帐户是安装 I I S时生成的 I U E R _ M a c h i n e N a m e。注意,
在这里的 M a c h i n e N a m e是安装 I I S的计算机的名称。这个帐号被分配给 G u e s t s帐号组,并给出
742计计 ASP 3 高级编程 下载一个可以修改的口令,并给用户,Log on
L o c a l l y”的权限,用户可以访问 IIS 5.0的
W W W服务。
如果匿名验证启用,访问 W W W服务的用户就可以以分配给 I U S R _ M a c h i n e N a m e
帐号的权限访问这些资源,可以通过上面显示的对话框中的 E d i t钮来修改权限和匿名者的帐号。
注意,安装 I I S 5,0时,也产生另外一个叫 I WA M _ M A C H I N E N A M E的用户帐号。当我们建立一个 I I S进程外运行的 We b应用程序时,将产生一个在 I WAM_ MACHINENAME
帐号下运行的 M T S数据包。
2,基本验证如果用户要使用匿名用户不允许使用的资源,请求将被拒绝,并将,401 Access Denied”
消息返回给用户。如果其他两种验证方式中的一种启用了,则大部分的浏览器将提示用户给出用户名和口令,并把用户名和口令以及请求提交给服务器确认。
基本验证和 Wi n d o w s内置验证之间的不同在于用户名和口令的传递方式不同。在基本验证中,它们没有加密,以明文的方式传递。用户的 I D也可简单地表示 (如 M o b i u s ),也能完整地 表 示 (如 D o m a i n N a m e / M o b i u s )。 在 IIS 5.0中还 能 用 新 的 形 式表 示,如 m o b i w s @
D o m a i n N a m e,c o m,
明文形式传送的用户名和口令可以用 S S L来加密。
3,Wi n d o w s内置的验证 ( I WA )
使用 I WA (以前在 Windows NT 4.0中称为 T L M或 Windows NT Challenge/Response验证 ),
用户口令不必在网络上传递,因此黑客们无法窃取。服务器 ( I I S )询问用户信息时,客户用服务器预先选定好的已加密的安全信息包来回应,其加密方法和验证方法依赖于 Wi n d o w s所用的协议。
如果客户和 I I S服务器都与一个 Kerberos KDC(Key Distribution Center)有可信的连接并且都有 A D兼容性,I I S将使用 K e r b e r o s网络验证协议 (Kerberos Network Authentication Protocol)
来验证。 Windows 2000的验证基于 K e r b e r o s模式,K e r b e r o s是一种新的安全模式。可在下面的网址找到更多的关于这方面的信息,h t t p,/ / w w w,m i c r o s o f t,c o m / s e c u r i t y / t e c h / k e r b e r o s。
如果服务器或客户端与 K e r b e r o s不兼容,那么,服务器将使用 Windows NT Challenge/
R e s p o n s e协议。可在下面的网址中找到有关这方面的更多信息,h t t p,/ / w w w,microsoft.
c o m / N T S e r v e r / s e c u r i t y。
不考虑这些协议的详细内容,有关 I WA有两点需要搞清楚:
匿名用户被拒绝或匿名用户访问一个页面时,在建立与页面内容的连接之前而被强制进行身份验证时,才会使用 I WA进行验证。
IWA与 Internet Explorer 2以上版本兼容。
第 2 4章 服务器防护 计计 743下载图 24-9 验证方法设置窗口
24.4 SQL Server 7.0和 O D B C的安全无论是一个简单地展示自己开发的 S Q L数据库的内容的 A S P网页,还是正在开发完整的
I n t e r n e t / i n t r a n e t应用程序,当建立 A S P到 S Q L的连接时,要采取适当的安全措施。
24.4.1 保护 s a帐号首先要采取的步骤是保护 s a帐号。 s a是 SQL Server的缺省系统管理员的帐号,缺省时没有口令。按下面的步骤来设置口令:
1) 运行 SQL Server Enterprise Manger。
2) 连接到保存数据库的 SQL Server。
3) 打开 S e c u r i t y文件夹。
4) 点击 L o g i n s。
5) 右击 sa 帐号而后选择 P r o p e r t i e s。
6) 在口令框中输入新口令。
7) 点击 O K按钮。
8) 再次输入口令来确定。
24.4.2 为数据库访问建立替代帐号保护 S Q L服务器的下一步骤是创建一个角色 ( r o l e ),提供使用 We b站点 / We b应用程序所需的最小数量的访问权限。不同的帐号可能执行不同的任务,可以建立几个不同的任务。可在
Enterprise Manager中创建 SQL Database Role:
1) 打开网页使用的数据库的文件夹。
2) 选择 R o l e s。
3) 在空白区域单击鼠标右键,选择 New Database Role 。
4) 在文本框中给出角色名称并选择 O K。
5) 右击新添加的角色,并选 P r o p e r t i e s。
6) 点击 P e r m i s s i o n s按钮。
产生的对话框允许为每个数据库相关对象设定访问权限。应该确定给予 We b站点 / We b应用程序能够进行访问的权限。并对角色进行相应的设置。例如,如果网站只浏览指定的数据表,则该角色只能对该对象进行 S E L E C T访问。
安全策略中最重要的一点是不允许直接对数据库表进行访问。取而代之的是,对表的访问必须通过视图和存储过程进行,他们提供访问功能,并给予角色使用它们的适当权限。这样即使具有合法的用户名 /口令的用户也不能超越 A S P代码,做其他事情。
现在,可以准备为数据库增加一个替代帐号。为了安全起见,不应在自己的网站上使用
s a帐号。系统管理员的帐号有每个数据库的完全访问权限,并且有权增加用户和进行其他工作。如果使用 s a帐号,如果黑客控制了我们的 O D B C连接,他们就可能不受任何限制。在
Enterprise Manager中可按如下方法建立一个新的 S Q L帐号:
打开 S e c u r i t y文件夹。
选择 L o g i n s。
744计计 ASP 3 高级编程 下载
在空白区域右击后选 New login。
在 N a m e文本框内,键入用户 I D。
点击 SQL Server Authentication,并在 P a s s w o r d文本框里输入口令。
将缺省的数据库改为自己的数据库。
点击 Database Access选项卡。
允许访问自己的数据库。
允许访问我们在 We b站点 / We b应用程序中建立的数据库角色。
如果在应用程序环境中使用 S Q L,并想通过使用 S Q L数据库验证用户 I D和口令,则有两个选择:一方面,可以把所有用户的帐号和口令存在一个表中,并根据这个表编写自己的用户验证程序。另一方面,可以把用户 I D和口令作为 S Q L服务器的 S Q L连接字符串的一部分来验证,这意味着为每个访问系统的人创建一个用户 I D。但这也意味着如果用户输入错误的用户 I D和口令,则 A S P数据库连接将失败。
编写代码并不困难,例如建立一个 l o g i n,h t m l文件:
这段代码将把用户的 I D和口令提交给 Ve r i f y,a s p,Ve r i f y,a s p将把它们插入一个连接字符串中,并试着连接数据库,并将显示连接是否成功的消息。
第 2 4章 服务器防护 计计 745下载如果选择使用 D S N来连接 S Q L服务器数据库,当使用缺省的注册 I D和口令设置 S Q L
Server Authentication可用时,上面的注册程序代码中的数据库连接字符串应改为如下的代码。
24.5 建立自己的 A S P安全系统本章一直在讲这个问题。我们已经研究了用服务器上的硬件和软件来实现安全的措施,
在 A S P编码范围内也可以实现这些安全机制。 建立自己的基于 A S P的应用程序级上的安全模式,
能提供更高水平的安全保证、更好的防御机制和定制的用户跟踪功能,为我们提供一个便利的容易使用的个性化系统。
典型的 A S P应用程序级安全逻辑应该包括:
对封闭用户组 (Closed User Group,C U G )实施访问控制并限制 We b站点的访问。
在访问网站的某一特定区域之前,强制登录用户提供个人情况细节。
使网络的访问日志更加详细。这样的日志能用来调查安全漏洞、客户计帐、规划容量和判断网站某一区域受欢迎的程度。
编程访问存储在客户数字证书中的数据。
我们已知道怎样才能使 I I S日志更加详细,在下一章里,将看到关于数字证书更加详细的内容。在本章的余下部分,将讨论关于实现对某些网页的访问控制的问题,限制 We b页面接受成员,即上面涉及到的封闭用户组。
请看下面的例子,并根据自己的需要进行相应的修改。这个例子包括了处理用户身份验证的基本代码和前面所讲的访问控制逻辑。可从 h t t p,/ / w w w,w r o x,c o m下载本书里所有的代码。
实现封闭用户组 /成员关系这里的成员关系网站包括两个分开的站点:
成员网站:由公共网页和只有成员才能访问的网页两部分组成的 I n t e r n e t网络应用,如图 2 4 - 1 0所示。
图 24-10 成员站点主页
746计计 ASP 3 高级编程 下载第 2 4章 服务器防护 计计 747下载
成员关系管理网站:允许成员关系管理员查看成员数据库并接受或拒绝申请的 I n t r a n e t
We b应用程序,如图 2 4 - 11所示。
图 2 4 - 11 成员关系管理主页注意,I n t r a n e t网站工作在 T C P / I P的 8 8 8 0端口上,这里假定防火墙只允许访问
8 0端口,因此我们能确信在公司网络以外没有人能访问这个 We b应用程序。此外,
这个网站使用 Wi n d o w s内置验证来验证特定人员(即成员关系管理员)的访问。
1,成员数据库成员站点包含的一个功能是用户可注册他们的详细资料,另一个功能是进入成员区,在用户注册时能够得到的信息是:
邮件箱地址 ( E m a i l A d d r e s s )。
姓名 ( N a m e )。
公司 ( C o m p a n y )。
口令 ( P a s s w o r d )。
这些信息被写入 SQL Server 7.0数据库中一个名为 U s e r s的表里。另外,记录中的一个字段为 S t a t u s,用来表明成员资格申请的状态,成员资格管理应用程序允许管理员检查数据库并可修改 S t a t u s字段,可分别为 P e n d i n g,(未定 ) R e j e c t e d (拒绝 )和 M e m b e r (成员 )。
登录过程包括询问用户的 e m a i l地址和口令,并通过数据库进行验证,如果用户的身份正确并且 S t a t u s字段设置为 M e m b e r,用户就被重新定向到成员区。如果当前的字段 S t a t u s是
P e n d i n g或 R e j e c t e d,则显示相应的信息。
为了节约时间,可用下面的脚本自动生成 U s e r s表和相应的字段。打开 SQL Query
A n a l y z e r,选择想用来存放数据的表,在窗口输入这段代码,然后按 F 5。
生成的表如图 2 4 - 1 2所示。
748计计 ASP 3 高级编程 下载图 24-12 Users表的结构
2,成员 I n t e r n e t站点成员 I n t e r n e t站点有如下简单的结构:
网站的内容在下列子目录中,它们是:
public:包括可被任何人浏览的站点内容。
members:包括只能被成员浏览的网页内容。
global:包括用于许多文件的公共内容。
images:包括所有的图形文件。
_private:保留给 F r o n t P a g e使用。
g l o b a l,i m a g e s和 _ p r i v a t e文件夹没什么要解释的。我们直接来看一下这个应用程序的核心 p u b l i c文件夹,用户可以在 p u b l i c文件夹中注册到该网站并登录到站点的受限区域,如图 2 4 - 1 3所示。
3,用户注册页面在这个站点中,P r e g s i t e r,a s p是我们最感兴趣的第一个页面,
如图 2 4 - 1 4所示。因为它控制新用户访问网站的成员区所需的注册。
它有两个任务 (或方式 ):
显示 H T M L窗体,来得到用户的信息。 图 24-13 成员站点的结构图 24-14 用户注册页面
当窗体提交后处理用户信息。
(1) 显示方式
H T M L窗体将用户信息提交给同一个 A S P文件,但同时将一个参数 (mode = apply)添加在
U R L末尾。这样 A S P将很容易地判定需要完成的是那一个任务。
当用户信息被提交以后,除检查 m o d e参数以外,A S P将检查窗体中字段是否有空白。如果有一个或多个没有填写,则重新显示窗体。
(2) 数据库更新方式窗体的这个处理过程将把信息写入 SQL Server数据库,可以用 A D O (见本书的第 8 ~ 1 2章 )
来完成这项工作。注意,在这个页面和其它页面,你自己必须把连接字符串添加到 U s e r s表中。
这个字符串的内容依赖于最初是在那里创建这个表。
首先,调用一个查询来检查 E m a i l的地址是否已经存在于数据库中。如果不存在,把这个信息添加到 U s e r s表中。注意,此时的 S t a t u s应设置为,P” ( P e n d i n g )。
第 2 4章 服务器防护 计计 749下载
4,用户登录页面注册到站点后,用户需要等待其成员资格的申请被批准。我们把发出通知这件工作留给读者来完成。申请被批准后,用户需要登录。用 P l o g o n,a s p来完成这个工作。
与 P r e g i s t e r,a s p类似,这个页面也有两个方式:
显示 H T M L窗体,获取用户的身份凭证。
验证用户身份并决定允许对成员区访问或拒绝请求。
P l o g o n,a s p如图 2 4 - 1 5所示。
图 24-15 用户登录窗口
(1) 显示方式和 P r e g i s t e r,a s p一样,H T M L将信息提交给同样的 P l o g o n,a s p文件,并在 U R L末端添加一个参数 (mode = logon),使其意识到应以验证方式运行。
750计计 ASP 3 高级编程 下载
(2) 验证方式在 P l o g o n,a s p文件的开始,检查用户提供无效的身份凭证和登录失败次数,计数将被存放在 ASP Session对象中。三次失败后,把用户重定向到主页。这样将阻止黑客进入站点的尝试。
然后,再检查 m o d e参数以及用户是否填写了所有的内容。如果不是这样,我们假设仍然在显示方式中,并输出相应的窗体。
验证之后,在 U s e r s表中检索与指定的邮件地址匹配的记录。再次提醒,在代码中为 U s e r s
表填写了正确的连接字符串。
如果发现了相应的记录,就检查 P a s s w o r d字段。如果口令正确,检查 S t a t u s的内容。如果用户的申请被拒绝或没有确定,浏览器将重定向到 P l o g o n f a i l,a s p页面,显示相应的错误信息。
如果用户的申请被接受,用户将进入网站。同时,把一些用户信息从数据库中取出并存放到 S e s s i o n对象中,使用户的区域个性化。
还需要注意的是,我们设置 S e s s i o n (,A u t h” ) =,Y”,这个标志表明已经通过了验证过程。我们将马上会看到为什么这一点很重要。
第 2 4章 服务器防护 计计 751下载如果口令不正确,将重新显示 H T M L窗体,失败次数增加 1:
5,用户登录失败如图 2 4 - 1 6所示,我们用一个非常简单的 P l o g o n f a i l,a s p页面来显示用户登录失败的各种原因。
图 24-16 Plogonfail.asp页面登录失败的原因由 U R L中的 r e a s o n参数决定。该参数在将用户重定向到该页面前给出。
6,保持成员区域的安全成员区所有的限制性内容都位于 M e m b e r s
子目录下。一旦用户登录成功,他们将被重定向到 M h o m e,a s p。这个文件包含到所有受限内容的链接,如图 2 4 - 1 7所示。
在登录 成功时,我们设 置了 S e s s i o n
(,A u t h” ) =,Y” 。每个页面都有如下的 A S P逻辑来检查用户是否通过了验证。这样,任何人也不可能不经登录而直接进入受限网页。
因此,避免登录而直接进入受限网页的任何企图都将导致用户的浏览器重新定向到登录窗口。
752计计 ASP 3 高级编程 下载图 24-17 成员区窗口第 2 4章 服务器防护 计计 753下载
7,成员资格管理者的 I n t r a n e t站点和 I n t e r n e t网站一样,基于 I n t r a n e t的成员资格管理站点也很简单。它包含了一个菜单页面
( d e f a u l t,a s p )和完成各种工作的文件 m e m b e r,a s p。
8,成员管理者页面
M e m b e r s,a s p是显示成员数据库条目的 A S P文件,如图 2 4 - 1 8所示。另外,它允许修改每一个记录的 S t a t u s字段。此文件能在五种方式下运行:
显示批准的成员。
显示未定的成员。
显示被拒绝的成员。
显示所有记录。
处理管理者做出的修正。
图 24-18 成员管理者页面
(1) 显示方式可以从主菜单 ( d e f a u l t,a s p )中选择某种显示方式,并在 U R L中作为 S t a t u s参数传递。
使用简单的 A D O逻辑,我们能检索到匹配想要 S t a t u s的一个 R e c o r d s e t,它包含了用户的详细资料。如果想要的 S t a t u s不是 A (所有记录 ),在 S Q L查询中,将指定一个 W h e r e子句。
R e c o r d s e t以表中的 C o m p a n y字段排序,使屏幕上的记录以同样的顺序显示。注意,在代码中为 U s e r s表填写了正确的连接字符串。
用户的详细资料将通过遍历 R e c o r d s e t中的条目显示。 每个记录的 S t a t u s用一个下拉框显示,
并被设置成显示正确的值。
所有成员的详细资料都显示在 H T M L窗体里,可被提交给其自身,以更新任何成员的已改变的 S t a t u s字段。
754计计 ASP 3 高级编程 下载
(2) 数据库更新方式在 A S P文件的开始,检查 U s e r s表是否需要更新。通过检查页面请求中的 b u t S u b m i t值来实现这一功能。
在更新模式下,每个用户记录根据窗体中的 S t a t u s字段更新。
一旦数据库被更新,把用户重新定向到主菜单。
24.6 小结现在,你应该对建立一个安全的网站时会遇到的安全问题的各个方面有很全面的了解。
在短短的一章里,我们不能面面俱到地讲述所有知识,因此必须紧跟最新技术的步伐。要时刻注意有关所使用的软件的安全漏洞问题。通常漏洞一出现,相应的补丁马上就会推出。
研究和学习是跟上潮流的最好方法,应尽可能地了解自己所用产品的安全漏洞。通过管理使系统的雇员和用户都遵守这些规则来实施自己的安全策略。
第 2 4章 服务器防护 计计 755下载