1、广州大学华软软件学院网络技术系学位论文广州大学华软软件学院 网络系摘 要: 根据网络安全的“木桶理论”,网络安全是由若干“木板”元素的安全决定,因此本文就Linux平台下WEB服务器的各个安全元素进行分析并给出其增强安全的技术方法。从而构建一个稳定的WEB的安全防护体系。关键词: LINUX,APACHE,PHP,MYSQL,安全,防火墙,入侵检测技术ABSTRACT: According to network security “bucket theory“, network security is a number of “wood“ element of the security dec
2、isions, so this WEB server on the Linux platform to analyze the various security elements, and given its enhanced security technology and methods. To build a stable system of security protection WEBKeywords: Linux; Apache; Php; Mysql; security; firewall; intrusion detection technologyLAMP 的安全模型目 录第一
3、章 LAMP 的安全模型11.1LAMP 简介 .11.2LAMP 的优势 .11.3 模型图的设计11.4 模型的分析 .21.5 模型的实现 .21.5.1 Linux 系统的安全防护 21.5.2 Apache 服务器的安全防护 .31.5.3 MySQL 数据库安全防护 31.5.4 PHP 服务器安全防护 31.5.5 防火墙与入侵检测设计 4第二章 Linux 系统的安全配置 42.1 Linux 操作系统简介42.2 版本选择与安装 .42.2.1 安装 red hat AS 4.0 操作系统 .52.3 Linux 系统安全问题72.4 linux 系统安全策略72.4.1 给
4、 BIOS 设置密码 .72.4.2 设置 grub 启动口令 .82.4.3 为 LILO 增加开机口令 .82.4.4 用户与口令设置 92.4.5 取消普通用户的控制台访问权限 .102.4.6 控制 root 登录 tty 设备 102.4.7 禁止普通用户 su 为 root 用户 .102.4.8 隐藏系统信息 .102.4.9 阻止 ping.102.4.10 防止 DoS 攻击 112.4.11 特别的帐号 112.4.12 经常更新及安装补丁 12第三章 Apache 安全分析与配置 133.1 Web 服务器软件 Apache 简介133.1.1 Apache 的工作原理
5、133.1.2 Apache 服务器面临的安全问题 133.2 配置一个安全的 Apache 服务器 .143.2.1 及时升级系统或添加补丁.153.2.2 隐藏和伪装 Apache 的版本153.2.3 建立一个安全的目录结构.163.2.4 为 Apache 使用专门的用户和用户组173.2.5 Web 目录的访问策略 .183.2.6 关注 Apache 服务器日志文件 183.2.7 htaccess 文件实现用户安全认证 19广州大学华软软件学院网络技术系学位论文广州大学华软软件学院 网络系3.2.8 设置文件访问的权限 .213.2.9 设置目录的访问权限 .233.2.10 减
6、少 CGI 和 SSI 风险263.2.11 使用 SSL 加固 Apache.263.2.12 Apache 服务器防范 DoS28第四章 PHP 服务器配置与编程安全 294.1 php 编程语言简介.294.2 php 安全问题分析.294.2.1 服务器安全隐患 .294.2.2 编程语言的漏洞 .304.3 安全配置 php 服务器 314.3.1 配置安全模式: .314.3.2 用户组的安全设置 .334.3.3 安全执行指定的目录程序 .344.4 PHP 编程安全分析与设置.344.4.1 关闭危险函数 .344.4.2 关闭 PHP 版本信息在 http 头中的泄漏 354
7、.4.3 禁止自动注册的全局变量 .364.4.4 使用 open_basedir 限制脚本访问目录用户 374.4.5 检测脚本的包含文件名 .404.4.6 过滤用户的输入命令 .424.4.7 打开 magic_quotes_gpc 来防止 sql_inject434.4.8 警告及错误信息 .444.4.9 禁用某些不必要的类 .45第五章 Iptables 防火墙配置.455.1 防火墙介绍.455.2 防火墙技术.455.3 Web 网站攻击类型.465.4 防火墙功能实现.465.4.1 Web 服务器的配置策略 .465.4.2 防火墙防范攻击 .49第六章入侵检测技术实现51
8、6.1 入侵检测技术简介.526.2 Snort 搭建入侵检测系统.526.2.1 snort 模式 .526.2.2 构造基于 snortrules 系统环境 526.2.3 配置 snort536.2.4 配置 snort 规则自动更新 .57心得体会与致辞57参考文献58LAMP 的安全模型前 言随着Internet/Intranet网络的快速发展,采用Linux操作系统作为网络服务器的用户越来越多,其一因为Linux系统时开放源代码的免费软件;其二因为较之微软的Windows网络操作系统而言,Linux系统具有更好的稳定性、高效性和安全性。目前流行的LAMP组合是Linux操作系统,A
9、pache网络服务器,MySQL数据库,PHP、Perl或者 Python编程语言的缩写。在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得更加普遍。并且它们为了改善不同组件之间的协作,已经创建了某些扩展功能。目前,几乎在所有的Linux发布版中都默认包含了这些产品。Linux、Apache、M ySQL和Perl、PHP或者Python语言,这些产品共同组成了一个强大的Web应用程序平台。作为开源软件的组合,LAMP最大的优势就是它的开放性。对开发人员来说,开放程度越高,其可选择东西也就越多,去描述需求的逻辑结构就很自由。下面就以LAMP组合为例,分别研究Linux 系统、Apa
10、che网络服务器、MySQL 数据库和PHP 脚本语言的安全防护。广州大学华软软件学院网络技术系学位论文第 1 页 共 58 页 广州大学华软软件学院 网络系第一章 LAMP 的安全模型1.1 LAMP 简介Linux+Apache+Mysql+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的 Web 应用程序平台。1.2 LAMP 的优势灵活性:既没有技术上的限制也没有许可证的限制。这允许你能够以适合你的方式灵活地构建和部署应用程序,而不是以你正在使用的技术的提供商规定的
11、方式。个性化:LAMP 组件是开源软件,已经建立了大量的额外的组件和提供额外功能的模块,能够让你个性化设置组件和功能以便满足你的需求。容易开发:用 LAMP 组件开发极其简单,代码通常非常简洁,甚至非程序员也能够修改或者扩展这个应用程序,同时也给专业的程序员提供了各种高级的特性。容易应用:大多数主机服务都把基于 LAMP 的环境作为标准,应用程序也不需要编译,在新的主机上部署一个应用程序就像拷贝一个应用软件那样容易。安全:由于是开源软件,大量的程序员关注这些软件的开发,问题通常能够很快地修复,不需要昂贵的技术支持合同。经过大量的用户和团体组织多年来的使用,LAMP 技术是安全和稳定的。成本低廉
12、:LAMP 组件都是开源软件,只要遵循 GPL 协议,可以自由获得和免费使用,极大降低了部署成本。1.3 模型图的设计根据网络安全的木桶理论,设计中把 lamp 安全模型划分为 lamp 安全、防火墙及入侵二个主要的模块,将其中的各项安全尽可能考虑周全并切实实施,才能保证整个 web 平台的高效稳定性。LAMP 的安全模型第 2 页 共 58 页 广州大学华软软件学院 网络系图1.0 安全lamp模型1.4 模型的分析模型的划分原则:首先在实现 Linux 系统安全的基础,搭建安全的apache,PHP,mysql 服务器,构成一个内部安全的 web 平台,然后再结合防火墙与入侵检测技术加固整
13、个 web 平台外部安全性,形成一个内外结合的稳定,安全 lamp系统模型。1.5 模型的实现1.5.1 Linux 系统的安全防护L i n u x 系统作为 L A M P 组合的基础,它的安全关系到整个系统的稳定,尽管 L i n u x 在功能上、价格上和性能上都有很多优势,但是作为开放式的操作系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 L i n u x 系统,或者盗取 L i n u x 系统上的重要信息。因此需要我们仔细地设定 L i n u x 的各种系统功能,并且加上必要的安全措施。一般来说对它的安全防护
14、体系主要包括一下几个方面:保护账户的安全试用最新的系统核心广州大学华软软件学院网络技术系学位论文第 3 页 共 58 页 广州大学华软软件学院 网络系取消不必要的服务日志管理共同防御,确保安全1.5.2 Apache 服务器的安全防护安装最新的补丁隐藏 Apache 的版本号及其他敏感信息确保 Apache 以其自身的用户账号和组运行确保 Web 根目录之外的文件没有提供服务关闭目录浏览关闭 CGI 执行程序,多重选项。1.5.3 MySQL 数据库安全防护M y S Q L 数据库是跨平台的关系型数据库,同时又是具有客户机/ 服务器体系结构的分布式数据库管理系统。用户可以利用很多语言编写访问
15、数据库。大部分L i n u x 发行版都已经集成了 M y S Q L 作为标准的数据库软件,所以需让它运行得更加安全。root 口令管理限制拥有 process 权限的用户范围不要把 file 权限给所有用户由于篇幅所限,本文不再深入讨论有关 Mysql 数据方面的安全。1.5.4 PHP 服务器安全防护P H P 是一种功能强大的语言和解释器,无论是作为 W e b 服务器的模块方式运行还是作为单独的 C G I 程序运行,都能访问文件、执行命令或者在服务器上打开链接,而这些特性都使得 PHP 运行时必须特别注意安全。以安全模式运行 PHP关闭 PHP 的错误显示限制 PHP 脚本的运行
16、目录第二章 Linux 系统的安全配置第 4 页 共 58 页 广州大学华软软件学院 网络系使用 PHP 加密技术1.5.5 防火墙与入侵检测设计防火墙作为系统的第一道防线,其主要作用是监控可信任网络和不可信任网络之间的访问通道,可在内部与外部网络之间构成一道防护屏障,拦截来自外部的绯法访问并阻止内部信息的外泄,用 Linux+iptables 做防火墙具有很高的灵活性和稳定性,而设置一个好的安全规则并严格实施,是配置一个好的防火墙必备条件。入侵检测技术的作用是监控网络和计算机系统是否出现被入侵或滥用的征兆。经过不断发展和完善,作为监控和识别攻击的标准解决方案,IDS 系统已经成为安全防备系统
17、的重要组成部分。Linux 平台下入侵检测的工具软件,如 snort,它是一款轻量级且易于使用的工具,可以独立运行,也可以与 psad 和 iptables 一起使用。根据系统需求灵活应用,建立安全的 IDS 系统。第二章 Linux 系统的安全配置2.1 Linux 操作系统简介由于 Linux 操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎。随着 Linux 操作系统在我国的不断普及,有关的政府部门更是将基于Linux 开发具有自主版权的操作系统提高到保卫国家信息安全的高度来看待,因此我们不难预测今后 Linux 操作系统在我国将得到更快更大的发展。虽然 Linux 与
18、UNIX 很类似,但它们之间也有一些重要的差别。对于众多的习惯了 UNIX 和Windows NT 的系统管理员来讲,如何保证 Linux 操作系统的安全将面临许多新的挑战。2.2 版本选择与安装2.2.1 安装 red hat AS 4.0 操作系统在安装该版本的 Linux 系统时候,需要充分考虑各个磁盘分区的安全性,分别广州大学华软软件学院网络技术系学位论文第 5 页 共 58 页 广州大学华软软件学院 网络系为不同的应用安装单独的主分区,将关键的分区设置为只读,这样将大大提高文件系统的安全。(1)磁盘分区安全问题:Linux 的文件系统可以分成几个主要的分区,每个分区分别进行不同的配置
19、和安装,一般情况下要把根目录(/) 、引导目录(/boot) 、用户目录(/home) 、临时目录(/tmp) 、/usr/local 和/var 目录分开到不同的磁盘分区,这样会保证如果某些目录遭到攻击或破坏不会波及到其他重要的目录,而且各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃.(2) 分区方案表虚拟机的 linux 系统目前有 12G 的空间可用:目录 空间容量 配置说明根目录 / 3G引导目录 /boot 120MB 包含了操作系统的内核和正常启动系统的文件,把/boot 单独分区,使主要的其它分区出现了问题,系统依然能够启动。交换目录 /Sw
20、ap 512M 作为交换分区,推荐大小为内存的两倍,本机的内存为 256M,所以分配为 512M用户目录 /home 2G 该空间主要存放用户的个人文件临时目录 /tmp 1G 存放大量的临时文件和碎片,对于多用户系统或者网络服务器是必要的。当用户对系统进行了错误的操作,因为文件系统的这一部分仍然还承受着读写操作,它通常会比其它的部分更快地发生问题。所以文件系统的其它部分仍然是安全的.第二章 Linux 系统的安全配置第 6 页 共 58 页 广州大学华软软件学院 网络系软件目录 /usr 3G 该分区是 Linux 系统存放软件的地方,应将最大空间分给它日志目录 /var 2G /var 分
21、区是数据变化频繁,存放系统日志分区,也是 LINUX redhat AS 4.0 的 WEB 目录默认存放位置,如/var/www/html.(3)fdisk -l 查看分区信息,如图 1.1 所示。图 1.1 分区情况2.3 Linux 系统安全问题 (1)篡改 Root 密码如果不给 Grub 设置口令,那么就等于 root 用户的密码可以被随意更改,因为攻击者可以通改 Grub 的引导参数,从而进入单用户模式直接修改 root 密码。所以作为一个安全的系统,给 Grub 设置密码是十分必要的。(2)用户权限问题对不同的用户必须要分类管理,赋予不同的操作权限,而对于那些不设密码的用户,必须
22、要禁止,这样可以防止攻击者利用此途径进入系统。通过查看广州大学华软软件学院网络技术系学位论文第 7 页 共 58 页 广州大学华软软件学院 网络系/etc/passwd 文件可以检查用户名与密码的对应关系。(3)口令文件安全在 Linux 系统下的/etc/passwd 文件,是以明文方式存放密码的,这就给系统的安全性带来了很大的隐患。用 chattr 命令给的文件加上不可更改属性,从而防止非授权用户获得权限。 (4)Su 命令安全通过系统的 su 命令,普通用户在知道 root 用户密码的前提下可以转化为 root用户,这给系统的安全带来很大的隐患。为了防止此类问题的发生,可以禁用 su命令
23、。增强系统安全性(5)系统信息泄露默认情况下,当你登录 Linux 系统的时候,会显示出相关的系统信息,这样会给攻击者利用,提高其入侵的成功率。我们可以编辑相关的文件来隐藏系统的信息。(6)DoS 攻击DoS 攻击是指攻击者通过消耗受害网络的带宽,消耗受害主机的系统资源,发掘编程缺陷,提供虚假路由或 DNS 信息,使被攻击目标不能正常工作。为了防范此类的攻击,我们可以对系统所有的用户设置资源限制。2.4 linux 系统安全策略2.4.1 给 BIOS 设置密码Bios 设置密码,以防通过在 Bios 中改变启动顺序,而可以从软盘启动。这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止
24、别人进入 Bios 改动其中的设置(比如允许通过软盘启动等) 。2.4.2 设置 grub 启动口令grup 负责引导主集中的操作系统,其安全性设置至关重要(从 grup 或 lilo 引导开始,可以进入 single 模式,修改 root 密码)第二章 Linux 系统的安全配置第 8 页 共 58 页 广州大学华软软件学院 网络系第一步:设置文件/boot/grub/grub.conf,在 passwword 后面加入设置的密码。第二步:重新返回引导界面,根据提示,按要求输入用户名和密码。2.4.3 为 LILO 增加开机口令LILO 是代表 Linux 加载程序,在/etc/lilo.c
25、onf.anaconda 文件中增加选项,从而使 LILO 启动时要求输入口令,以加强系统的安全性。第一步:编辑 lilo.conf.anaconda 文件(vi /etc/lilo.conf.anaconda),在/etc/lilo.conf.anaconda 文件中添加两个选项:restricted,password。并在password 选项后面添加要设定的密码,这样系统在启动 lilo 时就要求通过密码验证。第二步:通过编辑 lilo.conf.anaconda 文件,可以知道在 lilo 中,口令是以明码的方式存放的,存在一定的安全隐患,所以要把/etc/lilo.conf.anac
26、onda 文件的权限设置为:只允许 root 用户读取。 rootlocalhost /# chmod 0600 /etc/lilo.conf.anaconda .第三步:为了防止非法更改 lilo.conf.anaconda 文件,可以使用“chattr” 命令把“/etc/ llilo.conf.anaconda “文件无法变动。rootlocalhost /# Chattr +i /etc/lilo.conf.anacoda2.4.4 用户与口令设置(1)用户安全: 在 Linux 系统中,系统将输入的用户名存放在/etc/passwd 文件中。能够对其进行访问的只能是超级用户(root
27、)和操作系统的一些应用程序。还要杜绝不设口令的帐号存在。可以通过查看/etc/passwd 文件发现。例如,存在的用户名为 test的帐号,没有设置口令,则在该文件中存在第二项为空:广州大学华软软件学院网络技术系学位论文第 9 页 共 58 页 广州大学华软软件学院 网络系test:100:9:/home/test:/bin/bash。应将该类帐号删除或者设置口令。 (2)用户口令:在/etc/passwd 文件中是以明文方式存放密码的,这就给系统的安全性带来了很大的隐患。用 chattr 命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。 rootlocalhost /# cha
28、ttr +i /etc/passwd rootlocalhost /# chattr +i /etc/shadow rootlocalhost /# chattr +i /etc/group rootlocalhost /# chattr +i /etc/gshadow(3)修改一些系统帐号的 Shell 变量:系统中存在一些默认的账号,例如 uucp,ftp 和 news 等,有一些仅仅需要 FTP功能的帐号,一定不要给他们设置/bin/bash 或者/bin/sh 等 Shell 变量。编辑/etc/passwd 文件,输入以下命令,将它们的 Shell 变量置空.rootlocalhos
29、t /# usermod s /dev/null uucprootlocalhost /# usermod s /dev/null ftprootlocalhost /# usermod s /dev/null news(4)设置口令最小长度和最短使用时间 编辑/etc/login.defs 文件中 PASS_MIN_DAYS 选项,修改参数为 30 天,PASS_MIN_LEN 选项。设置为长度为 8。2.4.5 取消普通用户的控制台访问权限 使用命令 rm -f /etc/security/console.apps/,取消普通用 户的控制台访问限,比如 shutdown、reboot、ha
30、lt 等命令,program 表示要注销的程序第二章 Linux 系统的安全配置第 10 页 共 58 页 广州大学华软软件学院 网络系名。2.4.6 控制 root 登录 tty 设备 “/etc/securetty”文件允许你规定“root”用户可以从那个 TTY 设备登录。编辑 securetty 文件(vi /etc/securetty)注释掉(在这一行的开头加上号)不想让 root 登录的 tty 设备2.4.7 禁止普通用户 su 为 root 用户su(Substitute User 替代用户)命令允许你成为系统中其他已存在的用户,如果你不想任何人能够 su 作为 root,你能
31、编辑/etc/pam.d/su 文件,并添加下面的行:auth required /lib/security/$ISA/pam_wheel.so.group=isd这表示只有 isd 组的用户可以执行 su 命令成为 root 用户。2.4.8 隐藏系统信息 设置登陆时候不要显示操作系统和版本信息,首先编辑 “/etc/rc.d/rc.local“ 文件, 在下面显示的这些行前加一个“#”,把输出信息的命令注释掉或者备份后清空。然后删除“/etc“目录下的“”和“issue“文件: rootlocalhost /#rm f /etc/issuerootlocalhost /#rm f /etc
32、/ 2.4.9 阻止 ping 防止任何人 ping 你的系统,提高系统的安全性。rootlocalhost/# echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all 1 /proc/sys/net/ipv4/icmp_echo_ingnore_all广州大学华软软件学院网络技术系学位论文第 11 页 共 58 页 广州大学华软软件学院 网络系2.4.10 防止 DoS 攻击 对系统所有的用户设置资源限制可以防止 DoS 类型攻击。如最大进程数和内存使用数量等。第一步:编辑/etc/security/limits.conf,并添加以下内容:rootloc
33、alhost /# vi /etc/security/limits.confrootlocalhost /# hard core 0rootlocalhost /# hard rss 5000rootlocalhost /# hard nproc 20 第二步:然后必须编辑/etc/pam.d/login 文件检查,检查 session required /lib/security/pam_limits.so 是否存在。没有就自己添加上面的命令禁止调试文件,限制进程数为 50 并且限制内存使用为 5MB。2.4.11 特别的帐号禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装 系
34、统时就应该做此检查,Linux 提供了各种帐号,你可能不需要,如果你不需要这 个帐号,就移走它,你有的帐号越多,就越容易受到攻击。在终端上打入下面的命令删掉下面的用户。rootlocalhost /# userdel admrootlocalhost /# userdel lprootlocalhost /# userdel syncrootlocalhost /# userdel shutdownrootlocalhost /# userdel haltrootlocalhost /# userdel mail如果你不用 sendmail 服务器,procmail.mailx,就删除这个帐号
35、。第二章 Linux 系统的安全配置第 12 页 共 58 页 广州大学华软软件学院 网络系rootlocalhost /# userdel newsrootlocalhost /# userdel uucprootlocalhost /# userdel operatorrootlocalhost /# userdel games如果你不用 X windows 服务器,就删掉这个帐号。rootlocalhost /# userdel gopherrootlocalhost /# userdel ftp如果你不允许匿名 FTP,就删掉这个用户帐号。打入下面的命令删除组帐号rootlocalho
36、st /# groupdel admrootlocalhost /# groupdel lprootlocalhost /# groupdel mail如不用 Sendmail 服务器,删除这个组帐号rootlocalhost /# groupdel newsrootlocalhost /# groupdel uucprootlocalhost /# groupdel games如你不用 X Windows,删除这个组帐号rootlocalhost /# groupdel diprootlocalhost /# groupdel pppusersrootlocalhost /# groupde
37、l popusers2.4.12 经常更新及安装补丁由于各种 linux 厂商的分版不同,所以先访问 redhat 相关主页获取信息 ftp:/ Fvh 文件名可用广州大学华软软件学院网络技术系学位论文第 13 页 共 58 页 广州大学华软软件学院 网络系up2date 命令直接更新.第三章 Apache 安全分析与配置3.1 Web 服务器软件 Apache 简介随着网络技术的普及、应用和 Web 技术的不断完善,Web 服务已经成为互联网上重要的服务形式之一。原有的客户端/服务器模式正在逐渐被浏览器/服务器模式所取代。本章将介绍 Web 服务器的工作原理以及面临的主要威胁,并结合 lin
38、ux 平台搭配安全的 Web 服务器。3.1.1. Apache 的工作原理客户端与服务器的通信过程简述如下:(1)客户端(浏览器)和 Web 服务器建立 TCP 连接,连接建立以后,向 Web服务器发出访问请求(如 get)。根据 HTTP 协议,该请求中包含了客户端的 IP 地址、浏览器的类型和请求 的 URL 等一系列信息。(2)Web 服务器收到请求后,将客户端要求的页面内容返回到客户端。如果出现错误,那么返回错误代码。(3)断开与远端 Web 服务器的连接。3.1.2 Apache 服务器面临的安全问题 为了保护 Web 服务器不被恶意攻击和破坏,第一步就是要了解和识别它所面临的安全
39、风险,Apache 服务器主要面临的安全问题如下:(1)显示版本信息通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。在默认情况下,系统会把 Apache 版本模块都显示出来,这样无疑是给黑客提供了重要的消息,防止此类的信息泄露,可以通过修改 apache 的配置文件。(2)拒绝服务攻击第三章 Apache 安全分析与配置第 14 页 共 58 页 广州大学华软软件学院 网络系这种方法攻击者会通过某些手段使服务器拒绝对 HTTP 应答。这样会使 Apache对系统资源(CPU 时间和内存)需求的剧增,最终造成 Apache 系统变慢甚至完全瘫痪。(3)被攻击者获得 r
40、oot 权限的安全缺陷该安全缺陷主要是因为 Apache 服务器一般以 root 权限运行(父进程),攻击者会通过它获得 root 权限,进而控制整个 Apache 系统。杜绝此类安全隐患可以为Apache 使用配置专门的用户和用户组,并限制其权限。(4)防止非法用户访问黑客通过匿名用户来攻击 apache 服务器,这样使得 web 服务器难以追踪到黑客的真实身份,不利于进行反攻击及安全防范策略的实施,Apache 自带用户认证机制可以帮我们解决这个问题,它能够有效控制所有登录并检查访问用户的合法性,使合法用户以合法的权限访问网络系统的资源。维护 web 网站的安全。(5)文件与目录信息安全对
41、于 web 网站的一些重要文件,一旦被黑客知道其准确的位置,通过入侵web 服务器,非法获得读取权限,使这类信息暴露出来,解决文件和目录安全的方法,可以通过设置文件的访问权限和禁止目录的索引来完成。(6)Web 的通信弱点HTTP 没有提供加密机制,第三方可以在客户和服务器之间窃听通讯。HTTP是一个无状态协议不保存有关用户的信息,不能证实用户的身份。HTTP 没有提供方法来认证正在进行的会话。不能判断是否有第三方窃听了会话。为了解决这些缺陷,我们可以使用安全套接层协议 SSL。安全套接层是采用 RSA 和 DES 认证与加密以及MD5 完整性检查而包装起来的方法。使用这些方法,SSL 解决了
42、基于 Web 通讯的安全问题3.2 配置一个安全的 Apache 服务器 下面就以 Apache 2.2.4 版本为例图文说明如何搭建一个安全的服务器。3.2.1 及时升级系统或添加补丁经常关注相关网站的安全信息发布,并且及时修补和升级。使用最高和最新的广州大学华软软件学院网络技术系学位论文第 15 页 共 58 页 广州大学华软软件学院 网络系安全版本对于加强 Apache Web 服务器的安全是至关重要的。3.2.2 隐藏和伪装 Apache 的版本第一步:先使用端口扫描工具 nmap 来查看未设置前的端口信息,如图 2.1 所示.图 2.1 扫描端口第二步:编辑配置文件/etc/http
43、d.conf。找到 ServerSignature 关键字,并修改为 ServerSignature On ServerTokens Prod。如图 2.2 所示。第三章 Apache 安全分析与配置第 16 页 共 58 页 广州大学华软软件学院 网络系图 3.1 配置 httpd.conf 文件第三步:然后重新启动 Apache 服务器。使修改生效,再用 nmap 工具进行扫描,发现提示中的 Apache 版本信息已经隐藏了。如图 3.2 所示。图 3.2 验证配置3.2.3 建立一个安全的目录结构广州大学华软软件学院网络技术系学位论文第 17 页 共 58 页 广州大学华软软件学院 网络
44、系Apache 服务器包括以下四个主要目录。 ServerRoot:保存配置文件(conf 子目录)、二进制文件和其他服务器配置文件。 DocumentRoot:保存 Web 站点的内容,包括 HTML 文件和图片等。 ScripAlias:保存 CGI 脚本。 Customlog 和 Errorlog:保存访问日志和错误日志。安全配置原则: ServerRoot 目录应该被配置为只能由 root 用户访问;DocumentRoot 应该能够被管理 Web 站点内容的用户访问和使用 Apache 服务器的Apache 用户和 Apache 用户组访问;ScriptAlias 目录应该只能被 C
45、GI 开发人员和Apache 用户访问;只有 root 用户可以访问日志目录3.2.4 为 Apache 使用专门的用户和用户组按照最小特权原则,需要给 Apache 分配一个合适的权限,让其能够完成 Web服务。必须保证 Apache 使用一个专门的用户和用户组,不要使用系统预定义的账号,比如 nobody 用户和 nogroup 用户组。因为只有 root 用户可以运行Apache,DocumentRoot 应该能够被管理 Web 站点内容的用户访问和使用 Apache 服务器的 Apache 用户和 Apache 用户组访问。 设“cao”用户要在 Web 站点发布内容,只有 root
46、用户才可以访问日志目录,如图 3.3 所示.第三章 Apache 安全分析与配置第 18 页 共 58 页 广州大学华软软件学院 网络系图 3.3 设置 apache 用户与组3.2.5 Web 目录的访问策略(1)禁止使用目录索引当用户访问一个不存在于服务器的文件时, Apache 就会显示该目录的列表。这样会暴露 Web 站点结构,因此需要修改配置文件禁止显示动态目录索引。修改配置文件 httpd.conf:Options -Indexes FollowSymLinks(2)禁止用户重载为了禁止用户对目录配置文件(.htaccess)进行重载(修改),可以设定:AllowOverride
47、None3.2.6 关注 Apache 服务器日志文件Apache 可以记录所有的访问请求,同样,错误的请求也会记录。Apache 配置文件中,需要关心的和日志相关的配置文件有两个:$ CustomLog /www/logs/access_log common #记录 Web 站点的每个进入请求$ ErrorLog /www/logs/error_log #记录产生错误状态的请求#通过分析与维护这些日志文件可以快速的定位和解决服务器的故障。广州大学华软软件学院网络技术系学位论文第 19 页 共 58 页 广州大学华软软件学院 网络系3.2.7 htaccess 文件实现用户安全认证第一步:首先
48、利用 Apache 附带的程序 htpasswd,在/etc/httpd/conf.d/目录下生成包含用户名和密码的文本文件:pdfile.txt,系统自动生成每行内容格式为“用户名:密码”,如图 3.4 所示.图 3.4 建立用户密码文件第二步:然后在 conf.d 目录下创建 apache 基本认证配置文件 auth_basic.conf(亦可在 httpd.conf 内设置) 如图 3.5 所示.图 3.5 设置配置文件第三章 Apache 安全分析与配置第 20 页 共 58 页 广州大学华软软件学院 网络系第三步:最后进入/var/www/html/目录下创建控制的目录和.htacc
49、ess 文件,如图 3.6 所示图 3.6 建立.htaccess 文件.htaccess 文件最后的“require”告诉服务器哪些用户可以进入。第四步:验证用户,在浏览器的地址栏中输入:http:/172.16.4.203/doc若提示输入认证,则表示配置正确。如图 3.7 所示.图 3.7 浏览器验证广州大学华软软件学院网络技术系学位论文第 21 页 共 58 页 广州大学华软软件学院 网络系第五步:按要求输入用户名,密码即可进入需要访问的目录,如图 3.8 所示.图 3.8 显示结果3.2.8 设置文件访问的权限设置在认证配置文件 auth_basic.conf 或 httpd.conf 内设置禁止读取文件,下面以 aa,html 文件为例,演示如何禁止他人读取。第一步:编辑认