当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [转帖]巩固Apache配置的安全方法20则
帖子发表于 : 2008-09-08 17:44 
头像

注册: 2006-09-13 23:59
帖子: 56
送出感谢: 0 次
接收感谢: 0 次
巩固Apache配置的安全方法20则

原文:http://www.petefreitag.com/item/505.cfm

本文下面介绍20种让你的Apache配置更安全的方法:
隐藏Apache的版本号及其它敏感信息,确保Apache以其自身的用户账号和组运行,确保 web根目录之外的文件没有提供服务,关闭目录浏览,关闭includes,关闭CGI执行程序,禁止Apache遵循符号链接,关闭对.htaccess文件的支持等等问题。

声明:关于安全的事情没有保证的或者绝对的。这些建议可以让你的服务器更安全,但不要认为遵循这些建议后你的服务器就理所当然是安全的。另外,在这些建议中有的建议可能会降低服务器性能或者因为你的环境引起问题。我建议所作的任何改变是否适合你的需求完全由你决定。换句话说,那是你的风险。

一、确保你安装的是最新的补丁
如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。

二、隐藏Apache的版本号及其它敏感信息
默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。 这里有两条语句,你需要添加到你的httpd.conf文件中:

ServerSignature Off
ServerTokens Prod

ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。
ServerTokens目录被用来判断Apache会在Server HTTP响应包的头部填充什么信息。
如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成: Server:Apache 如果你非常想尝试其它事物,你可以通过编辑源代码改成不是Apache的其它东西,或者你可以通过下面将要介绍的mod_security实现。


三、确保Apache以其自身的用户账号和组运行
有的Apache安装过程使得服务器以nobody的用户运行,所以,假定Apache和你的邮件服务器都是以nobody的账号运行的,那么通过Apache发起的攻击就可能同时攻击到邮件服务器,反之亦然。
User apache
Group apache

四、确保web根目录之外的文件没有提供服务
我们不让Apache访问web根目录之外的任何文件。假设你的所以web站点文件都放在一个目录下(例如/web),你可以如下设置:
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /web>
Order Allow,Deny
Allow from all
</Directory>
注意,因为我们设置Opitins None 和AllowOverride None,这将关闭服务器的所有Option和Override。你现在必须明确把每个目录设置成Option或者Override。

五、关闭目录浏览 (Turn off directory browsing)
你可以在Directory标签内用Option命令来实现这个功能。
设置Option为None或者-Indexes。

Options -Indexes

六、关闭includes (Turn off server side includes)
这也可以通过在Directory标签内使用Option命令来实现。
设置Option为None或者-Includes。

Options -Includes

七、关闭CGI执行程序 (Turn off CGI execution)
如果你不用CGI,那么请把它关闭。
设置Option为None或-ExecCGI就可以:

Options -ExecCGI

八、禁止Apache遵循符号链接 (Don't allow apache to follow symbolic links)
设置Option为None或-FollowSymLinks:

Options -FollowSymLinks

九、关闭多重选项 (Turning off multiple Options)
如果想关闭所有选项,很简单:

Options None

如果只想关系一些独立的选项,则通过将Options做如下设置可实现:

Options -ExecCGI -FollowSymLinks -Indexes

十、关闭对.htaccess文件的支持 (Turn off support for .htaccess files)
在一个目录标签中实现:
AllowOverride None
如果需要重载,则保证这些文件不能够被下载,或者把文件名改成非.htaccess文件。比如,我们可以改成.httpdoverride文件,然后像下面这样阻止所有以.ht打头的文件:
AccessFileName .httpdoverride
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>

十一、运行mod_security
mod_security是O’Reilly出版社出版的Apache Security一书的作者--Ivan Ristic所写的一个非常好用的一个Apache模块。你可以用它实现以下功能:
.简单过滤
.基于过滤的常规表达式
.URL编码验证
·Unicode编码验证
.审计
.空字节攻击防止
.上载存储限制
.服务器身份隐藏
.内置的Chroot支持
.更多其它功能

十二、关闭任何不必要的模块(Disable any unnecessary modules)
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。

十三、确定只有 才能root访问apache的config和binaries
假如你的apache装在/usr/local/apache

chown -R root:root /usr/local/apache
chmod -R o-rwx /usr/local/apache

十四、降低timeout值(Lower the Timeout value)
默认的timeout被设定为300s,为了帮助减少拒绝服务攻击的潜在影响,你可以如下设置:

Timeout 45

十五、Limiting large requests
apache有很多指令可以让你限制请求包的大小,对减轻拒绝服务攻击的影响很有效。
其中一条就是运行LimitRequestBody指令。这个指令默认设置为无限制 。如果你
只允许上传的文件在1MB以内,你可以如下设置:

LimitRequestBody 1048576

如果你不允许文件上传,你可以把它设置的更小!

其他的指令如:LimitRequestFields, LimitRequestFieldSize 和 LimitRequestLine.
对多数服务器来说,这些指令都被设置了一个适当的默认值。但你可以为了你的需要而改变他们的默认设置!

十六、Limiting the size of an XML Body
如果你运行了模块mod_dav,那么你可能需要限制XML request body的大小。LimitXMLRequestBody 是apache2上仅有的有效指令,他的默认值是1百万字节(近1MB)
也有许多设置为0 ,意味着无限制大小,当你使用WebDAV上传巨型文件时,这种设置可能很有用,但是如果你只是简单的为了来源控制,你可能需要设置一个上限,如10MB:

LimitXMLRequestBody 10485760

十七、Limiting Concurrency
apache有许多的配置设定来调节处理concurrent request
MaxClients是服务于请求的child processes 最大限制数。很可能设置的太高而没有足够的内存去处理海量并发请求。
其他的指令有:MaxSpareServers, MaxRequestsPerChild
在apache2中
调节ThreadsPerChild, ServerLimit和MaxSpareThreads来匹配你的操作系统和硬件是非常重要的!


十八、Restricting Access by IP
如果你只想让某个网段或者某个IP接入,你可以在apache配置文件中强制实行。
如:你想限制你的intranet,只能被176.16.网段接入:
Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16

Or by IP:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1



十九、Adjusting KeepAlive settings

按照Apache的文档,使用HTTP Keep Alive's 你能提升客户端50%的性能。因此,改变这些设置之前你得小心一点,你将为了缓解一点点的Dos攻击而牺牲掉性能。

KeepAlive's默认设置为on,你应该别动它。

但你可以考虑去改变MaxKeepAliveRequests的值,它的默认值为100,和改变KeepAliveTimeout的值,默认值为15。通过分析你的日志来指定一个合理的值。


二十、Run Apache in a Chroot environment
chroot 允许你在一个隔离的jail子系统中运行一个程序。这避免了让它影响这台服务器上的其他服务。
上面提到的mod_security模块内置了chroot的支持。
很简单,在你的配置文件中添加一条mod_security指令。(前提是你得安装mod_security)

SecChrootDir /chroot/apache


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:lsdouli 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译