【摘要】Internet及Web已成为许多人日常生活、工作及交流的一种主要工具。由于Internet是根据一定的共识进行自制、在全球范围内实现的庞大的系统,它并不在法律和政治范围内运行。作为Web管理员,感触最深的是:确保Web安全不是件容易的事,并非一篇论文能说得清楚。由于Internet和Web技术的开放性和多层次性,决定了Internet和Web的安全需要格外的关注。本文就是作者根据日常工作环境,讨论如何建立安全的Web站点。
在讨论Web站点安全之前,了解Web的技术原理,对于Web安全工作者而言应该是有益处的。
一、Web技术简介
World Wide Web称为万维网,简称Web。它的基本结构是采用开放式的客户/服务器结构(Client/Server),分成服务器端、客户接收机及通讯协议三个部分。
1、服务器(Web服务器)
服务器结构中规定了服务器的传输设定、信息传输格式及服务器本身的基本开放结构。Web 服务器是驻留在服务器上的软件,它汇集了大量的信息。Web服务器的作用就是管理这些文档,按用户的要求返回信息。
2、客户接收机(Web浏览器)
客户机系统称为Web浏览器,用于向服务器发送资源索取请求,并将接收到的信息进行解码和显示。Web浏览器是客户端软件,它从Web服务器上下载和获取文件,翻译下载文件中的HTML代码,进行格式化,根据HTML中的内容在屏幕上显示信息。如果文件中包含图像以及其他格式的文件(如声频、视频、Flash等),Web浏览器会作相应的处理或依据所支持的的插件进行必要的显示。
3、通讯协议(HTTP协议)
Web浏览器与服务器之间遵循HTTP协议进行通讯传输。HTTP(HyperText Transfer Protocol,超文本传输协议)是分布式的Web应用的核心技术协议,在TCP/IP协议栈中属于应用层。它定义了Web浏览器向Web服务器发送索取Web页面请求的格式,以及Web页面在Internet上的传输方式。
Web服务器通过Web浏览器与用户交互操作,相互间采用HTTP协议相互通信(服务器和客户端都必须安装HTTP协议)。Web服务器也称为HTTPd服务器(d是指UNIX系统中的daemon)。最早的Web服务器软件是在UNIX系统上发展起来的,有CERN和NCSA两种类型。现在占居市场分额最大的是Apache服务器软件,并且可以在多种环境下运行,如Unix、Linux、Solaris、Windows 2000等。在Window环境下,由于Microsoft得天独厚的优势,因而IIS (Internet Information Server)成为Windows NT及 Windows 2000下主要的服务器软件。
Web浏览器软件中,Netscape的Web浏览器NN(Netscape Navigator)、NC(Netscape Communicator)具有最广泛的系统平台支持,可以在所有平台上运行;Microsoft的IE(Internet Explorer)则是Windows平台上运行最完美的浏览器软件。
Web服务器和Web浏览器之间通过HTTP协议相互响应。一般情况下,Web服务器在80端口等候Web浏览器的请求, Web浏览器通过3次握手与服务器建立起TCP/IP联接。
大多数Web服务器和Web浏览器已使用了HTTP/1.1版。HTTP1.1具有许多新的特色:
(1) 能够识别主机名,允许多个虚拟主机名共存于一个IP上。
(2) 具有内容协商的能力,允许服务器以多种格式存取资源,供Web服务器和Web浏览器选择最佳版本。
(3) 通过持续性联接加速Web服务器的响应速度。
(4) 允许Web浏览器请求索取文件的某部分,从而为端点续传功能提供更好的支持。
4、公共网关接口介绍(CGI)
在讨论Internet和Web技术给人们提供潇洒服务的同时,不能不提到CGI(Common Gateway Interface)。它是Web服务器与外部应用程序之间交换数据的标准接口软件。有了CGI,Web网站将不只是静态页面的收藏点,而是可以通过在Web服务器上运行一定的程序,输出一个动态的页面。CGI是一种独立于语言的接口,CGI程序可以使用任何可以访问环境变量和产生输出的编程语言来编写,有C、C++、PERL、Shell等。
CGI与Web服务器的关系:首先,用户的Web 服务器必须支持CGI程序,并且CGI应用程序必须在Web服务器上运行。客户端(Web浏览器)常用Post、Get两种方式向Web服务器提交表单数据(图、表、文字的链接等),Web服务器采用相应的数据传递方式向CGI应用程序传递数据。CGI对数据处理后,将动态生成的Web页面发给Web服务器,服务器再把页面发送给发送请求数据的客户端。客户端用Post 方式递交数据,Web 服务器按照标准方式向CGI输入和接受数据,CGI同样按标准方式读取和输出数据;客户端用Get方式递交数据,在Unix类系统中Web服务器通过环境变量方式把数据转交CGI应用程序,CGI应用程序须从环境变量中读入数据,输出结果同样送到标准输出中。
二、建立Web安全体系
Web赖以生成的环境包括计算机硬件、操作系统、计算机网络、许多的网络服务和应用,所有这些都存在着安全隐患,最终威胁到Web的安全。Web 的安全体系结构非常复杂主要包括以下几个方面:
* 客户端软件(既Web浏览器软件)的安全;
* 运行浏览器的计算机设备及其操作系统的安全(主机系统安全);
* 客户端的局域网(LAN);
* Internet;
* 服务器端的局域网(LAN);
* 运行服务器的计算机设备及操作系统的安全(主机系统的安全);
* 服务器上的Web服务器软件。
在分析Web服务器的安全性时,一定要考虑到所有这些方面,因为它们是相互联系的,每个方面都会影响到Web服务器的安全性,它们中安全性最差的决定了给定服务器的安全级别。由于篇幅的限制不能够详细地讨论所有影响Web安全的因素。考虑到影响Web安全的最直接的因素,下面主要讨论Web服务器软件及支撑服务器运行的操作系统的安全设置与管理。
1、主机系统的安全需求
网络的攻击者通常通过主机的访问来获取主机的访问权限,一旦攻击者突破了这个机制,就可以完成任意的操作。对某个计算机,通常是通过口令认证机制来实现的登陆到计算机系统上。现在大部分个人计算机没有提供认证系统,也没有身份的概念,极其容易被获取系统的访问权限。因此,一个没有认证机制的PC是Web服务器最不安全的平台。所以,确保主机系统的认证机制,严密地设置及管理访问口令,是主机系统抵御威胁的有力保障。
2、Web服务器的安全需求
随着“开放系统”的发展和Internet的知识普及,获取使用简单、功能强大的系统安全攻击工具是非常容易的事情。在访问你的Web站点的用户中,不少技术高超的人,有足够的经验和工具来探视他们感兴趣的东西。还有在人才流动频繁的今天,“系统有关人员”也可能因为种种原因离开原来的岗位,系统的秘密也可能随之扩散。
不同的Web网站有不同的安全需求。建立Web网站是为了更好地提供信息和服务,一定程度上Web站点是其拥有者的代言人,为了满足Web服务器的安全需求,维护拥有着的形象和声誉,必须对各类用户访问Web资源的权限作严格管理;维持Web服务的可用性,采取积极主动的预防、检测措施,防止他人破坏,造成设备、操作系统停运或服务瘫痪;确保Web服务器不被用做跳板来进一步侵入内部网络和其他网,使内部网免遭破,同时避免不必要的麻烦甚至法律纠纷。
三、Web服务器设备和相关软件的安全考虑
Web服务器的硬件设备和相关软件的安全性是建立安全的Web站点的坚实基础。人们在选择Web服务器主机设备和相关软件时,除了考虑价格、功能、性能和容量等因素外,切莫忽略安全因素,因为有些服务器用于提供某些网络服务时存在安全漏洞。挑选Web服务器技术通常要在一系列有冲突的需求之间作出折中的选择,要同时考虑建立网站典型的功能需求和安全要求
对于Web服务器,最基本的性能要求是响应时间和吞吐量。响应时间通常以服务器在单位时间内最多允许的链接数来衡量,吞吐量则以单位时间内服务器传输到网络上的字节数来计算。
典型的功能需求有:提供静态页面和多种动态页面服务的能力;接受和处理用户信息的能力;提供站点搜索服务的能力;远程管理的能力。
典型的安全需求有:在已知的Web服务器(包括软、硬件)漏洞中,针对该类型Web服务器的攻击最少;对服务器的管理操作只能由授权用户执行;拒绝通过Web访问Web服务器上不公开的内容;能够禁止内嵌在操作系统或Web服务器软件中的不必要的网络服务;有能力控制对各种形式的执行程序的访问;能对某些Web操作进行日志记录,以便与入侵检测和入侵企图分析;具有适当的容错功能。
所以,在选择Web服务器时,首先要从建立网站的单位的实际情况出发,根据安全政策决定具体的需求,广泛地收集分析产品信息和相关知识,借鉴优秀方案或实施案例的精华,选择你认为能够最好地满足本单位包括安全考虑在内的需求的产品组合。
四、建立安全的Web网站
在本篇文章的开始讨论过Web站点的组成的三个部分。需要强调的是,主机操作系统是Web的直接支撑者,合理配置主机系统,能为Web服务器提供强健的安全支持。
1、理解配置主机操作系统
(1) 仅仅提供必要的服务
已经安装完毕的操作系统都有一系列常用的服务,UNIX系统将提供Finger、Rwho、RPC、LPD、Sendmail、FTP、NFS、IP转发等服务。Windows NT系统将提供RPC(远程过程调用)IP(网际协议)转发、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。而且,系统在缺省的情况下自动启用这些服务,或提供简单易用的配置向导。这些配置简单的服务应用在方便管理员而且增强系统功能的同时,也埋下了安全隐患。因为,关于这些应用服务的说明文档或是没有足够的提醒,或是细碎繁杂使人无暇细研,不熟练的管理员甚至没有认真检查这些服务的配置是否清除了已知的安全隐患。
为此,在安装操作系统时,应该只选择安装必要的协议和服务;对于UNIX系统,应检查/etc/rc.d/目录下的各个目录中的文件,删除不必要的文件;对于Windows系统,应删除没有用到的网络协议,不要安装不必要的应用软件,如C/C++编译程序等。一般情况下,应关闭Web服务器的IP转发功能。
系统功能越单纯,结构越简单,可能出现的漏洞越少,因此越容易进行安全维护。对于专门提供Web信息服务(含提供虚拟服务器)的网站,最好由专门的主机(或主机群)作Web服务器系统,对外只提供Web服务,没有其他任务。这样,可以保证(1)使系统最好地为Web服务提供支持;(2)管理人员单一,避免发生管理员之间的合作不调而出现安全漏洞的现象;(3)用户访问单一,便于控制;(4)日志文件较少,减轻系统负担。
对于必须提供其他服务,如(提供需拟网站服务)FTP服务与Web服务共用文件空间,既FTP和HTTP共享目录,则必须仔细设置各个目录、文件的访问权限,确保远程用户无法上传通过Web服务所能读取或执行的文件。
(2) 使用必要的辅助工具,简化主机的安全管理
启用系统的日志(系统帐户日志和Web服务器日志)记录功能。监视并记录访问企图是主机安全的一个重要机制,以利于提高主机的一致性以及其数据保密性。
Unix系统,可以在服务器上安装tcp_wrapper工具。它在其他网络服务启动之前首先启动。tcp_wrapper的配置文件可以控制只有本主机上的用户才可以用登陆(Telnet)到本服务器。
Windows NT提供端口访问控制功能,有助于加强Web服务器的安全。在网络→协议→TCP/IP协议属性→高级,选用“启用安全机制” → 配置,将出现窗口。选择“仅允许”,便可以利用“添加”功能,设置允许访问的端口。
2、合理配置Web服务器
(1)在Unix OS中,以非特权用户而不是Root身份运行Web服务器。(如Nobody、www、Daemon)
(2)设置Web服务器访问控制。通过IP地址控制、子网域名来控制,未被允许的IP地址、IP子网域发来的请求将被拒绝;
(3)通过用户名和口令限制。只有当远程用户输入正确的用户名和口令的时候,访问才能被正确响应。
(4)用公用密钥加密方法。对文件的访问请求和文件本身都将加密,以便只有预计的用户才能读取文件内容。
3、设置Web服务器有关目录的权限
为了安全起见,管理员应对“文档根目录”(HTML文件存放的位置)和“服务器根目录”(日志文件和配置文件存放的位置)做严格的访问权限控制;
(1)服务器根目录下存放日志文件、配置文件等敏感信息,它们对系统的安全至关重要,不能让用户随意读取或删改;
(2)服务器根目录下存放CGI脚本程序,用户对这些程序有执行权限,恶意用户有可能利用其中的漏洞进行越权操作,比如,增、删、改;
(3)服务器根目录下的某些文件需要由Root来写或者执行,如Web服务器需要Root来启动,如果其他用户对Web服务器的执行程序有写权限,则该用户可以用其他代码替换掉Web服务器的执行程序,当Root 再次执行这个程序时,用户设定的代码将以Root身份运行。
4、谨慎组织Web服务器的内容
5、安全管理Web服务器
Web服务器的日常管理、维护工作包括Web服务器的内容更新,日志文件的审计,安装一些新的工具、软件,更改服务器配置,对Web进行安全检查等。主要注意以下几点:
(1)以安全的方式更新Web服务器(尽量在服务器本地操作);
(2)经常审查有关日志记录;
(3)进行必要的数据备份;
(4)定期对Web服务器进行安全检查;
(5)冷静处理意外事件。
五、Web网站的安全管理
1、建立安全的Web网站,首先要全盘考虑Web服务器的安全设计和实施。无论是政府网站,还是企业、商业机构或是社会团体,各自都有其特殊的安全要求,所以,根据本单位的实际情况出发,周密制定安全政策是实现系统安全的前提。
2、对Web系统进行安全评估,也就是说,权衡考虑各类安全资源的价值和对它们实施保护所需要的费用。这个当中不能只考虑看得见的资源实体,应该综合考虑资源带来的效益,资源发生不安全情况的几率,资源的安全保护被突然破坏时将可能带来的损失。
3、制定安全策略的基本原则和管理规定,即指明各类资源的基本安全要求以及为了达到这种安全要求应该实施的事项。安全管理是由个人或组织针对为了达到特定的安全水平而制定的一整套要求有关部门人员必须遵守的规则和违规罚则。对于Web服务提供者来说,安全管理的一个重要的组成是哪个人可以访问哪些Web文挡,获权访问Web文档和使用这些访问的人的有关部门权利和责任,有关人员对设备、系统的管理权限和维护守则,失职处罚等。
4、对员工的安全培训,培养员工主动学习安全知识的意识和能力。一个网站的安全政策必须被每一个工作人员所理解,这样才可能让每一个员工自觉遵守、维护它。
尽管如此,Web网站的安全是相对的,没有绝对的安全,我们只能把遭受攻击的可能性降到最低。更重要的是,必须做到“有法必依”,把安全政策体现到设备的选购、网络结构的设计、人员的配置、管理及每一个人的日常的工作中。
本文所用到的英汉缩略说明:
Web 是 World Wide Web 的简称
HTTP(Hyper Text Transfer Protocol) 超文本传输协议
IIS (Internet Information Server) Internet 信息服务器
CGI(Common Gateway Interface) 公共网关接口
LAN(Local Area Network) 局域网
RPC(Remote Procedure Call) 远程过程调用
TCP(Transmission Control Protocol) 传输控制协议
IP(Internet Protocol) 网际协议
FTP(File Transfer Protocol) 文件传输协议
SMTP(Simple Mail Transfer Protocol) 简单邮件传送协议
PC(Personal Computer) 个人计算机
OS(Operating System) 操作系统
……