10点保证Apache Web服务器安全的建议(3)
时间:2012-03-26 15:43来源:未知 作者:ken 点击:
次
7、禁用其它选项
下面是一些Options指令的可用值。
- Options All –所有的选项被激活(除了MultiViews)。如果你不指定Options指令,这个是默认值。
- Options ExecCGI –执行CGI脚本(使用mod_cgi)。
- Options FollowSymLinks –如果在当前目录有符号链接,它将会被跟随。
- Options Includes –允许服务器端包含文件(使用mod_include)。
- Options IncludesNOEXEC –允许服务器端包含文件但不执行命令或cgi。
- Options Indexes –允许目录列表。
- Options MultiViews -允许内容协商多重视图(使用mod_negotiation)
- Options SymLinksIfOwnerMatch – 跟FollowSymLinks类似。但是要当符号连接和被连接的原始目录是同一所有者是才被允许。
绝不要指定“Options All”,通常指定上面的一个或多个的选项。你可以按下面代码把多个选项连接。
Options Includes FollowSymLinks
当你要嵌入多个Directory指令时,“+”和“-”是有用处的。也有可能会覆盖上面的Directory指令。
如下面,/site目录,允许Includes和Indexes。
- <Directory /site>
- Options Includes Indexes
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
对于/site/en目录,如果你需要继承/site目录的Indexes(不允许Includes),而且只在这个目录允许FollowSymLinks,如下:
- <Directory /site/en>
- Options -Includes +FollowSymLink
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
- /site目录允许IncludesIndexes
- /site/en目录允许Indexes和FollowSymLink
8、删除不需要的DSO模块
如果你加载了动态共享对象模块到apache,他们应该在httpd.conf文件在“LoadModule”指令下。
请注意静态编译的Apache模块是不在“LoadModule”指令里的。
在httpd.conf注释任何不需要的“LoadModules”指令。
- grep LoadModule /usr/local/apache2/conf/httpd.conf
9、限制访问特定网络(或IP地址)
如果你需要只允许特定IP地址或网络访问你的网站,按如下操作:
只允许特定网络访问你的网站,在Allow指令下给出网络地址。
- <Directory /site>
- Options None
- AllowOverride None
- Order deny,allow
- Deny from all
- Allow from 10.10.0.0/24
- </Directory>
只允许特定IP地址访问你的网站,在Allow指令下给出IP地址。
- <Directory /site>
- Options None
- AllowOverride None
- Order deny,allow
- Deny from all
- Allow from 10.10.1.21
- </Directory>
10、禁止显示或发送Apache版本号(设置ServerTokens)
默认地,服务器HTTP响应头会包含apache和php版本号。像下面的,这是有危害的,因为这会让黑客通过知道详细的版本号而发起已知该版本的漏洞攻击。
- Server: Apache/2.2.17 (Unix) PHP/5.3.5
为了阻止这个,需要在httpd.conf设置ServerTokens为Prod,这会在响应头中显示“Server:Apache”而不包含任何的版本信息。
- # vi httpd.conf
- ServerTokens Prod
下面是ServerTokens的一些可能的赋值:
- ServerTokens Prod 显示“Server: Apache”
- ServerTokens Major 显示 “Server: Apache/2″
- ServerTokens Minor 显示“Server: Apache/2.2″
- ServerTokens Min 显示“Server: Apache/2.2.17″
- ServerTokens OS 显示 “Server: Apache/2.2.17 (Unix)”
- ServerTokens Full 显示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″ (如果你这指定任何的值,这个是默认的返回信息)
除了上面10个apache的安全建议,你还必要确保你的UNIX/Linux操作系统的安全。如果你的操作系统不安全,那么只是确保apache的安全就没有任何意义了。通常的我们要保持apache版本的更新,最新的apahce版本会修复所有已知的安全问题。还有就是要确保时常查看apache日志文件。
(责任编辑:ken)