用360网站安全卫士检测出一堆问题,其中一个就是要关闭自动目录列表,
找了一会,终于成功了.特记录一下.
描述:
目标目录启用了自动目录列表功能。
1.当用户访问的网址是某个目录地址的时候,服务器自动显示该目录所包含的文件列表内容。
2. 当用户请求的URL地址是某个目录地址的时候,如果该目录开启了自动列表功能并且WEB服务器默认的页面文件(如index.html/home.html/default.htm/default.asp/default.aspx/index.php
等)也不存在,那么该目录所包含的文件就会被自动的以列表的形式显示出来,这样可能就会导致敏感文件被泄露。
危害:
1.任何人都可以浏览该目录下的所有文件列表。
2. 如果该目录不存在默认的主页面文件,并且该目录包含了敏感的文件内容(如应用程序源码文件或其它的重要文件内容),那么将导致敏感文件内容外泄,从而对企业造成直接的经济损失或为恶意攻击者提供进一步攻击的有效信息。
解决方案:
1、如果必须开启该目录的目录列表功能,则应对该目录下的文件进行详细检查,确保不包含敏感文件。
2、如非必要,请重新配置WEB服务器,禁止该目录的自动目录列表功能。
Apache禁止列目录:
方法一,修改httpd.conf配置文件,查找 Options Indexes FollowSymLinks
,修改为 Options -Indexes
;
或者
搜索“Options Indexes FollowSymLinks
”,修改为“Options -Indexes FollowSymLinks
”即可。
在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。备注:在Indexes前,加 + 代表允许目录浏览;加 – 代表禁止目录浏览。这样的话就属于整个Apache禁止目录浏览了。
如果是配置虚拟机,则如下:
<VirtualHost *>
<Directory "../vhosts/blog.phpha.com">
Options -Indexes FollowSymLinks # 修改为 -Indexes 即可
</Directory>
ServerAdmin mail@jb51.com
DocumentRoot "../vhosts/blog.phpha.com"
ServerName shopex:80
ServerAlias blog.phpha.com
ErrorLog logs/blog.phpha.com-error_log
</VirtualHost>
方法二,在www 目录下的修改.htaccess
配置文件,加入 Options -Indexes
。 (推荐)
<Files *>
Options -Indexes
</Files>
目录中没有.htaccess
配置文件怎么办?自己创建一个呗
.htaccess主要是定义一些规则,用来把php转成html伪静态的一些规则。这个文件只有后缀没有文件名。创建方式是:
——先创建一个txt文件,打开。
——另存为。存储格式选择所有文件类型,然后在文件名处输入.htaccess即可。
方法三,修改目录配置:
<Directory "D:/Apache/www.511yj.com">
Options Indexes FollowSymLinks # 修改为: Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
只需要将上面代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes ,Apache 就不会显示该目录的列表了。
总结
1、强烈推荐方法二
2、记得一定重启Apache