一般来说,Web服务器上可能存在的漏洞有以下几种。
1)Web服务器因各种原因而不能返回客户要访问的秘密文件、目录或重要数据。
2)远程用户向服务器发送信息时,特别是像信用卡之类的重要信息时,中途遭不法分子非法拦截。
3)入侵者可能突破Web服务器本身存在的一些漏洞,破坏其中的一些重要数据,甚至造成系统瘫痪。
4)CGI(Common Gateway Interface,公共网关接口)安全方面存在的漏洞。CGI是Web信息服务与外部应用程序之间交换数据的标准接口。它具有两个功能:收集从Web浏览器发送给Web服务器的信息,并且把这些信息传送给外部程序;把外部程序的输出作为Web服务器对发送信息的Web浏览器的响应,送给该Web浏览器。通过CGI程序,Web服务器真正实现了与Web浏览器用户之间的交互。在HTML文件中,表单(Form)与CGI程序配合使用,共同来完成信息交流的目的。
CGI可能的漏洞有:有意或无意地在主机系统中遗漏bug,给非法黑客创造条件;用CGI脚本编写的程序在涉及远程用户从浏览器中输入表单或进行检索(Search Index)时,会给Web主机系统造成危险。因此,从CGI角度考虑Web的安全性,主要是在编制程序时,应详细考虑到安全因素,尽量避免CGI程序中存在漏洞。
因此,不管是配置服务器,还是在编写CGI程序时都要注意系统的安全性。应该堵住任何存在的漏洞,创造安全的环境。
从Web服务器版本上来看,NCSA1.3以下版本的HTTPd明显存在安全上的漏洞,即客户计算机可以任意地执行服务器上面的命令,这对于服务器来说是非常危险的。但是NCSA1.4以上版本的服务器补上了这个缺陷。
2.Web服务器的安全策略和安全机制
Web服务器的安全策略是由个人或组织针对安全而制定的一整套规则和决策。每个Web站点都应有一个安全策略,这些安全策略因需求的不同而各不相同。对Web服务提供者来说,安全策略的一个重要的组成是哪些人可以访问哪些Web文档,同时还定义获权访问Web文档的人和使用这些访问的人的有关权力和责任。采取何种安全措施,取决于制定的安全策略。必须根据需要和目标来设置安全措施,估计和分析安全风险。制定Web站点的安全策略的基本原则是不要为细节所困扰。
安全机制是实现安全策略的技术或手段。必须根据需要和目标来设置安全系统,估计和分析可能的风险。定义安全策略,选择一套安全机制,首先要做的是威胁分析,主要包括以下几个方面。
1)有多少外部入口点存在?有哪些威胁?
2)研究谁会对网络产生威胁:威胁来自黑客,还是训练有素的有知识的入侵者,或是来自工业间谍?
3)分析会有什么样的威胁:入侵者访问哪些数据库、表、目录或信息?威胁是网络内部的非授权使用,还是移动数据?
4)数据是遭受到了破坏,还是受到了攻击?攻击是网络内、外的非授权访问,还是地址欺骗、IP欺骗及协议欺骗等?
5)确定安全保护的目标。
6)提出价格合理的安全机制。
根据威胁程度的大小、方向和入侵的对象,进行分析评价,作为制定Web的安全策略和设计网络安全措施的基本依据。安全设计时,要优先考虑必要的且可行的步骤,正确制定安全策略,并采取必要的安全措施。
具体来说,不管是配置服务器,还是在编写CGI程序时都要注意系统的安全性。尽量堵住任何可能出现的漏洞,创造安全的环境。在具体服务器设置及编写CGI程序时应该注意以下几点:
1)禁止乱用从其他网站下载的一些工具软件,并在没有详细了解之前尽量不要用root身份注册执行,以防止某些程序员在程序中设下的陷阱。
2)在选用Web服务器时,应考虑到不同服务器对安全的要求不一样。一些简单的Web服务器就没有考虑到一些安全的因素,不能把他用于商业应用,只能作一些个人的网点。
3)在利用Web中的.htpass来管理和校验用户口令时,校验的口令和用户名不受次数的限制。
对Web服务器和Web客户来说,最重要的安全提升机制如下:
1)主机和网络的配套工具和技术;
2)Web应用程序的配置;
3)Web服务的认证机制;
4)防火墙;
5)日志和监视。
每种机制都涉及某种类型系统的安全性,并且它们之间是相互联系的。
3.组织Web服务器
大多数Web服务器都会记录它们收到的每一次连接和访问。这个记录一般包括IP地址和主机名。如果站点采取一些形式的验证系统,服务器也会记录用户名。如果用户在逗留期间填写了任何表格,该表格下所有变量的值都会被记录在案。包括请求的状态、传递数据的大小、用户E-mail地址等。一些浏览器和服务器一样,甚至也能提供有关使用中的浏览器、URL、客户的IP地址,以及用户的E-mail地址等信息。这些记录对于发现和跟踪黑客袭击是很有用的。
组织Web服务器一般包括以下几个方面的内容:认真选择Web服务器设备和相关软件;配置Web服务器,使用它的访问和安全特性;组织和Web服务器相关的内容。组织主要包括以下步骤:
1)联机检查。检查源程序,查看连接URL和相应的内容是否图文一致,查看URL所提供的内容是否和网页的描述一致。检查驱动器和共享的权限,系统设为只读状态。
2)检查HTTP服务器使用的Applet脚本,尤其是与其客户交互作用的CGI脚本,防止非法用户恶意使用CGI程序,执行内部指令,对Web 服务器造成破坏。
3)充分考虑最糟糕的情况后,配置自己的系统,即使黑客完全控制了系统,他还要面对一堵高墙。
4)将敏感文件放在基本系统中,再设二级系统,使所有的敏感数据不向Internet开放。
4.安全管理Web服务器
安全管理Web服务器,可以从以下几个方面采取一些预防措施:
1)对于在Web服务器上所开设的账户,应在口令长度及修改期限上做出具体要求,防止被盗用。
2)限制在Web服务器上开账户,定期删除一些短进程的用户。
3)尽量在不同的服务器上运行不同的服务(如mail服务和Web服务等)程序。尽量使FTP, mail等服务器与Web服务器分开,去掉FTP, sendmail, tftp, NIS, NFS, finger, netstat等一些无关的应用。这样在一个系统被攻破后,不会影响到其他的服务和主机。
4)如果不需要,尽量关闭Web服务器上的特性服务,否则,有可能遭到该特性所导致的安全威胁。在Web服务器上去掉一些绝对不用的shell等解释器,即当在CGI程序中没用到Perl(Practical Extraction and Report Language)时,就尽量把Perl在系统解释器中删除掉。
5)定期查看服务器中的日志logs文件,应该定期地记录Web服务器的活动,分析一切可疑事件。其中,最重要的是监视那些试图访问服务器上的文档的用户。
6)设置好Web服务器上系统文件的权限和属性,对可访问的文档分配一个公用的组,如WWW,并且只给它分配只读的权限。把所有的HTML文件归属WWW组,由Web管理员管理WWW组,并且只有Web管理员具有对Web配置文件写的权限。
7)有些Web服务器把Web的文档目录与FTP目录指在同一目录,应该注意不要把FTP的目录与CGI-BIN指定在一个目录之下。这是为了防止一些用户通过FTP上的Perl或SH之类的程序,并用Web的CGI-BIN去执行造成不良后果。
8)通过限制访问用户IP或DNS。限制CGI-BIN目录(即存放可执行的脚本和程序目录)的访问或使用权限,该目录只有系统管理员具有写的权限。为了系统的安全性,所有的脚本和程序都应该存放在服务器上的某个目录下。另外,许多Web服务器本身存在一些安全上的漏洞,需要在版本升级时不断地更新。
无论多么安全的站点,都可能被破坏,都有可能遭到黑客的攻击。所以,一定要沉着冷静地处理意外事件。
5.Web服务器的安全措施
1)从基本做起
针对Web服务器的安全,我们应从最基本的安全措施做起,这是最保险的安全方式。比如说,将服务器上含有机密数据的区域都转换成NTFS格式;防毒程序也必须按时升级更新,同时在服务器和桌面计算机上安装防毒软件,这些软件可设定成每天自动下载最新的病毒库文件。Exchange Server(邮件服务器)上也安装上防毒软件,这类软件可扫描所有寄来的电子邮件,寻找被病毒感染的附件,若发现病毒,邮件马上会被隔离,降低使用者被感染的机会。
另一个保护网络的好方法是限定使用者登录网络时的权限。存取网络上的任何数据都必须通过密码登录。在设定密码时,混用大小写字母、数字和特殊字符。在Windows NT Server Resource Kit里就有这样的工具软件。还要设定定期更新密码,且密码长度不得少于8个字符。
2)备份保护
大多数人都没有意识到,备份本身就是一个巨大的安全漏洞。因此,最好利用密码保护好备份磁盘,若备份程序支持加密功能,还可以将数据进行加密。
3)使用RAS的回拨功能
Windows NT支持服务器远端存取(Remote Access Service,RAS),但同时,RAS服务器对黑客来说也非常方便,只需要一个电话号码和一点耐心,他们就能通过RAS进入主机。因此,如果远端用户经常是从家里或是固定的地方上网,可以使用回拨功能,允许远端用户登录后立即挂断,然后RAS服务器会拨出预设的电话号码接通用户,因为此电话号码已经预先在程序中,黑客也就没有机会指定服务器回拨的号码了。
另一个办法是限定远端用户只能存取单一服务器。可以将用户经常使用的数据复制到RAS服务器的一个特殊共用点上,再将远端用户的登录限制在一台服务器上,而非整个网络。如此一来,即使黑客入侵主机,也只能在单一机器上作怪,可以在很大程度上减小其产生的破坏性。
最后就是在RAS服务器上使用“另类”网络协议。可以把TCP/IP协议当做RAS协议。当RAS还支持IPX/SPX和NetBEUI协议时,使用NetBEUI当做RAS协议,可以将非法入侵者搞得晕头转向。
4)注重工作站的安全
工作站是进入服务器的大门,加强工作站的安全能够提高整个网络的安全性。对于初学者,可以在所有工作站上使用Windows 2000,这是一个比较安全的操作系统。这样就能将工作站锁定,若没有权限,一般人将很难取得网络配置信息。
可以限制使用者只能从特定的工作站进行登录,将工作站当做简易型的终端机(dumb terminal),或者说是智慧型的简易终端机。换言之,工作站上不会存有任何数据或软件,将计算机当做dumb terminal使用时,服务器必须执行Windows的终端服务程序,而且所有应用程序都只在服务器上运作,工作站只能被动接收并显示数据。
5)及时升级或修补程序
在微软公司内部有一组工作人员专门检查并修补安全漏洞,这些修补程序(补丁)有时会被收集成服务包(service pack)发布。服务包通常有两种不同版本:一个是任何人都可以使用的40位的版本,另一个是只能在美国和加拿大发行的128位版本。128位版本使用128位的加密算法,比40位的版本要安全得多。
6.Web服务器安全的几个要素
建立一个安全的Web网站要求用户必须对Web服务器的安全性有全面的认识。从信息发布平台内部来看,应该做到如下几点:
1)恰当地配置Web服务器,只保留必要的服务,删除和关闭无用的或不必要的服务。因为启动不必要的服务可能使他人获得系统信息,甚至获取密码文件。
2)增强服务器操作系统的安全,密切关注并及时安装系统及软件的最新补丁;建立良好的账号管理制度,使用足够安全的口令,并正确设置用户访问权限。
3)对服务器进行远程管理时,使用如SSL等安全协议,避免使用Telnet、FTP等程序,因为这些程序是以明文形式传输密码的,容易被监听;严格控制远程root身份的使用,仅在绝对需要时才允许使用具有高授权的操作。
4)禁止或限制CGI程序和ASP、PHP脚本程序的使用。因为这些程序会带来系统的安全隐患,而且某些脚本程序本身就存在安全漏洞。
5)使用防火墙及壁垒主机,对数据包进行过滤,禁止某些地址对服务器的某些服务的访问,并在外部网络和Web服务器中建立双层防护。利用防火墙,将服务器中没有必要从防火墙外面访问的服务及端口阻隔,进一步增强开放服务的安全性。
6)使用入侵检测系统、监视系统、事件、安全记录和系统日志,以及网络中的数据包,对危险和恶意访问进行阻断、报警等响应。
7)在网关和服务器上使用多层次的防病毒系统,尤其对于允许上传和交互信息发布的服务器来说,防止病毒及木马程序的侵入是保证服务器系统安全的一个关键。
8)使用漏洞扫描和安全评估软件,对整个网络进行全面的扫描、分析和评估,从用户账号约束、口令系统、系统监测、访问控制、数据加密、数据完整等多方面进行安全分析和审计。建立和提高用户的安全策略,及时发现并弥补安全漏洞。
8.3.2 Web服务器的安全结构
Web服务器是Internet上直接面向用户的计算机,为目标用户群访问提供信息,Web服务器必须是Internet上的任何接入点都可以访问的。与其他诸如DNS和FTP等公共服务相比,Web服务器对黑客高手更有诱惑力,因为一个成功地侵入一个网站的人可以随意更改主页从而让别人更加意识到他的存在。这些入侵事件能够让一个公司失去客户的信任,尤其是当一些敏感数据被窃取甚至被公开时就更加严重。
如果说用于防止从Internet对内部网络进行攻击的防火墙是最重要的网络安全领域的话,Web服务器应该说是第二个需要高度安全的领域了。
Web服务器安全由几个安全区域组成,为了保证允许条件下的最高度的安全保护,安全必须在每个区域都予以一致的实现。
1.基础设施区
基础设施区域定义服务器在网络中的位置。这个区域必须能够防止数据窃听、网络映射和端口扫描等入侵技术的威胁。而且对一个暴露的Web服务器的成功入侵要能进行跟踪,因为被侵入的服务器可能会用来作为攻击其他重要的服务器的基地(这种方式在DoS攻击中最为常见)。
所有提供Internet服务的服务器都通过一个集中部件保护起来并且位于一个隔离的网络,这个隔离的网络称为非军事区(DMZ)。具有保护功能的组件可能是一个复杂的防火墙或一个简单的路由器(这个路由器配置了具有很强限制的包过滤规则)。因此,只有指定的服务器服务才是允许访问的。一般DMZ会采用一个具有端口安全和报文保护的转换开关,这种方式可以保证DMZ的高度安全。
出于对服务器物理安全的考虑,必须将服务器安装在一个安全的房间里(或数据处理中心),并且所有的电源、电话线和网线等都必须得到物理上的保护。
2.网络协议区
网络通信一般指的都是TCP/IP通信,操作系统内核对通信负责并且保证一个透明的通信流。然而,一些函数或者协议的易受攻击点可能会被用来发起攻击或破坏行为。因此,内核必须经过必要的配置,以便阻挡这些类型的攻击手段。虽然位于服务器前面的防火墙或路由器可以防止很多类型的攻击,但一些Web服务器的设置也必须做一些相应的调整。
防止SYN洪水攻击是很关键的,在所有的操作系统中,Linux提供了一种称为SYNcookies的最有效的解决方案。此外,ICMP重定向和对广播地址的ping操作,以及IP源路由包也应该被拒绝。适用附加的内核过滤函数可以增加安全级别。
3.服务区
服务区定义哪些是需要的服务。通过“如果不是指定需要的全部禁止”的安全策略,服务器上仅仅配置完成必要的操作所必需的服务,否则就会为攻击者提供更多的攻击点。
服务区仅适用可以保证足够安全级的服务:没有充分认证能力的服务(如rexec)或者传输未经过加密的敏感数据的服务(如Telnet、FTP或通过WWW传输信用卡敏感数据)都应该用更安全的相应服务所替代(如SSH、SSLftp或HTTPS)。
4.应用区
为安全起见,每个服务都必须单独配置。一个配置的不好的邮件服务器可能会被用来发送垃圾邮件,配置不好的Web服务器可以执行所有的系统命令。注意,千万不要创建具有高特权的服务(root)。
5.操作系统区
最后的保护机制是操作系统自身的安全。如果应用区的安全方法配置合理的话,即使入侵者成功地进入计算机系统也没有足够的管理权限完成破坏工作。程序的安装,尤其是高特权的程序,应该限制在系统操作的绝对需要范围内。许多高特权的程序可以通过更高级别的认证来限制用户的滥用,因为系统中的标准用户账号根本不需要使用这些程序。但这还远远不够,万一攻击者成功地进入计算机系统,应该存在一个检测入侵的机制,这被称为基于主机的入侵检测。当然,最好还要能够监视和记录系统中的文件操作,以便了解入侵者的真正意图。也不能忽视经常性地备份,并且不要丢弃旧的备份文件。这种做法不仅可以用来配置备份服务器和避免数据丢失,它还可以用来跟踪系统中文件的操作情况。
Internet需要配置一台自己的Web服务器时,如果没有自己的安全基础设施,应该在Web服务器前面放一台配置了相应过滤规则的路由器。这台Web服务器仅仅提供WWW和HTTPS服务,当然它也需要具有远程控制特性。另外,这台Web服务器最好还能够发送邮件。Linux服务器和网页是由三个不同的管理员维护的,所有的管理操作都应该保证在以后进行日志分析时容易理解
最新评论