1、广州大学华软软件学院网络技术系学位论文 毕业设计:基于Linux平台的Web安全技术研究Apache安全广州大学华软软件学院毕业论文题目:基于Linux平台的Web安全技术研究Apache安全学生姓名:指导教师:2015-5-10 摘 要 随着网络通信技术的不断发展,WEB服务器技术应用变得相当普遍。目前windows和linux在WEB服务器市场占得份额都很大,其中windows大多用IIS,linux一般用Apache,由于Apache作为最受欢迎的WEB服务器,而且linux是开源的,稳定性比windows好,所以linux系统在WEB服务器方面应用更为广泛,市场上绝大部分WEB服务器都
2、是基于linux系统的,随着网络的广泛应用,其安全问题变得越来越重要。本文从linux平台安全、Apache安全、防火墙技术以及入侵检测技术等方面探讨如何架设一个安全高效的WEB服务器。关键词 WEB,Apache,网络安全ABSTRACT With the continuous development of network communication technology, WEB server technology has become quite common. Nowadays windows and linux server market share are large in the
3、 WEB, windows often use IIS, linux general use Apache, because Apache as the most popular WEB server, and linux is open source, stability better than windows, linux systems are widely used in the application of WEB server.In the market, most WEB server are based on linux systems, but with the wider
4、use of the network, its security is becoming more and more important. This article from the linux platform security, Apache security, firewall and intrusion detection technology, and explore how to set up a safe and efficient WEB server.KEYWORKS website of WEB;Apache;the network safety目 录前言1第一章 WEB服
5、务器平台安全模型21.1 WEB服务器模型(层次化结构模型)21.2 模型安全模块介绍3第二章 linux系统安装及平台架设52.1 linux系统的简介及版本选择52.2 linux目录结构52.3 linux AS 5.0系统的安全分区62.4 架设LAMP平台环境92.5 LAMP平台环境测试10第三章 linux系统平台的安全设置113.1 磁盘分区安全113.2 系统安全设置113.2.1 用户及密码安全113.2.2 服务安全123.2.3 限制root用户和su命令133.2.4 登录时隐藏系统信息143.2.5 阻止ping请求响应153.2.6 查看系统日志16第四章 Apa
6、che安全164.1 概述164.2 安全模块174.3 Apache安全设置174.3.1 勤打补丁174.3.2 隐藏伪装Apache版本信息174.3.3 目录结构和安全184.3.4 Apache以自身用户账号和组运行194.3.5 SSI配置204.3.6 CGI脚本安全214.3.7 Apache服务器的访问控制214.3.8 禁止用户使用目录索引224.3.9 Apache服务器防范Dos攻击224.4 Apache用户认证与授权234.4.1 创建认证配置文件234.4.2 Apahce认证测试244.5 使用SSL加密Apache服务254.5.1 创建CA私钥和证书254.
7、5.2 SSL的认证配置274.5.3 为客户端签署交换文件28第五章 防火墙设置285.1 linux防火墙概述285.2 WEB服务器平台的防火墙设置295.2.1 禁止响应ping命令295.2.2 阻止DoS和DDoS攻击315.2.3 网络地址转换335.2.4 防止端口扫描35第六章 入侵检测系统366.1 入侵检测系统简介366.2 Snort安全规则设置366.2.1 安装Snort366.2.2 检测ICMP数据包攻击376.2.3 监测telnet和ssh登录服务器376.2.4 检测SYN FIN扫描386.2.5 监测溢出攻击38小结39致谢40参考文献41第iii页
8、共iii页 作者:温剑威 广州大学华软软件学院网络技术系学位论文 毕业设计:基于Linux平台的Web安全技术研究Apache安全前言在我国,由于受知识产权的限制,无论是使用PC 平台上的Windows,还是使用应用于大中型机的UNIX,都无法窥视到其内部结构。这些系统都会存在不为我们所知的安全问题,而Linux的出现就能很好的解决这个问题,因为Linux是开源的。目前UNIX、Linux、Windows三种操作系统三分天下,而Linux正处于迅速发展当中,就我个人认为,不久的将来,Linux系统将成为市场的主导。科技发达的今天无处不运用到网络,在这个网络信息处于高度发达的时代,加上Linux
9、系统的迅速发展,让Linux下的WEB服务器安全显得尤为重要。在Internet/Intranet的大量应用中,网络本身的安全面临着重大的挑战,随之而来的信息安全问题也日益突出。在网络安全问题泛滥的今天,其安全性问题同样面临着考验。根据网络安全的木桶理论,网络的安全性取决于各个网络组件的安全,因此本文从linux安全、Apache安全、MySQL数据库安全及PHP开发技术等几个方面探讨了如何架设一个安全高效的WEB网站技术。第一章 WEB服务器平台安全模型1.1 WEB服务器模型(层次化结构模型)根据网络安全的“木桶理论”,网络安全是由若干“木板”元素的安全决定,因此本文采用层次化结构模型,就
10、WEB服务器的各个安全元素进行分析并给出其增强安全的技术方法,重点探讨了Apache安全(表 1)。网络安全防火墙及入侵检测技术Apache安全PHP安全MySQL安全Linux系统平台安全表1 WEB服务器结构模型以上层次化模型的拓扑结构图图 1.1 结构模型拓扑图一个安全的WEB服务器平台是由系统安全、Apache、PHP、MySQL安全、网络安全以及防火墙安全组成,要建立一个安全的WEB服务器平台,就需要把其各个部分都设置安全才能够确保WEB服务器平台的安全。1.2 模型安全模块介绍【网络安全】网络安全也是WEB服务器平台安全的重要组成部分,要解决网络的安全问题,单靠技术是不行的,更加重
11、要的是管理。很多人认为可以仅仅依靠防火墙来保证网络的安全,其实防火墙仅仅可以阻止外来攻击,内部网络攻击就阻止不到,不怀好心的人常利用网络的安全隐患对整个网络进行攻击,这也是为什么要更加注重管理的原因。网络安全的隐患主要有网络拓扑不合理、病毒、不安全数据下载与存取、用户身份认证隐患、防火墙局限性、服务器操作系统漏洞,还有本地服务器安全、机房安全等物理安全隐患。要应对以上网络安全隐患就需要设计正确的网络安全策略,具体设计需要遵循以下原则:整体性、一致性、均衡性、可行性、易操作性、技术与管理相结合、动态发展更新等。网络安全策略包括数据的机密性、完整性和可用性,身份验证和数据鉴别,使用防火墙过滤外来攻
12、击,利用加密软件对数据进行加密,病毒防护和杀毒技术实时更新,依靠入侵检测系统实时监控,安全审计,及时做好数据的备份和恢复。这样就可以最大限度的保证网络安全,进而保证WEB服务器平台的安全。【linux系统平台安全】在物理硬件上面的就是linux系统安全,这也是WEB服务器平台底层安全中十分重要的,如果操作系统的安全都得不到保证,那么整个WEB服务器平台就没有安全可言。当我们安装完linux系统后,如果仅仅依靠安装时的默认设置,而只是希望通过防火墙来保证系统安全,那么这个系统是绝对不够安全的,肯定会存在很多安全隐患。架设安全的linux系统需要考虑到各项系统配置、软件包的安装等等,在随后的两章就
13、会详细介绍如何搭建一个安全的linux系统平台。【Apache安全】Apache是世界上应用最广泛的WEB服务器,具有很好的跨平台性,它运行平稳、性能高效,针对静态页面解析的速度非常快,安全性也很好,能够有效地使用系统资源,高版本的Apache可以支持SQL数据库、只能过滤、高级缓冲等。虽然Apache在设计上已经很安全,但是作为一个开放源代码的应用程序来说仍然会存在漏洞。为了搭建安全的Apache服务器,后面章节将详细介绍如何配置安全的Apache。【PHP安全】PHP是一种HTML内嵌式的语言,因为是解释性语言,所以访问速度会受到限制,面向对象的特性较少,不适合构建大型企业应用。不过这些问
14、题在后期版本里得到了很大的改善。关于PHP的安全问题,除了要保证WEB服务器平台和Linux操作系统的安全外,安全的代码编写也是很重要的。配置安全的PHP可以通过对php.ini,httpd.conf,.htaccess文件进行设置,也可以通过在脚本程序里运用函数进行设置。为了使PHP的使用更加安全,可以以安全模式运行PHP,使用用户识别和验证,创建安全的PHP脚本,使用加密技术和SSL技术等。【MySQL安全】作为WEB服务器平台安全的一部分,MySQL的安全也是非常重要的一个部分,而要建立一个安全的MySQL首先要在安装完MySQL后改变root用户的密码,如果没有必要用到匿名用户,就把匿
15、名用户都删除了,其次设置权限,严格控制用户的权限设置可以有效的提高MySQL的安全性。数据传输时最好使用SSH隧道来加密通信。用访问控制列表来控制完成连接、查询、更新、删除等操作。不适用明文密码,而是用MD5等函数加密算法对密码进行加密。【防火墙及入侵检测】防火墙是阻止外来网攻击的一个重要关卡,是网络安全中最重要的设备之一。但是防火墙只是能防止外来攻击,并不能防止网络内部的攻击。网络内部的安全就需要依靠加强管理来保证安全,对于重要的服务器数据安全,可以利用入侵检测系统来保护。外部网络要访问内部网络资源必须经过防火墙,防火墙通过设置安全策略过滤,使得外来访问只有符合安全策略的通信才能够通过,而内
16、部网络访问外网基本不用过滤。这样就可以防止WEB服务器受到外来攻击,保证WEB服务器安全持续的对外提供服务。对于Linux操作系统,可以利用iptables进行防火墙设置,在之后的章节会有详细的介绍。第二章 linux系统安装及平台架设2.1 linux系统的简介及版本选择Linux是一种能运行于多种平台、源代码公开、免费、功能强大、遵守POSIX标准、与UNIX兼容的操作系统。Linux从20世纪中期一直发展到现在,前进的脚步从未停止过。如今更是突飞猛进,发展迅速,一股Linux的热潮正在席卷整个世界,让人们意识到我们的生活中越来越离不开它。Linux的诞生和发展给全球的软件业带来了新的机遇
17、,也使微软的Windows操作系统面临有始以来最大的威胁。由于Linux属于自由软件,它的源代码是公开的,并遵循公共版权许可证(GPL),用户可以免费使用,使Linux在极短的时间内就成为了一套成熟而稳定的操作系统。全世界成千上万的程序专家和Linux爱好者正在通过Internet不断地对Linux进行开发、完善和维护。linux系统版本有很多,每个版本的linux系统都有自己的一些特点,但是他们都属于linux系统,所以很多基本的命令还是一样的。它们的特点这里就不一一讲述了,这次WEB服务器平台用的linux系统我选择linux AS 5.0。2.2 linux目录结构要安装一个安全的系统,
18、首先需要对该系统的结构有所了解,就如linux系统的目录结构,一个安全的linux系统其主要的目录应该分在不同的分区,这样即使其中一个分区遭到了攻击,也不会影响到其它分区的正常工作,所以安装系统前首先要对其目录结构进行分区,计划好如何分区才能够更好的提高系统的安全性。Linux系统主要目录包括:根目录(/)、引导目录(/boot)、用户目录(/home)、/var、设备目录(/dev)、配置文件存放目录(/etc)、临时文件目录(/tmp)、/mnt、/usr等。这些主要的目录最好可以分开到不同的分区当中。引导目录(/boot):此目录存放的是系统启动的时候需要用到的程序。用户目录(/home
19、):此目录主要用于存放用户主目录。设备目录(/dev):这个目录包含所有系统的外部设备,我们可以通过这个目录像访问文件一样访问系统设备。配置文件存放目录(/etc):这个目录是linux系统中最重要的目录之一,这里存放的是系统的各种配置文件,我们配置的大部分服务器的配置文件也都是存放在/etc这个目录里面。临时文件目录(/tmp):此目录用于保存临时文件。2.3 linux AS 5.0系统的安全分区安全的系统分区也是重要的安全措施,如果按默认分区安装系统每个盘都划分都同一分区,例如/boot受到攻击无法正常工作,那整个系统都会无法正常工作,倘若将系统重要的盘划分到不同的分区,即使其中一个盘受
20、到攻击无法正常工作,其他盘也不会受到影响,使得系统受到的攻击损害降到最低。另外,为每个分区分配足够大的磁盘空间也是很有必要的,因为磁盘空间分配不恰当可能很容易就导致磁盘爆满,进而系统出现问题,因此要将重要盘划分到不同的分区以及分配足够大的磁盘空间,这也是系统平台安全设计的重要方面。由于本地环境的限制,只能够建立虚拟的linux系统环境。虚拟机用的是VMware Workstation v7.0。首先要建个虚拟机,具体过程就不一一叙述。启动虚拟机进入linux AS 5.0系统安装过程,载入安装镜像,随后几步都选默认设置,直到磁盘分区时选择自定义分区。【分区方案】本系统虚拟了20G大小的磁盘,将
21、/boot、/home、/tmp、/usr分别挂载到独立的分区。/boot 是开机时引导系统的,一般里面的内容在装完系统后都不会改变,所以划分512M的主分区给/boot就足够了。如图2.1/home 存放用户目录文件,一般为了系统的安全,可以登录到系统的用户并不多,所以划分2G的分区就够了。如图2.2/tmp 只是用来存放临时文件,等会话结束后临时文件都会被删除,所以划分1G的分区。如图2.3/usr 这个目录由于要存放大量文件,所以需要为其划分个尽量大的分区,这里划分10G。如图2.4接着创建一个交换分区,用于缓存数据,一般大小为内存的两倍就足够了,所以划分512M。如图2.5/ 根目录里
22、面存放剩下的目录,如/etc、/dev等,把剩下的磁盘空间都划分给根目录。如图2.6 图 2.1 图 2.2 图 2.3 图 2.4 图 2.5 图 2.6分区完毕后就如图2.7所示,继续下一步安装图2.7 系统分区接着填写好用户密码信息后下一步,确认信息后就等待安装。系统安装完以后默认的设置相对比较安全,整个系统很干净,安装软件包时要特别注意,并不是说软件包装得越多越好,相反装的软件包越多,系统的漏洞也会越多,所以安装软件包时应该自己手动安装,需要什么包就装什么包,以此提高系统的安全性。除此之外还要通过配置系统的安全设置来进一步优化系统,从而最大限度的保证系统的安全。2.4 架设LAMP平台
23、环境这里选择编译的方式架设LAMP平台,首先解压安装包,用./configure指定安装目录并设置具体参数,再用make & make install命令编译安装,具体实现过程不作详细叙述。需要注意的是为了Apache能识别PHP,需要在Apache的配置文件httpd.conf添加一些语句,并重新启动服务,具体设置如下(图 2.8)图2.8 Apache识别PHP设置2.5 LAMP平台环境测试将编写好的index.php文件放到网站的默认目录/var/www/html里面,打开浏览器输入http:/127.0.0.1/index.php测试(图 2.9)图2.9 平台环境测试至此,LAMP
24、平台已经架设完成,这里只是简单的架设LAMP平台,之后还可以继续安装软件包让此平台更加完善。第三章 linux系统平台的安全设置3.1 磁盘分区安全一个新安装的系统首先应该考虑磁盘分区的安全性,在安装系统的时候就应该有个详细安全的分区方案,把主要目录分开到不同的分区,为各个目录划分足够的磁盘空间,这些在前一章已经做过详细叙述。3.2 系统安全设置3.2.1 用户及密码安全对于系统提供的账号可能过多,需要把不用的账号都删除了,因为账号越多就越容易受到攻击。为了删除系统上你不用的用户,先查看下系统的用户信息(图 3.1)图3.1 查看用户信息用命令userdel和groupdel将不需要用的用户和
25、组删除,例如不需要用到X windows服务,就把其对应的用户和组删除(图 3.2)图3.2 删除不需要的用户和组密码口令设置应该尽可能复杂,最好由大小写英文字母和数字组成,长度起码8位,而且要自己能够记住,这样才可以最大限度的防止黑客破解密码。系统默认的密码长度为5位,应该将它设置为8位,编辑/etc/login.defs文件,修改对应选项(图 3.3)图3.3 设置密码口令选项另外,用more /etc/passwd查看后,如果用户名后面紧接两个冒号,说明这个用户没有设置密码,这样是非常不安全的,一定要把这些用户删除。3.2.2 服务安全系统的服务安全也和用户安全一样要尽可能的少,因为开启
26、的服务越多,系统的漏洞也就会越多,这样就会给黑客攻击提供了便利,所以要在系统管理的服务配置里将不必要的服务关闭(图 3.4)图3.4 关闭不需要的服务这里我将不需要的服务,例如nfs、sendmail、telnet等关闭,尽量降低被攻击的可能性。3.2.3 限制root用户和su命令设置root用户的登录终端,让其只能够在tty1登录,这样就可以限制root用户进行远程登录,即使root密码被破解也没有办法在远程登录,使得系统被破坏程度减小到最小,可以通过编辑/etc/securetty文件实现(图 3.5)图3.5 限制root用户远程登录通过编辑/etc/pam.d/su文件限制任何用户s
27、u成root用户(图 3.6)图3.6 限制用户su的使用这样就只有adim组的用户可以用su命令,大幅度减少su命令带来的麻烦。3.2.4 登录时隐藏系统信息Linux系统默认登录时会显示包括版本、主机名等一系列信息,这无疑为黑客的攻击提供了线索,所以应该尽量少显示系统相关信息,可以编辑/etc/rc.d/rc.local把输出系统信息的行注释掉或删除(图 3.7)图3.7 设置登录隐藏系统信息设置完后登陆效果(图 3.8)图3.8 登录效果图3.2.5 阻止ping请求响应如果有人用ping命令向系统发大量的数据包请求,会占用很多系统资源,严重时可能会造成系统瘫痪。所以当禁止系统对ping
28、命令的请求响应的时候,不怀好心的人就不可以用ping这个工具对系统进行攻击,这样就可以有效地提高系统的安全性,具体可以通过编辑/etc/rc.d/rc.local文件实现,并且每次开机都自动运行(图 3.9)。图3.9 拒绝ping响应设置3.2.6 查看系统日志系统日志是检测系统是否有被入侵的重要线索,在安全管理方面,系统日志尤其重要,它是安全管理的重要工具。当你怀疑系统被入侵的时候,可以通过查看系统日志来检查系统是否受到攻击,进而采取措施应对(图 3.10)。图3.10 查看系统日志没有记录说明没有登录失败的尝试,就是暂时安全。作为一个称职的管理员应该经常查看系统日志,关注系统安全。第四章
29、 Apache安全4.1 概述传统上的Apache服务器配置文件包括http.conf、access.conf和srm.conf,但是新版本的Apache为了能和以前的旧版本兼容,将以前三个配置文件的设置参数都放在一个配置文件http.conf当中,而另外两个文件在新版Apache中很少用到。由于新版本Apache中所有的配置参数都在http.conf中,所以要配置安全的Apache服务器,首先需要对配置文件http.conf进行设置。Apache配置文件提供的参数很多,使用默认设置也可以正常运行Apache服务,但是为了能够提供高效安全稳定的服务,就需要对Apache服务器进行优化以及安全设
30、置,使其能适应各种操作系统和各类硬件设施。4.2 安全模块Apache的一个优势便是其灵活的模块结构,其设计思想也是围绕模块(Modules)概念而展开的。安全模块是ApacheServer中的极其重要的组成部分。mod_access模块能够根据访问者的IP地址(或域名,主机名等)来控制对Apache服务器的访问,称之为基于主机的访问控制。mod_auth模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和mod_auth_dbm模块则分别将用户信息(如名称、组属和口令等)存于Berkeley-DB及DBM型的小型数据库中,便于
31、管理及提高应用效率。mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证,但它相应的需要客户端的支持。mod_auth_anon模块的功能和mod_auth的功能类似,只是它允许匿名登录,将用户输入的E-mail地址作为口令。4.3 Apache安全设置4.3.1 勤打补丁为Apache服务打补丁是为了尽量减少其漏洞的产生,是提高Apache服务安全性最重要也是最有用的方法之一,比如出现了新版本的Apache就说明之前的版本可能出现了安全漏洞,这时就需要及时升级更新Apache,若之前安装是用rpm安装包的,就用rpm Uvh *.rpm更新,若用tar安装包的,就下载
32、新版的Apache进行编译就可以了。4.3.2 隐藏伪装Apache版本信息一般漏洞信息和版本是有关系的,所以应该把Apache服务器的版本信息隐藏起来,或者伪装假的信息来迷惑攻击者,这样可以增加攻击者入侵服务器的难度,有效提供服务器的安全性。可以通过修改ap_release.h和os/unix/os.h文件,将Apache伪装为windows的IIS,来达到Apache服务器版本信息伪装的效果(图 4.1)图4.1 伪装Apache版本再修改Apache配置文件httpd.conf,通过ServerSignature选项使其只显示服务器名,并通过ServerTokens设置在所有错误页面都不
33、显示服务器信息(图 4.2)图4.2 不显示Apache服务器信息设置设置完成后,用户访问出错时页面也不会显示服务器的信息(图4.3)图4.3 不显示服务器信息效果图4.3.3 目录结构和安全Apache服务器的目录结构有ServerRoot-存放配置文件、二进制文件和其他服务器配置文件。DocumentRoot-存放WEB站点的内容。ScriptAlias-存放CGI脚本。Customlog-存放日志。Errorlog-存放错误信息日志。目录结构安全设置方案,以上目录结构应该各自独立,目录间不存在父子目录关系ServerRoot目录存放的文件比较重要,只能被root用户访问。Document
34、Root目录由WEB管理者和Apache用户访问。ScriptAlias目录只能给CGI研发人员和Apache用户访问。Customlog和Errorlog是访问日志和错误信息日志,属于安全管理范畴,应该只能让root用户访问。设置完成后如下(图 4.4)图4.4 设置安全目录结构这样设置Apache的目录结构后各个目录相互独立,彼此不会互相影响,安全性较高。4.3.4 Apache以自身用户账号和组运行一般情况下,Apache是由root用户运行的,但是这样会给系统带来很大的安全问题,有的Apache服务器是以nobody用户运行的,这样虽然可以达到Apache相对安全的目的,可是如果你的A
35、pache服务器和邮件服务器都是以nobody用户运行,那么当你Apache服务器受到攻击时可能同时会影响到邮件服务器,所以还是以自身用户账号和组运行安全性更高点。(图 4.5)图4.5 设置Apache以自身用户和组运行另外,要修改服务器默认目录的所有者以及设置日志目录只有root用户才可以访问(图4.6)图4.6 设置默认目录所有者及日志访问权4.3.5 SSI配置为了避免用户直接执行Apache服务器中的执行程序而造成系统的公开,应该在配置文件http.conf中的Options指令加入Includes Noexec选项,禁止用户执行Apache服务器的执行程序。(图 4.7)图4.7
36、SSI配置4.3.6 CGI脚本安全CGI脚本是一些可以通过WEB服务器来运行的程序,通常在编写CGI脚本时会产生许多的漏洞,由此会对WEB服务器造成安全隐患。为了保证系统的安全,CGI的编写人员必须是可信的,在编写CGI脚本时要谨慎,尽量避免漏洞的过多出现,最好将CGI脚本放在特定的目录下,在之前的目录结构和安全小点已经设置好了。另外还需要保证CGI目录下的文件不可写,避免欺诈性程序驻留其中;为了减少不必要的麻烦和安全隐患,需要给用户提供一个安全性良好的CGI程序模块作为参考,还要移除CGI目录下所有非业务应用脚本,防止异常信息泄露。4.3.7 Apache服务器的访问控制访问控制可以某个特
37、定的目录通过Deny和Allow命令来指定哪些用户可以访问,哪些用户不能访问,具有一定的灵活性,当Deny和Allow同时存在时,用Order来决定这两个命令的顺序。例如,WEB服务器只对学校内网开放,即只可以172.16.0.0/16的网段访问,可以作如下配置(图 4.8)图4.8 Apache访问控制设置4.3.8 禁止用户使用目录索引默认情况下,当用户访问Apache服务器的目录时,服务器会查找DirectoryIndex指定的目录索引文件,默认为index.html,如果此文件不存在,那么Apache会创建动态列表显示该目录的内容,这样就会将WEB站点的结构暴露,对服务器会造成安全问题
38、,所以需要禁止用户使用目录索引,可以进行如下配置(图 4.9)图4.9 禁止用户使用目录索引4.3.9 Apache服务器防范Dos攻击Apache服务经常会碰到Dos攻击,防范的主要手段是通过软件,Apahce Dos Evasive Maneuvers Module 来实现的,它是一款mod_access的代替软件,可以对抗DoS攻击,该软件可以快速拒绝来自相同地址对同一URL的重复请求,通过查询内部一张各子进程的哈希表来实现,也可以使用命令方式防范Dos攻击,具体设置如下 (图 4.10)图4.10 防范Dos攻击用netstat命令服务器查看TCP连接的状态,如果其中的syn_recv
39、很高,说明有被Dos攻击的可能,接着才往下设置。4.4 Apache用户认证与授权4.4.1 创建认证配置文件为了Apache服务器的安全,需要设置保护域,利用用户文件中的用户名和密码信息登录访问该服务器资源,这里选择用.htaccess文件实现Apache访问基本用户认证。.htaccess的功能包括设置网页密码,设置发生错误时出现的文件,禁止读取文件名,重新导向文件,加上MIME类别,禁止目录下的文件等。.htaccess的建立和使用比较复杂点,这种保护要比某些程序实现的保护安全,很难被破解,但是这种脚本认证方式比较慢,对少量用户适合,基于本次架设的是测试系统,这种方式比较适合。首先创建用
40、户和口令文件和Apache基本认证配置文件author_basic.conf(图 4.11)图4.11 创建认证配置文件然后创建.htaccess文件,重启httpd服务(图 4.12)图4.12 创建.htaccess文件4.4.2 Apahce认证测试测试效果图如下(图 4.13),需要输入用户和密码才可以访问图4.13 Apache认证测试4.5 使用SSL加密Apache服务4.5.1 创建CA私钥和证书通过使用SSL加密Apache服务,服务器和浏览器之间的通信就经过了加密,这样通过表单提交的密码等敏感信息就无法通过简单的网络嗅探得到,可以提高网站的安全性。在高版本的Apache中已
41、经包含了SSL功能模块,可以通过以下命令开启(图 4.14)图4.14 开启SSL功能模块CA证书是证书颁发机构自身的证书,这只是我们自己的证书颁发机构,不可能全世界都认可,只是在小范围有效,创建CA私钥(图4.15)和证书(图4.16)图4.15 创建CA私钥图4.16 创建CA证书回答一系列问题后私钥和证书成功创建。接着要为web服务器生成私钥(图4.17),用生成的私钥产生一个CSR文件,再由证书颁发机构依据CSR文件生成证书。图4.17 为服务器生成私钥4.5.2 SSL的认证配置Apache服务器需要向用户证明自己就服务的提供者,此时需要两个文件,即前面生成的私钥server.key
42、和证书server.crt,在Apache的SSL配置文件中修改相关选项(图4.18)图4.18 SSL认证配置以上设置了私钥和证书的位置。4.5.3 为客户端签署交换文件这里需要利用server.key和server.crt文件生成交换证书client.p12(图4.19),即客户端个人证书,作为访问WEB服务器的凭证图4.19 签署交换文件在客户端安装证书的方法:安装你在第一步生成的ca.crt文件,打开web浏览器,“工具”“Internet选项”“内容”“证书”选择导入证书,然后按照提示一步一步完成安装,至此就成功用SSL加密Apache服务器。第五章 防火墙设置5.1 linux防火
43、墙概述【防火墙基本原理及功能】防火墙能够将内部网络和外部网络分隔开来,使得内部网络免受外部网络的影响,增强内部网络的安全性。防火墙决定了哪些内部服务可以被外部网络用户访问,哪些外部网络用户可以访问内部服务,以及哪些外部网服务可以被内部网用户访问。防火墙只允许授权的数据通过,而且自身也要能够免于渗透。【防火墙的类型】 防火墙的类型可以有多种分法,而目前流行的防火墙技术主要有包过滤防火墙和代理防火墙。包过滤防火墙价格较低、性能开销小、处理速度较快,但是定义相对复杂,容易出现因配置不当带来的问题。包过滤防火墙也分为静态包过滤型和动态包过滤型防火墙,前者根据已定义的过滤规则审查数据包,确定是否匹配,后
44、者采用动态设置包过滤规则,避免了静态包过滤存在的问题。代理防火墙又叫应用层网关防火墙,它通过一种代理技术参与TCP连接的全过程,但是由于是基于应用层协议,所以速度相对比较慢。发展到第二代的自适应代理防火墙后采用自适应代理技术,可以结合代理类型防火墙的安全性和包过滤防火墙高速度等特点,在不影响安全性的基础上将代理型防火墙的性能大幅度提高。 5.2 WEB服务器平台的防火墙设置5.2.1 禁止响应ping命令要对WEB服务器平台的防火墙进行设置,Red Hat Linux 5.0已经包含iptables组件,不需要另外安装,首先要先将iptables服务开启(图 5.1)图5.1 开启iptabl
45、es服务也可以设置让其在开机时自动启动(图 5.2)图5.2 设置iptables开机启动ping命令运用得当一般都没有什么大问题,但是如果有不怀好心的人利用ping命令来对WEB服务器进行攻击,就有可能造成WEB服务器运行效率下降,影响正常WEB服务的提供,严重时还可能造成系统瘫痪,所以需要设置iptables规则禁止服务器响应ping命令(图 5.3)图5.3 禁止ping响应规则设置测试是否可以ping通(图 5.4)图5.4 禁止ping命令响应测试5.2.2 阻止DoS和DDoS攻击DoS(拒绝服务)和DDoS(分布式拒绝服务)攻击是WEB网站和网络服务器的安全威胁之一,由于SYN
46、Flood的攻击效果好,已经成为最流行的DoS和DDoS攻击手段,所以要防止DoS和DDoS攻击,首先要抵御SYN,查看SYN设置(图 5.5)图5.5 查看SYN设置上图为系统默认SYN设置,tcp_max_syn_backlog是SYN队列的长度,有2048也足够了,tcp_synack_retries和tcp_syn_retries定义SYN的重试次数,都设定为1次,这样就可以抵御大部分的SYN攻击。要抵御DoS和DDoS攻击就需要用命令netstat -an -t tcp | grep :80 | grep ESTABLISHED来看看客户端连接状态,同一个IP出现很多次,就有可能是攻击,例如发现172.16.128.0/24网段有攻击行为,未禁止前可以访问WEB服务器(图 5.6)图5.6 用户正常访问效果图可以采取下面命令禁止这个网段访问