首页 > 代码库 > Apache服务器安全加固
Apache服务器安全加固
声明:绝对的安全是不存在的,下面只提供一些方法和思路,具体情况要具体分析。
一、安装最新的补丁
如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。
二、隐藏Apache的版本号及其它敏感信息
默认情况下,很多apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。
这里有两条语句,你需要添加到你的httpd.conf文件中:
ServerSignature Off
ServerTokens Prod
ServerSignature该参数设置 出现在apache所产生的像404页面、目录列表等页面的底部,
三个选项 On|Off|EMai 主要起开关作用,推荐设置为Off。
ServerTokens该参数设置http 头部返回的apache 版本信息,安全起见,尽量少显示信息,推荐设置为Off,可用的值和含义如下(显示的信息逐渐增加):
Prod:仅软件名称,例如:apache
Major:包括主版本号,例如:apache/2
Minor:包括次版本号,例如:apache/2.0
Min:仅apache 的完整版本号,例如:apache/2.0.54
OS:包括操作系统类型,例如:apache/2.0.54(Unix)
Full: 包括apache 支持的模块及模块版本号, 例如:Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g
三、确保apache以其自身的用户账号和组运行(Apache启动权限)
创建一个新的帐户来替代这个帐号启动apache并设置相应的权限。
1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,设置密码,加入guests组(如果出现问题,可以赋予user权限);
2.打开开始->管理工具->本地安全策略,在用户权限分配中选择“作为服务登陆”,添加apache用户;
3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查找 选择apache,输入密码apacheuser,然后点确定(这个时候apache还不能正常启动,一般情况肯定会报错:Apache2.2 服务因 1 (0×1) 服务性错误而停止。);
4.配置权限:Apache安装目录(比如"D:/apache")以及web目录(比如"D:/wwwroot"),去除各磁盘根目录除administror与system以外的所有权限,Apache安装目录赋予apache帐户读取和运行权限,web目录赋予apache帐户读取权限,上传目录和缓存目录赋予写入权限。
四、确保web根目录之外的文件没有提供服务
我们不让apache访问web根目录之外的任何文件。假设你的所以web站点文件都放在一个目录下(例如/web),你可以如下设置:
order deny,allow
deny from all
options none
allowoverride none
order allow,deny
allow from all
注意,因为我们设置opitins none 和allowoverride none,这将关闭服务器的所有option和override。你现在必须明确把每个目录设置成option或者override
五、关闭目录浏览
你可以在directory标签内用option命令来实现这个功能。设置option为none或者-indexes。
options -indexes
六、关闭includes
这也可以通过在directory标签内使用option命令来实现。设置option为none或者-includes。
options -includes
七、关闭cgi执行程序
如果你不用cgi,那么请把它关闭。在目录标签中把选项设置成none或-execcgi就可以:
options -execcgi
八、禁止apache遵循符号链接
同上,把选项设置成none或-followsymlinks:
options -followsymlinks
九、关闭多重选项
如果想关闭所有选项,很简单:
options none
如果只想关系一些独立的选项,则通过将options做如下设置可实现:
options -execcgi -followsymlinks -indexes
十、关闭对.htaccess文件的支持
在一个目录标签中实现:
allowoverride none
如果需要重载,则保证这些文件不能够被下载,或者把文件名改成非.htaccess文件。比如,我们可以改成.httpdoverride文件,然后像下面这样阻止所有以.ht打头的文件:
accessfilename .httpdoverride
order allow,deny
deny from all
satisfy all
十一、运行mod_security
run mod_security是o’reilly出版社出版的apache security一书的作者,ivan ristic所写的一个非常好用的一个apache模块。可以用它实现以下功能:
·简单过滤
·基于过滤的常规表达式
·url编码验证
·unicode编码验证
·审计
·空字节攻击防止
·上载存储限制
·服务器身份隐藏
·内置的chroot支持
·更多其它功能
十二、关闭任何不必要的模块
apache通常会安装几个模块,浏览apache的module documentation,了解已安装的各个模块是做什么用的。很多情况下,你会发现并不需要激活那些模块。
找到httpd.conf中包含loadmodule的代码。要关闭这些模块,只需要在代码行前添加一个#号。要找到正在运行的模块,可以用以下语句:
grep loadmodule httpd.conf
以下模块通常被激活而并无大用:mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex
十三、从httpd.conf中清除默认的注释
Apache 2.2.4中默认的httpd.conf文件有400多行。在这400行中,只有一小部分是实际的Apache指令,其余的仅是帮助用户如何恰当地在httpd.conf中放置指令的注释。完全清除多余的注释。文件变得更加容易阅读
十四、Listen指令具体化
在你第一次安装Apache时,httpd.conf包含一个“Listen 80”指令。应将其改变为“Listen mn.xx.yy.zz:80”,在这里“mn.xx.yy.zz”是你想让Apache监听其请求的IP地址。如果你的Apache运行在一个拥有多个IP地址的服务器上时,这一点尤其重要。如果你不采取预防措施,默认的“Listen 80”指令告诉Apache监听每一个IP地址的80端口。
鼎峰胡佳雄
QQ.2881064155
Skype.2881064155@qq.com
Apache服务器安全加固