web安全论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文主要以Web应用和服务的大众化平台——网站系统的安全为研究对象包括服务器、操作系统、数据库、编程语言和客户端,分析Web应用中存在的各种安全问题、Web网络的安全性设置问题、如何保护Web站点上的机密数据问题、各种Web服务器的安全设置问题和各种程序语言的安全问题。在研究方法上,根据系统论的观点,将Web安全的各个问题分类,按照系统平台安全、程序安全、数据安全和通信安全的结构来组织全文。并采用理论分析与实践结合的方法来书写文章的内容。通过以上分析,得出了一些加强Web安全的可操作性经验和对策。这些对策体现了现在通用的最佳实践原则。
关键词: 网站; Web安全 ;系统安全
Web安全对策研究
摘 要
本文主要以Web应用和服务的大众化平台——网站系统的安全为研究对象包括服务器、操作系统、数据库、编程语言和客户端,分析Web应用中存在的各种安全问题、Web网络的安全性设置问题、如何保护Web站点上的机密数据问题、各种Web服务器的安全设置问题和各种程序语言的安全问题。在研究方法上,根据系统论的观点,将Web安全的各个问题分类,按照系统平台安全、程序安全、数据安全和通信安全的结构来组织全文。并采用理论分析与实践结合的方法来书写文章的内容。通过以上分析,得出了一些加强Web安全的可操作性经验和对策。这些对策体现了现在通用的最佳实践原则。
关键词: 网站; Web安全 ;系统安全
Research on Web Security’s Countermeasures
Abstract
This thesis researched the security of the website system ,which is the popular Web applications and services platform. This system is include servers, operating system, database, web procedure and the client. The thesis analysis the various security issues of Web applications, how to set up a security configuration, how to protect the confidential data on the website, all kinds of Web server's security settings and various programming language’s security. In the research methods, according to the theory of system, this thesis sort out Web security issues as system Platform security, process security, communication security and security of the data. And the thesis' structure was organized by the classification. The contents of the thesis were written not only by theoretical analysis but also by practice approach. After the research, we got some strengthening of the security Web operational experience and countermeasures. Those countermeasures are in the rule of best practice.
keyword:Website;Web Security;System Security
目 录
摘 要 I
Abstract II
目 录 III
1 绪论 1
1.1 课题背景及目的 1
1.2 国内外研究状况 1
1.3 论文构成及研究内容 2
2 WEB安全概述 3
2.1 WEB安全的定义 3
2.2 WEB安全面临的
问题 3
2.2.1 WEB服务器的安全 3
2.2.2 WEB客户端的安全 3
2.2.3 WEB通信的安全 4
2.3 WEB安全的对策 4
2.3.1 物理安全策略 4
2.3.2 访问控制策略 4
2.3.3 信息加密策略 5
2.3.4 安全管理策略 5
3 系统平台安全 6
3.1 操作系统 6
3.1.1 UNIX操作系统 6
3.1.2 LINUX安全设置 6
3.1.3 WINDOWS系统 7
3.2 WEB服务器平台 8
3.2.1 IIS平台 8
3.2.1.1 删除不必要的虚拟目录 8
3.2.1.2删除危险的IIS组件 8
3.2.1.3为IIS中的文件分类设置权限 9
3.2.1.4删除不必要的应用程序映射 9
3.2.2 APACHE平台 10
3.2.2.1 APACHE服务器的安全特性 10
3.2.2.2 APACHE主要的安全缺陷 10
3.2.2.3 APACHE的安全配置 11
4 程序安全 12
4.1 ASP程序 12
4.1.1 源代码泄露 12
4.1.2 SQL注入 12
4.2 PHP程序 13
4.2.1 关闭错误显示 13
4.2.2 开启安全模式 13
4.3 和JSP 程序 14
5 数据安全 14
5.1 常用数据库 14
5.1.1 ACCESS数据库 14
5.1.1.1 ACCESS数据库的存储隐患 14
5.1.1.2 ACCESS数据库的解密隐患 15
5.1.1.3 防止ACCESS数据库被下载 15
5.1.2 MSSQL数据库 15
5.1.2.1使用加密协议 15
5.1.2.2 修改所使用的TCP/IP端口 16
5.1.3 MYSQL数据库 16
5.1.3.1 帐户安全 16
5.1.3.2 访问安全 16
5.2 防盗链和采集 16
5.2.1 防盗链 17
5.4.2 防采集 17
6 网络安全 17
6.1 客户端安全性 18
6.1.1 ACTIVEX 18
6.1.2 JAVASCRIPT 18
6.1.3 COOKIES 18
6.2 黑客攻击 18
6.2.1 获得系统权限 19
6.2.2 中止WEB服务 19
6.3 防火墙 19
6.3.1 包过滤防火墙 19
6.3.2 代理防火墙 19
6.3.3 双穴主机防火墙 20
总 结 21
致 谢 21
参考文献 23
1 绪论
1.1 课题背景及目的
中国的互联网发展已进入了第二个十年,随着互联网的基础设施的建设,人们观念意识的变革,互联网越来越成为人们生活中不可分割的一部分。基于互联网的Web应用如火如荼,迅速发展,各类网站数量也呈井喷式增长,随之而来的,是日益突出的安全问题。不断被发现的漏洞,黑客的恶意攻击,在网络上疯狂爬行的蠕虫,迅速扩散的病毒,盗取虚拟财物的木马,所有这一切都令人惶惶不可终日。人们一方面享受着 Web带来的好处,另一方面却要忍受着不可预料的安全威胁。本课题就是针对这种尴尬的现状,全面地介绍和分析Web服务和应用中存在的各种漏洞和所面临的各种威胁,探讨Web安全问题的对策。
1.2 国内外研究状况
目前和相当一段时间内,国内外关于Web安全的研究主要从安全协议的制定、系统平台的安全、网站程序的安全编程、安全产品的研发、Web服务器的安全控制等方面着手。安全协议的制定方面,已经提出了大量实用的安全协议,具有代表性的有:电子商务协议SET,IPSec协议,SSL/TLS协议,简单网络管理协议SNMP, PGP协议,PEM协议,S-HTTP协议,S/MIME
协议等。这些协议的安全性分析特别是电子商务协议,IPSec协议,TLS协议是当前协议研究中的热点。系统平台的安全方面主要研究安全操作系统、安全数据库等,以及现有常用系统(如WINDOWS,UNIX,LINUX)的安全配置;还有就是针对黑客常用的攻击手段制定安全策略。网站程序的安全编程方面,主要研究规范化编程以及现有编程语言(ASP,,PHP,CGI,JSP等)的安全配置和发布增加功能与安全性的新版本。安全产品的研发方面,目前在市场上比较流行,而又能够代表未来发展方向的安全产品大致有以下几类:防火墙、安全路由器、虚拟专用网VPN、安全服务器、电子签证机构CA和PKI产品、用户认证产品、安全管理中心、入侵检测系统IDS、入侵防御系统IPS等;在上述所有主要的发展方向和产品种类上,都包含了密码技术的应用,并且是非常基础性的应用。 Web服务器的安全控制方面,主要研究时下流行的Apache、IIS的安全缺陷分析与安全配置,如Apache的访问控制机制、安全模块,IIS的安全锁定等。
1.3 论文构成及研究内容
本文根据对Web安全概念做出的定义,分系统安全、程序安全、数据安全和通信安全对Web安全问题所涉及的四个主要方面分章节做出相应的论述。系统安全方面,介绍和分析两大类操作系统类UNIX和Windows,并对Apache和IIS平台的安全设置进行了一定分析。程序安全方面,主要介绍了ASP和PHP这两种个人常有的编程语言,并对企业级开发语言和JSP做了粗略的介绍。通信安全方面,通过对客户端脚本ActiveX和JavaScript,以及Cookies的研究,大致地对Web客户端安全做出了分析。数据安全方面,一是论述了常见数据库的安全,二是介绍了时下最新的数据安全威胁——盗链和采集,并给出了相应的解决办法。
2 WEB安全概述
2.1 WEB安全的定义
Web作为建立在Internet基础上的应用,Web安全的定义不可避免地与网络安全和信息安全概念相重叠,其内涵和外延可看作网络安全和信息安全的一个子集。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的因素或者恶意的攻击而遭到破坏、更改、泄露,确保系统能连续、可靠、正常地运行,网络服务不中断。[1]国家信息安全重点实验室对信息安全给出的定义是:“信息安全涉及到信息的机密性、完整性、可用性、可控性。综合起来说,就是要保障电子信息的有效性。”据此我们给Web安全做出如下定义:Web安全是指信息在网络传输过程中不丢失、不被篡改和只被授权用户使用,包括系统安全、程序安全、数据安全和通信安全。本文即根据此定义分章论述。
2.2 WEB安全面临的问题
2.2.1 WEB服务器
的安全
在Web安全中,服务器的安全是最基础也是最困难的,因为服务器的源代码庞杂,如FreeBSD6.0的汇编行数达到1,271,723,OpenBSD则有1,260,707[2],Windows Vista更是达到惊人的5000万行。针对Web服务器具体的安全威胁主要体现在:服务器程序编写不当导致的远程代码执行;应用程序编写不当、过滤不严格造成的代码注入,可能引起信息泄漏、文件越权下载、验证绕过、远程代码执行等;乐观相信用户输入、过滤不严格导致跨站脚本攻击,在欺骗管理员的前提下,通过精心设计的脚本获得服务端Shell;针对服务器系统的拒绝服务攻击。
2.2.2 WEB客户端的安全
当用户使用浏览器查看、编辑网络内容时,采用了ActiveX、Java Applet、Cookie等技术的应用程序会自动下载并在客户机上运行,如果这些程序被恶意使用,可以窃取、改变或删除客户机上的信息。对于恶意程序的侵害,用户很难实时的判断程序性质,因此,在获得高度交互的Web服务时,如何抵御这些安全威胁绝非简单的客户端设置就可以解决的。同时,跨站脚本攻击对于客户端的安全威胁同样无法忽视,跨站脚本攻击属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。与之相对的是,利用跨站脚本攻击的蠕虫已经在网络中肆虐过。
2.2.3 WEB通信的安全
和其他的Internet应用一样,Web信道同样面临着网络嗅探和以拥塞信道、耗费资源为目的的拒绝服务攻击的威胁。需要注意的是,很多针对Web应用的攻击并非只针对服务端、客户端或信道,综合利用各方面的安全漏洞进行攻击的案例数不胜数。
2.3 WEB安全的对策
2.3.1 物理安全策略
物理安全策略的目的是保护计算机系统、网络服务器、打印机等硬件实体和通信链路免受自然灾害、人为破坏和搭线攻击;验证用户的身份和使用权限、防止用户越权操作;确保计算机系统有一个良好的电磁兼容工作环境;建立完备的安全管理制度,防止非法进入计算机控制室和各种偷窃、破坏活动的发生。抑制和防止电磁泄漏是物理安全策略的一个主要问题。目前主要防护措施有两类:一类是对传导发射的防护,主要采取对电源线和信号线加装性能良好的滤波器,减小传输阻抗和导线间的交叉耦合。另一类是对辐射的防护,这类防护措施又可分为以下两种:一是采用各种电磁屏蔽措施,如对设备的金属屏蔽和各种接插件的屏蔽,同时对机房的下水管、暖气管和金属门窗进行屏蔽和隔离;二是干扰的防护措施,即在计算机系统工作的同时,利用干扰装置产生一种与计算机系统辐射相关的伪噪声向空间辐射来掩盖计算机系统的工作频率和信息
特征。
2.3.2 访问控制策略
访问控制是网络安全防范和保护的主要策略,它的主要任务是保证网络资源不被非法使用和非法访问。它也是维护网络系统安全、保护网络资源的重要手段。各种安全策略必须相互配合才能真正起到保护作用,但访问控制可以说是保证网络安全最重要的核心策略之一。访问控制策略主要包括入网访问控制、网络的权限控制、目录级安全控制、属性安全控制、网络服务器安全控制、网络监测和锁定控制、网络端口和节点的安全控制和防火墙控制。
2.3.3 信息加密策略
信息加密的目的是保护Web服务的数据、文件、密码和控制信息,保护网上传输的数据。网络加密常用的方法有链路加密、端点加密和节点加密三种。链路加密的目的是保护网络节点之间的链路信息安全;端点加密的目的是对源端用户到目的端用户的数据提供保护;节点加密的目的是对源节点到目的节点之间的传输链路提供保护。用户可根据网络情况酌情选择上述加密方式。
2.3.4 安全管理策略
在网络安全中,除了采用上述技术措施之外,加强网络的安全管理,制定有关规章制度,对于确保网络的安全、可靠地运行,将起到十分有效的作用。网络的安全管理策略包括:确定安全管理等级和安全管理范围;制订有关网络操作使用规程和人员出入机房管理制度;制定网络系统的维护制度和应急措施等。
3 系统平台安全
作为Web应用的基础,操作系统以及提供Web服务的应用软件的安全直接关系到整个Web服务和应用的安全。Internet发展到现在,用于实现Web服务的操作系统主要是类UNIX系统(包括AIX,HP-UX,SCO, FreeBSD, NetBSD, OpenBSD,Solaris,Linux发行版等)和windows系统,搭建Web服务的平台则主要使用Apache和IIS。本章将对他们的安全性和设置进行大致的分析和说明。
3.1 操作系统
3.1.1 UNIX操作系统
UNIX于1969年产生于AT&T贝尔实验室,并同时诞生了划时代的编程语言C。在三十多年的发展过程中,产生了众多分支。比较著名的有:SUN公司的SunOS,后来发展为跨平台的工作站操作系统Solaris;同样基于加州大学伯克利分校BSD的NetBSD、FreeBSD和OpenBSD,其中FreeBSD因易于在PC上安装而影响巨大,NetBSD注重于不同的CPU 结构和网络服务,OpenBSD注重安全性;还有就是由芬兰赫尔辛基大学Linus Torvalds开创的Linux和众多的发行版,如RedHat,Suse,Novell,Debian,Turbolinux。随着中国计算机网络的发展,国人也开发出了众多的类UNIX系统,如国防科大的麒麟,中科院的红旗,为中国的信息化建设提供了安全的基础平台。
3.1.2 LINUX安全设置
一般来说,对Linux系统的安全设置包括取消不必要的服务、限制系统的
出入、保持最新的系统核心、修补安全漏洞、检查登录密码、设定用户账号的安全等级、增强安全防护工具、采用安全工具以及经常性的安全检查等。在采用安全工具以及经常性的安全检查方面,在此介绍几个工具。
Nessus安全漏洞扫描器可以远程检查与网络有关的安全漏洞以及丢失的软件补丁和系统上的其它漏洞。Nessus软件可用来测试新安装的系统,也可以在维护期内检测工作中的服务器。
Nmap工具是另一种网络扫描器,不过应用不广泛。这个工具在Linux中可缺省安装。这个工具对于那些不适应配置Linux软件的IT工作人员来说是非常有用的。非常关注安全的公司将把以太网接口连接到具有防火墙保护的接口。这些公司还在这些接口连接能够检测网络通信的专用的包检测服务器。然后用ACID等工具分析这个信息,并且把这个信息同能够通过防火墙的以前的攻击进行比较。
ACID能够创建一个报警的电子邮件,并且通过网络GUI(图形用户界面)显示有关可疑的数据包的详细信息。
3.1.3 WINDOWS系统
Windows作为微软Microsoft软件帝国的城基,因其易学易用的特点而在桌面系统领域占据着统治地位。同时,随着众多业余编程用户的加入,使得Windows的服务器系统得到了越来越多的应用,在我国,70%的用户使用windows系统作为服务器系统。但Windows操作系统的大多数版本有一个共性:默认安装后安全性都非常差。比较明显的一个例子就是在用户登陆后,每个用户都具有硬盘分区的访问控制权。另外,系统还开放了一些服务(如Messenger服务),允许通过迂回的方式绕过用户审核直接进入系统。
如果要用一句简单的话来对比UNIX和Windows的安全性,那么可以说:UNIX系统默认把所有服务都关闭,用什么开什么;Windows系统默认所有服务都开启,不用什么关什么。当然这句话是有失偏颇的,只是说明了我们要对Windows进行安全设置,需要关闭一些服务。
以windows servers 2003为例,我们可以进行如下设置来提高windows系统的安全:用户设置上,Administrators 角色最好不要超过两个,为管理员用户设置一个健壮(8位以上包含字母数字符号)的密码,为管理员改名等。文件系统权限上,C盘只给administrators 和system权限,Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。另外,将net.exe ,
cmd.exe ,tftp.exe ,netstat.exe ,regedit.exe ,at.exe ,attrib.exe,format.exe 这些文件都设置只允许administrators访问。网络通信上,启用WIN2003的自身带的网络防火墙,并进行端口的改变。Internet 连接防火墙可以有效地拦截对Windows 2003服务器的非法入侵,防止非法远程主机对服务器的扫描,提高Windows 2003
服务器的安全性。同时,也可以有效拦截利用操作系统漏洞进行端口攻击的病毒,如冲击波等蠕虫病毒。还有就是通过更改一些注册表项来防止SYN洪水攻击、ICMP重定向报文攻击以及关闭默认共享。
3.2 WEB服务器平台
世界上很多公司都开发了提供Web服务的平台软件,知名的有Microsoft IIS、IBM Web Sphere 、Oracle IAS、Apache和Tomcat,本文主要介绍常用的IIS和Apache的相关安全问题。
3.2.1 IIS平台
IIS是 Internet Information Server的缩写,它是微软公司主推的Web服务平台,最新的版本是VISTA里面包含的IIS 7.0。IIS的安装,管理和配置都相当简单,这是因为IIS与Windows NT Server网络操作系统紧密的集成在一起,另外,IIS还使用与Windows NT Server相同的SAM(Security Accounts Manager,安全性账号管理器),对于管理员来说,IIS使用诸如Performance Monitor和SNMP(Simple Network Management Protocol,简单网络管理协议)之类的NT已有管理工具。IIS支持ISAPI,使用ISAPI可以扩展服务器功能,可以实现Win2003下支持PHP,CGI,JSP程序。
下面主要分析以Win2003为基础的IIS6的安全配置。
3.2.1.1 删除不必要的虚拟目录
IIS安装完成后在wwwroot下默认生成了一些目录,并默认设置了几个虚拟目录,包括IISHelp、IISAdmin、IISSamples、 MSADC等,它们的实际位置有的是在系统安装目录下,有的是在重要的Program files下,从安全的角度来看很不安全,而且这些设置实际也没有太大的作用,所以我们可以删除这些不必要的虚拟目录。
3.2.1.2删除危险的IIS组件
默认安装后的有些IIS组件可能会造成安全威胁,应该从系统中去掉,以下组件可以根据自己的需要决定是否删除。
Internet服务管理器:这是基于Web 的IIS服务器管理页面,一般情况下不应通过Web进行管理,建议卸载它。
SMTP Service和NNTP Service:如果不打算使用服务器转发邮件和提供新闻组服务,就可以删除这两项,否则,可能因为它们的漏洞带来新的不安全。
样本页面和脚本:这些样本中有些是专门为显示IIS的强大功能设计的,但同样可被用来从Internet上执行应用程序和浏览服务器,建议删除。
3.2.1.3为IIS中的文件分类设置权限
除了在操作系统里为IIS的文件设置必要的权限外,还要在IIS管理器中为它们设置权限,以期做到双保险。一般而言,对一个文件夹永远也不应同时设置写和执行权限,以防止攻击者向站点上传并执行恶意代码。另外目录浏览功能也应禁止,预防攻击者把站点上的文件夹浏览个遍最后找到漏洞。一个好的设置策略是: 为Web 站点上不同类型的文件都建立目录,然后给它们分配适当权限。例如:
静态文件文件夹:包括所有静态文件,如HTM 或HTML,给予允许读取
、拒绝写的权限。
ASP脚本文件夹:包含站点的所有脚本文件,如cgi、vbs、asp等等,给予允许执行、拒绝写和读取的权限。
EXE等可执行程序:包含站点上的二进制执行文件,给予允许执行、拒绝写和拒绝读取的权限。
3.2.1.4删除不必要的应用程序映射
IIS中默认存在很多种应用程序映射,如.htw、.ida、.idq、.asp、.cer、.cdx、
.asa、.htr、.idc、.shtm、. shtml、.stm、.printer等,通过这些程序映射,IIS就能知道对于什么样的文件该调用什么样的动态链接库文件来进行解析处理。但是,在这些程序映射中,除了.asp的这个程序映射,其它的文件在网站上都很少用到。而且在这些程序映射中,.htr、.idq/ida、.printer等多个程序映射都已经被发现存在缓存溢出问题,入侵者可以利用这些程序映射中存在的缓存溢出获得系统的权限。即使已经安装了系统最新的补丁程序,仍然没法保证安全。所以我们需要将这些不需要的程序映射删除。在“Internet服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面中,点击“配置”按钮,弹出“应用程序配置”对话框,在“应用程序映射”页面,删除无用的程序映射。如果需要这一类文件时,必须安装最新的系统修补程序以解决程序映射存在的问题,并且选中相应的程序映射,再点击“编辑”按钮,在“添加/编辑应用程序扩展名映射”对话框中勾选 “检查文件是否存在”选项。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动态链接库来解析。
3.2.2 APACHE平台
作为最流行的Web服务平台,Apache Server提供了较好的安全特性,使其能够应对可能的安全威胁和漏洞。
3.2.2.1 APACHE服务器的安全特性
Apache 的安全模块 mod_access模块能够根据访问者的IP地址(或域名,主机名等)来控制对Apache服务器的访问,称之为基于主机的访问控制。mod_auth 模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和 mod_auth_dbm模块则分别将用户信息(如名称、组属和口令等)存于Berkeley-DB及DBM型的小型数据库中,便于管理及提高应用效率。mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证,但它相应的需要客户端的支持。mod_auth_anon模块的功能和mod_auth的功能类似,只是它允许匿名登录,将用户输入的E-mail地址作为口令。mod_ssl模块是安全套接字层协议SSL在Apache下的实现,为Internet上安全交易提供服务,如电子商务。通过对通讯字节流的加密来防止敏感信息的泄漏。Apache的这种支持是建立在对Apache的API扩展来实现的,相当
于一个外部模块,通过与第三方程序的结合提供安全的网上交易支持。
3.2.2.2 APACHE主要的安全缺陷
使用HTTP协议进行的拒绝服务攻击(denial of service):这种攻击方法的攻击者会通过某些手段使服务器拒绝对正常HTTP请求做出的应答。主要是使Apache对系统资源(CPU时间和内存)需求剧增,最终造成Apache系统变慢甚至完全瘫痪。
缓冲区溢出:该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。
攻击者获得root权限:该安全缺陷主要是因为Apache服务器一般以root权限运行,攻击者会通过它获得root权限,进而控制整个Apache系统。
3.2.2.3 APACHE的安全配置
Apache Web服务器主要有三个配置文件,均位于/usr/local/apache/conf目录下。这三个文件是:httpd.conf主配置文件,srm.conf添加资源文件,access.conf设置文件的访问权限。Apache的一些功能实现和安全配置主要是在httpd.conf文件中进行。
以Nobody用户运行 一般情况下,Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Apache Server进程以最可能低的权限用户来运行。通过修改httpd.conf文件中的User选项,以Nobody用户运行Apache可以达到相对安全的目的。
ServerRoot目录的权限 为了确保所有的配置是适当的和安全的,需要严格控制Apache 主目录的访问权限,使非超级用户不能修改该目录中的内容。Apache 的主目录对应于Apache Server配置文件httpd.conf的Server Root控制项中,应为:Server Root /usr/local/apache
SSI的配置 在配置文件access.conf 或httpd.conf中的Options指令处加入Includes NO EXEC选项,用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。Options Includes No exec
阻止用户修改系统设置 在Apache 服务器的配置文件httpd.conf中进行以下的设置,阻止用户建立、修改 .htaccess文件,防止用户超越能定义的系统安全特性。AllowOveride None Options None Allow from all 然后再分别对特定的目录进行适当的配置。
改变Apache 服务器的确省访问特性 Apache 的默认设置只能保障一定程度的安全,如果服务器能够通过正常的映射规则找到文件,那么客户端便会获取该文件,如http://local host/~ root/ 将允许用户访问整个文件系统。在服务器的配置文件httpd.conf中加入如下内容:order deny,ellow Deny from all将禁止对文件系统的缺省访问。
4 程序安全
4.1 ASP程序
ASP全称Active Server Pages,是微软推出的用来取代CGI(Common Gateway Interface)的动态服务器网页技术。使用它可
以创建和运行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页、脚本命令和 ActiveX 组件以创建交互的 Web 页和基于 Web 的功能强大的应用程序。ASP可运行的服务器端平台包括:WinNT、Win2k、WinXP和Win2003,在Win98环境下装上PWS4.0也可以运行。由于ASP比较简单易学,又有微软这个强大后台的支持,所以应用比较广泛,所发现的缺陷和针对各程序的漏洞也比较多。
我们这里主要讨论ASP的两个安全问题:源代码泄露和SQL注入。
4.1.1 源代码泄露
由于ASP程序采用的是非编译性语言,这大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码,从而造成ASP应用程序源代码的泄露。黑客常常使用在URL后加::$DATA 、 .htr、\、伒茸址床榭丛创耄玫接没兔苈耄酉吕吹娜肭肿鲎急浮;蛘咧苯拥玫绞菘獾刂罚锏交竦猛臼莸哪康摹?
对ASP页面进行加密为有效地防止ASP源代码泄露,可以对ASP页面进行加密。一般有两种方法对ASP页面进行加密。一种是使用组件技术将编程逻辑封装入DLL之中;另一种是使用微软的Script Encoder对ASP页面进行加密。使用组件技术存在的主要问题是每段代码均需组件化,操作比较烦琐,工作量较大;而使用Script Encoder对ASP页面进行加密,操作简单、收效良好。
4.1.2 SQL注入
SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序、数据库及服务器的信息,进而获取你想到得到的资料。
SQL注入的一般步骤是:首先,判断环境,寻找注入点,判断数据库类型。其次,根据注入参数类型,在脑海中重构SQL语句的原貌。接着,将查询条件替换成SQL语句,猜解表名。表名猜出来后,将Count(*)替换成Count(字段名),用同样的原理猜解字段名。最后,在表名和列名猜解成功后,再使用SQL语句,得出字段的值。
4.2 PHP程序
PHP最初是被称作Personal Home Page,后来随着PHP成为一种非常流行的脚本语言,名称也随之改变了,叫做Professional HyperText PreProcessor。以PHP4.2为例支持它的WEB服务器有:Apache, Microsoft Internet information Serve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等。PHP的安全除了更新版本外,主要同其配置文件php.ini相关,设置需要注意如下问题:
4.2.1 关闭错误显示
php缺省是打开错误信息显示的,我们可以在php.ini中找到display_errors = On并把它设置为off从而关闭错误显示。关闭错误显示后,php函数执行错误的信息将不会再显示给用户,这样能在一定程度上防止攻击者从错误信息得知脚本的物理位置,以及一些其它有用的信息,起码给攻击者的黑箱检测造成一定的障碍。这些错误信息可能对我
们自己有用,可以让它写到指定文件中去,那么修改log_errors = Off 为log_errors = On 以及指定文件,找到下面这行: ;error_log = filename 去掉前面的;注释,把filename改为指定文件, error_log = /usr/local/apache/logs/php_error.log 这样所有的错误都会写到php_error.log文件里。
4.2.2 开启安全模式
php的safe_mode功能对很多函数进行了限制或禁用了,能在很大程度解决php的安全问题。在 Safe Mode部分找到: safe_mode = Off 改为: safe_mode = On 这样就打开了safe_mode功能。象一些能执行系统命令的函数shell_exec()和``被禁止,其它的一些执行函数如:exec(), system(), passthru(), popen()将被限制只能执行 safe_mode_exec_dir指定目录下的程序。如果你实在是要执行一些命令或程序,可以设置 safe_mode_exec_dir = /usr/local/php/exec 然后把要用的程序拷到/usr/local/php/exec目录下,这样,象上面的被限制的函数还能执行该目录里的程序。
4.3 和JSP 程序
是Microsoft微软基于.NET Framework 的Web应用程序编程语言,能够建立强大的Web应用程序。不仅仅是ASP的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 安全性与 Microsoft Internet 信息服务 (IIS) 安全性协同工作,包括身份验证和授权服务以实现 安全模型。还包括一个基于角色的安全功能,您可以为 Microsoft Windows 和非 Windows 用户帐户实现该功能。
JSP, Java Server Pages是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 在传统的网页HTML文件(*.htm, *.html)中加入Java程序片段 (Script let)和JSP标记(tag),就构成了JSP网页(*.jsp),Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。目前已经发现的JSP安全问题主要是源代码暴露和远程程序执行。源代码暴露主要指的是程序源代码会以明文的方式返回给访问者,添加特殊后缀、插入特殊字符串、文件不存在和路径权限问题都会造成源代码的暴露。远程程序执行类漏洞的特点就是可以通过URL 地址在浏览器中执行任意服务器上的命令和程序,从而引起安全问题。可以通过下载最新的补丁来解决这些问题。
5 数据安全
Web服务的数据主要包括数据库,静态页面和媒体数据。本文所述数据安全主要指常用数据库不被非法访问和静态页面和媒体数据不被非授权使用,下文将分节论述这两个问题。
5.1 常用数据库
5.1.1 ACCESS数
据库
5.1.1.1 ACCESS数据库的存储隐患
在ASP+Access应用系统中,如果获得或者猜到Access数据库的存储路径和数据库名,则该数据库就可以被下载到本地。例如:对于网上书店的Access数据库,人们一般命名为book.mdb、store.mdb等,而存储的路径一般为“URL/database”或干脆放在根目录(“URL/”)下。这样,只要在浏览器地址栏中敲入地址:“URL/database/store.mdb”,就可以轻易地把store.mdb下载到本地的机器中。
5.1.1.2 ACCESS数据库的解密隐患
由于Access数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,可以很容易地编制出解密程序。
5.1.1.3 防止ACCESS数据库被下载
在数据库新建一个表,表名为<%safe就可以了,这样IIS在解析的时候会出现500错误,数据库也就不会被下载了。
在你的数据库文件名后门加上# (不是扩展名,比如name#.mdb)这样IIS就以为你是在请求该目录中默认的文件名,比如index. asp,如果IIS找不到就会发出403禁止浏览目录的错误警告。
在IIS中是把数据库所在的目录设为不可读,这样就可以防止被下载,这样做也不会影响asp程序的正常使用。
直接使用数据源 (ODBC)这样数据库就可以不用在web目录里面,从而彻底防止被下载。
5.1.2 MSSQL数据库
5.1.2.1使用加密协议
SQL Server 使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库帐号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,你需要一个证书来支持。
5.1.2.2 修改所使用的TCP/IP端口
默认情况下,SQL Server使用1433端口监听,很多攻击都基于此,所以我们应该改变这个端口。方法是在实例属性中选择TCP/IP协议的属性,选择隐藏 SQL Server 实例,然后在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。
5.1.3 MYSQL数据库
5.1.3.1 帐户安全
删除mysql中的所有默认用户,只保留本地root账户,为root用户加上一个复杂的密码。赋予普通用户 update、delete、alert、create、drop权限的时候,并限定到特定的数据库,尤其要避免普通客户拥有对mysql数据库操作的权限。检查 m
er表,取消不必要用户的shutdown_priv,reload_priv,process_priv和 File_priv权限,这些权限可能泄漏更多的服务器信息包括非mysql的其它信息出去。可以为mysql设置一个启动用户,该用户只对mysql目录有权限。设置安装目录的data数据库的权限(此目录存放了mysql数据库的数据信息)。对于mysql安装目录给users加上读取、列目录和执行权限。
5.1.3.2 访问安全
MySQL服务器通过在MySQL数据库中的授权表提供了一个灵活的权限系统。你可以设置这些表的内容,允许或拒绝客户对数据库的访问,这提供了防止未授权的网络访问对你数据库攻击的安全手段。所需要做的是保证数据库文件对于各个用户的私有性和日志文件的只读性。
5.2 防盗链和采集
盗链和采集是国内个人网站大量发展后产生的,主要是因为个人站长没有资金和精力来创作大量的信息资源。同时,在利益的驱使下,个人站长开始批量的建设垃圾站。这种垃圾站成本较低,主要是域名注册费的虚拟空间租用费,收益却很高,一般可以做到每月近百美元。因此,他们制作小偷程序和采集程序来大理盗链和采集一些优秀站点的资源,并通过SEO获得较高的搜索流量。
5.2.1 防盗链
盗链是指一个网站通过对目标网站资源结构进行分析,并通过编制程序而大量的链接目标网站的图片、音频、视频文件。主要是一些小网站为了增加流量而盗取一些有实力的大网站的资源。一般的防盗链可以通过WEB服务器的URL过滤技术解决,如APACHE自带的URL Rewrite功能,其原理是检查REFER,如果REFER的信息来自其他网站则禁止访问所需要的资源。IIS平台可以使用第三方的ISAPI_Rewrite,其LITE版本是免费的,下载地址为: /download.htm
如果预算允许的话,也可以使用收费的防盗链技术,如国内的UU防盗链和VirtualWall和国外的ISAPI_Rewrite。
5.4.2 防采集
采集是指分析目标网站的页面结构,找出规律,然后读取内容,并保存到本地的过程。现在防采集的方法主要有:判断一个IP在一定时间内对本站页面的访问次数,如果明显超过了正常人浏览速度,就拒绝此IP访问,这种方法比较费时间;用JavaScript加密内容页面;把内容页面里的特定标记替换为[color=Red]“特定标记 隐藏版权文字”[/color];只允许用户登陆后才可以浏览;只允许通过本站页面连接查看,如:Request.ServerVariables("HTTP_REFERER");使用随机模板。
6 网络安全
本文所讲的网络安全主要是指Web应用中的网络通信安全,重点介绍客户端的安全,并对黑客攻击做了初步的介绍,然后介绍了预防网络攻击的常用工具——防火墙常见的三种类型。
6.1 客户端安全性
6
.1.1 ACTIVEX
ActiveX是Microsoft开发的,用来从因特网上自动下载可执行的机器代码的技术、协议和API的集合。 ActiveX控件能完成下载病毒、安装木马到格式化硬盘等一系列的危险操作,对此的安全对策是在访问网站时只安装经过认证的普遍使用的ActiveX控件。实际操作是在IE的Internet选项中安全下选择中级。
6.1.2 JAVASCRIPT
JavaScript被设计为通过浏览器来处理并显示信息,但它不能修改任何文件中的内容。也就是说,它不能将数据存放在Web服务器或用户的计算机上,更不能对用户文件进行修改或删除。因此,JavaScript不会破坏服务器或客户机上的任何文件,也不可能被用来编写破坏计算机上资源的计算机病毒。JavaScript的漏洞通常仅仅破坏用户的隐私。避免这种安全隐患的一个要点是不去浏览一些不可信任的网站。
6.1.3 COOKIES
Cookies是帮助Web站点维持用户状态的一种机制,从技术上而言,Cookies实质上是HTTP的Header的一个选项。Cookies本身由纯文本字符串组成,能够读入游览器的内存中,并在必要时候返回给服务器端[5] 。Cookies的主要作用是在客户端保存用于和服务器交互的用户信息。Cookies也因此而被Internet广告商滥用,为使用者展示“个性化”的广告。我们可以通过在浏览器中禁用Cookies来避免个人信息被收集,当然这样会造成一些网站功能的使用问题。
6.2 黑客攻击
黑客攻击作为Web安全的最大威胁,往往通过系统和程序漏洞来达到获得系统管理权限和使Web服务中止的目的。其目的也由曾经的技术炫耀、刺激而向经济利益转变[6]。比如前段时间的几大木马病毒案(熊猫烧香,灰鸽子等),嫌疑人均带有强烈的经济目的而实施木马和病毒的传播。
6.2.1 获得系统权限
获得系统权限方面,主要是通过系统漏洞使普通用户权限升级到系统管理员级别。可以从三个途径获得普通用户帐号:一是通过网络监听,截获数据报文等方式获得[10];二是通过系统或程序漏洞新建用户;三是通过社会工程骗取用户账号和密码,这种方法成功的原因是人们乐于助人[11]。
6.2.2 中止WEB服务
中止Web服务方面,主要是通过拒绝服务攻击DoS。一般情况下,拒绝服务攻击是通过使被攻击对象(通常是工作站或重要服务器)的系统关键资源过载,从而使被攻击对象停止部分或全部服务。目前已知的拒绝服务攻击就有几百种,它是最基本的入侵攻击手段,也是最难对付的入侵攻击之一,典型示例有SYN Flood和Ping Flood对服务器攻击、Land和WinNuke对端口攻击等[8]。
6.3 防火墙
防火墙是近些年发展起来的一种保护计算机网络安全的技术性措施,它是一个用以阻止网络中的黑客访问某个
机构网络的屏障,也可称之为控制进/出两个方向通信的门槛。在网络边界上通过建立起来的相应网络通信监控系统来隔离内部和外部网络,以阻挡外部网络的侵入。目前的防火墙主要有包过滤防火墙、代理防火墙和双穴防火墙三种类型。
6.3.1 包过滤防火墙
包过滤防火墙设置在网络层,可以在路由器上实现包过滤。首先应建立一定数量的信息过滤表,信息过滤表是以其收到的数据包头信息为基础而建成的。信息包头含有数据包源IP地址、目的IP地址、传输协议类型(TCP、UDP、ICMP等)、协议源端口号、协议目的端口号、连接请求方向、ICMP报文类型等。当一个数据包满足过滤表中的规则时,则允许数据包通过,否则禁止通过。这种防火墙可以用于禁止外部不合法用户对内部的访问,也可以用来禁止访问某些服务类型。但包过滤技术不能识别有危险的信息包,无法实施对应用级协议的处理,也无法处理UDP、RPC或动态的协议[9,10]。
6.3.2 代理防火墙
代理防火墙又称应用层网关级防火墙,它由代理服务器和过滤路由器组成,是目前较流行的一种防火墙。它将过滤路由器和软件代理技术结合在一起。过滤路由器负责网络互连,并对数据进行严格选择,然后将筛选过的数据传送给代理服务器。代理服务器起到外部网络申请访问内部网络的中间转接作用,其功能类似于一个数据转发器,它主要控制哪些用户能访问哪些服务类型。当外部网络向内部网络申请某种网络服务时,代理服务器接受申请,然后它根据其服务类型、服务内容、被服务的对象、服务者申请的时间、申请者的域名范围等来决定是否接受此项服务,如果接受,它就向内部网络转发这项请求。代理防火墙无法快速支持一些新出现的业务(如多媒体)。现要较为流行的代理服务器软件是WinGate和Proxy Server[13]。
6.3.3 双穴主机防火墙
该防火墙是用主机来执行安全控制功能。一台双穴主机配有多个网卡,分别连接不同的网络。双穴主机从一个网络收集数据,并且有选择地把它发送到另一个网络上。网络服务由双穴主机上的服务代理来提供。内部网和外部网的用户可通过双穴主机的共享数据区传递数据,从而保护了内部网络不被非法访问[9,10]。
总 结
任何策略和工具最终都需要人来实施和使用,因此,本文将为相关人员制定出一定的安全对策作为结尾,以帮助大家更好地使用Web服务 。
普遍适用的安全对策有:打好系统和应用软件补丁,定时更新系统。安全问题不只为使用者关注,开发者因为商业服务的需要或为了得到更多的用户,他们同样关注着安全问题。一旦发现漏洞,开发者往往
迅速做出反应,制作并发布修补漏洞的补丁。及时更新系统,能够降低很多的安全风险的危害。建立用户分级和审核制度,区分系统管理员和普通用户,设置健壮的密码。许多的安全问题都是由于不合适的使用了不合适的权利而造成的。产生这种问题的根源,一是权限设置不当,二是密码泄露,所以从源头上避免安全问题的产生是一个基本的安全对策。从开发者官方和可信赖的站点下载软件,避免使用破解版和绿色版。病毒和木马制造者可以通过将之附加到流行的应用程序之内而将病毒和木马散播出去,破解版和绿色版的软件程序则是很好的传播渠道。我们应该尽量避免使用这样的软件,以免引狼入室,为恶意攻击者大开方便之门。
适用于系统管理员或者Web服务提供者的安全对策有:关闭不必要或多余的服务,按照安全规则和标准上来说,多余的东西就没必要开启,关闭无用的服务不仅可以减少安全隐患,也能提高系统性能和稳定性。按最小权限原则对文件系统进行设置,这是避免提权操作和跨站脚本攻击的好办法。安装并使用防火墙软件,关注系统和程序的最新安全漏洞并及时打好补丁,这样可以让系统自动地对攻击进行防护,减少系统管理员的工作量。了解最新的黑客攻击方法并学习应对策略,道高一尺,魔高一仗,攻击手段总是比防护手段发展得快。所以只有及早地学习研究攻击手段,才能早日研究出防护办法,防患于未然。
适用于普通用户的安全对策有:避免浏览违法网站,不要打开陌生人的邮件和附件,这样可以减少接触病毒或木马的机会。安装并使用防病毒和木马的软件,这样可以降低和避免病毒和木马造成的危害。使用前对下载的音频视频文件进行病毒扫描,这往往为广大用户所忽视,直接打开这些文件,造成病毒和木马的感染。
致 谢
首先感谢母校湖南大学在过去的四年里为我创造了一个适宜的学习和生活环境。
本文是在我的导师蒋理副教授的悉心指导下完成的。从题目的选定到论文的完成,蒋老师都给予了详细的指导。我也从中学会了如何统筹规划地完成一个项目。在此,我对蒋老师表示最尊敬的致意,并真诚地祝愿他身体健康、工作顺利。
在论文的写作过程中,我也得到了许多老师和同学的帮助,在此一并感谢他们。
最后,感谢我的父母亲人,是他们给我创造了这个难得的学习深造机会。虽然他们不在我身边,但他们的关心、爱护和支持永远激励着我不断努力。在此,我深深地祝福他们。
参考文献
[1] 同济大学.计算机网络基础与实训[EB/OL]/net/subject/diginote/6.files/frame.htm.
[2] Dance
fire.麒麟操作系统内核同其他操作系统内核的相似性分析[EB/OL]/article/Kernel_Similarity_Analysis.html.
[3] 孔凡飞.基于WS Security的电子商务Web服务安全的概要设计[D]杭州:浙江大学,20030201:25.
[4] 邓集波.WEB中基于角色访问控制的静态授权研究[D]武汉:华中科技大学,20020510:18.
[5] 周颖.Web服务安全性研究及其应用[D]重庆:重庆大学,20041010:36.
[6] 汪永平.互联网系统安全性与脆弱性初探[D]兰州:兰州大学,19991101:32-34.
[7] 张振兴.Web服务安全性的研究与实现[D]北京:华北电力大学,20031230:40-43.
[8] 孟丽佳.EC商务系统中Web安全性设计与实现[D]大连:大连理工大学,20050612:27.
[9]贾贺,张旭.构建安全Web站点[M]北京:电子工业出版社,2002年1月:84.
[10] Steve Kalman著 冯大辉,姚湘怡译.web安全实践 web security field guide[M]北京:人民邮电出版社,2003年12月:264-268.
[11] Fan, Di.How product intangibility and its moderators affect perceived risk in online shopping setting[D]Canada: Concordia University,2005:29.
[12] El Namroud, Dany.Servers/Web sites security[D]Canada: Ecole de Technologies Superieure,2002:59.