Linux服务器安全策略详解之Apache配置

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

标签:字体6.3配置一个安全的Apache服务器合理的网络配置能够保护Apache服务器免遭许多攻击。6.3.1勤打补丁在上最新的changelog中都写着:bugfix、securitybugfix的字样。所以,Linux网管员要经常关注相关网站的缺陷,及时升级系统或添加补丁。使用最高和最新的安全版本对于加强ApacheWeb服务器的安全是至关重要的。将你的OpenSSL升级到0.9.6e或者更高版本,伪造的密钥将起不了任何作用,也不能渗透到系统里。一些反病毒程序能发现并杀死SSL蠕虫,但是蠕虫可能产生变体,从而逃脱反病毒软件的追捕。重启Apache可以杀死这样的病毒,但是对防止将来的感染没有任何意义。6.3.2隐藏和伪装Apache的版本通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。在默认情况下,系统会把Apache版本模块都显示出来(http返回头)。如果列举目录的话,会显示域名信息(文件列表正文),去除Apache版本号的方法是修改配置文件/etc/httpd.conf。找到关键字ServerSignature,将其设定为:ServerSignatureOffServerTokensProd然后重新启动Apache服务器。通过分析Web服务器的类型,大致可以推测出操作系统的类型,比如,Windows使用IIS来提供HTTP服务,而Linux中最常见的是Apache。默认的Apache配置里没有任何信息保护机制,并且允许目录浏览。通过目录浏览,通常可以获得类似Apache/1.3.27Serveratapache.linuxforum.netPort80或Apache/2.0.49(Unix)PHP/4.3.8的信息。通过修改配置文件中的ServerTokens参数,可以将Apache的相关信息隐藏起来。但是,RedHatLinux运行的Apache是编译好的程序,提示信息被编译在程序里,要隐藏这些信息需要修改Apache的源代码,然后,重新编译安装程序,以替换里面的提示内容。以Apache2.0.50为例,编辑ap_release.h文件,修改#defineAP_SERVER_BASEPRODUCT\Apache\为#defineAP_SERVER_BASEPRODUCT\Microsoft-IIS/5.0\。编辑os/unix/os.h文件,修改#definePLATFORM\Unix\为#definePLATFORM\Win32\。修改完毕后,重新编译、安装Apache。Apache安装完成后,修改httpd.conf配置文件,将ServerTokensFull改为ServerTokensProd;将ServerSignatureOn改为ServerSignatureOff,然后存盘退出。重新启动Apache后,用工具进行扫描,发现提示信息中已经显示操作系统为Windows。下一篇:新保密法引发网络安全产业地震12345678下一页[编辑:auto]6.3.3建立一个安全的目录结构Apache服务器包括以下四个主要目录。-ServerRoot:保存配置文件(conf子目录)、二进制文件和其他服务器配置文件。-DocumentRoot:保存Web站点的内容,包括HTML文件和图片等。-ScripAlias:保存CGI脚本。-Customlog和Errorlog:保存访问日志和错误日志。建议设定这样一个目录结构,以上四个主要目录相互独立并且不存在父子逻辑关系。提示ServerRoot目录应该被配置为只能由root用户访问;DocumentRoot应该能够被管理Web站点内容的用户访问和使用Apache服务器的Apache用户和Apache用户组访问;ScriptAlias目录应该只能被CGI开发人员和Apache用户访问;只有root用户可以访问日志目录。下面是一个安全目录结构,如图6-3所示。图6-3安全目录结构这样的目录结构是比较安全的,因为目录之间是独立的,某个目录的权限错误不会影响到其他目录。6.3.4为Apache使用专门的用户和用户组按照最小特权原则,需要给Apache分配一个合适的权限,让其能够完成Web服务。提示最小特权原则是系统安全中最基本的原则之一,它限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。必须保证Apache使用一个专门的用户和用户组,不要使用系统预定义的账号,比如nobody用户和nogroup用户组。因为只有root用户可以运行Apache,DocumentRoot应该能够被管理Web站点内容的用户访问和使用Apache服务器的Apache用户和Apache用户组访问。所以,如果希望cao用户在Web站点发布内容,并且可以以httpd身份运行Apache服务器,通常可以这样:groupaddwebteamusermod-Gwebteamcaochown-Rhttpd.webteam/只有root用户访问日志目录,这个目录的推荐权限:chown-Rroot.root/etc/logschmod-R700/etc/logs标签:字体6.3.5Web目录的访问策略对于可以访问的Web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表。1.禁止使用目录索引Apache服务器在接收到用户对一个目录的访问时,会查找Directorylndex指令指定的目录索引文件,默认情况下该文件是index.html。如果该文件不存在,那么Apache会创建动态列表为用户显示该目录的内容。通常这样的设置会暴露Web站点结构,因此需要修改配置文件禁止显示动态目录索引。修改配置文件httpd.conf:Options-IndexesFollowSymLinksOptions指令通知Apache禁止使用目录索引。FollowSymLinks表示不允许使用符号链接。2.禁止默认访问一个好的安全策略要禁止默认访问的存在,只对指定的目录开启访问权限,如果允许访问/var/目录,使用如下设定:Orderdeny,allowAllowfromall3.禁止用户重载为了禁止用户对目录配置文件(.htaccess)进行重载(修改),可以这样设定:AllowOverrideNone6.3.6Apache服务器访问控制方法Apache的access.conf文件负责设置文件的访问权限,可以实现互联网域名和IP地址的访问控制。它包含一些指令,控制允许什么用户访问Apache目录。应该把denyfromall设为初始化指令,再使用allowfrom指令打开访问权限。如果允许192.168.1.1到192.168.1.254的主机访问,可以这样设定:orderdeny,allowdenyfromallallowfrompair192.168.1.0/255.255.255.0下一篇:新保密法引发网络安全产业地震上一页12345678下一页[编辑:auto]6.3.7管理Apache服务器访问日志1.相关配置文件说明一个优秀的Linux网络管理员会密切关注服务器日志系统,这些日志可以提供异常访问的线索。Apache可以记录所有的访问请求,同样,错误的请求也会记录。Apache配置文件中,需要关心的和日志相关的配置文件有两个:$CustomLog/记录对Web站点的每个进入请求#$ErrorLog/记录产生错误状态的请求#CustomLog用来指示Apache的访问日志存放的位置(这里保存在/中)和格式(这里为common);ErrorLog用来指示Apache的错误信息日志存放的位置。对于不配置虚拟主机的服务器来说,只需直接在httpd.conf中查找CustomLog配置进行修改即可。而对于具有多个虚拟服务器的Web服务器来说,需分离各个虚拟服务器的访问日志,以便对各个虚拟服务器进行访问统计和分析,因此,需要在虚拟服务器配置中进行独立的日志配置。2.Web服务器日志轮循Web服务器日志轮循比较好的方式有三种:第一种方法是利用Linux系统自身的日志文件轮循机制logrotate;第二种方法是利用Apache自带的日志轮循程序rotatelogs;第三种是使用在Apache的FAQ中发展已经比较成熟的日志轮循工具cronolog。对于大型的Web服务器来说,往往使用负载均衡技术提高Web站点的服务能力,这样后台有多个服务器提供Web服务,大大方便了服务的分布规划和扩展。如果有多个服务器,需要对日志进行合并,统一进行统计分析。因此为了保证统计的精确性,需要严格按照每天的时段来自动生成日志。(1)用logrotate实现日志轮循首先讨论采用Linux系统自身的日志文件轮循机制logrotate的方法。logrotate是Linux系统自身带的一个日志轮循程序,是专门对各种系统日志(syslog、mail)进行轮循的程序。该程序是由运行程序的服务crond每天凌晨4:02运行的。在/etc/cron.daily目录下可以看到logrotate文件:#!/bin/sh/$usr/sbin/logrotate/etc/logrotate.conf每天凌晨crond都会启动/etc/cron.daily目录下的logrotate脚本来进行日志轮循。在/etc/logrorate.conf中可以看到如下内容:#seemanlogrotatefordetails#rotatelogfilesweeklyweekly#keep4weeksworthofbacklogsrotate4#createnew(empty)logfilesafterrotatingoldonescreate#uncommentthisifyouwantyourlogfilescompressed#compress#RPMpackagesdroplogrotationinformationintothisdirectoryinclude/etc/logrotate.d#nopackagesownwtmp--we'llrotatethemhere/var/log/wtmp{monthlycreate0664rootutmprotate1}#system-specificlogsmaybealsobeconfiguredhere.从logrotate的配置文件中可以看到,除了wtmp以外,需要滚动的日志的配置都保存在/etc/logroate.d目录下。因此只需要在该目录下创建一个名为apache的配置文件,来指示logrotate如何轮循Web服务器的日志文件即可。这种方法的优点是不需要其他第三方工具就可以实现日志轮循。但是对于重负载的服务器和使用负载均衡技术的Web服务器来说,这种方法不是很实用,因为它是对相应服务进程发出一个-HUP重启命令来实现日志的截断归档的,这样会影响服务的连续性。(2)用rotatelogs实现日志轮循Apache提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任意程序,如日志分析、压缩日志等。要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为|程序名即可,例如:#compressedlogs$CustomLog|/usr/bin/gzip-c/var/log/access_log.gzcommon这样就可以使用Apache自带的轮循工具rotatelogs来对日志文件进行轮循。rotatelogs基本是按时间或大小来控制日志的。$CustomLog|/

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功