目标目录启用了自动目录列表功能。
1.当用户访问的网址是某个目录地址的时候,服务器自动显示该目录所包含的文件列表内容。
2. 当用户请求的URL地址是某个目录地址的时候,如果该目录开启了自动列表功能并且WEB服务器默认的页面文件(如index.html/home.html/default.htm/default.asp/default.aspx/index.php
等)也不存在,那么该目录所包含的文件就会被自动的以列表的形式显示出来,这样可能就会导致敏感文件被泄露。
1.任何人都可以浏览该目录下的所有文件列表。
2. 如果该目录不存在默认的主页面文件,并且该目录包含了敏感的文件内容(如应用程序源码文件或其它的重要文件内容),那么将导致敏感文件内容外泄,从而对企业造成直接的经济损失或为恶意攻击者提供进一步攻击的有效信息。
1、如果必须开启该目录的目录列表功能,则应对该目录下的文件进行详细检查,确保不包含敏感文件。
2、如非必要,请重新配置WEB服务器,禁止该目录的自动目录列表功能。
方法一,修改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 [email protected]
-
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>
方法三,修改目录配置:
-
<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 就不会显示该目录的列表了。
使用_.htaccess_文件禁用_Web_目录列举
如果你 Apache 服务目录 (/var/www/tecmint
或 /var/www/html/tecmint
) 下创建一个名为tecmint
的目录,并且忘记在该目录放置 index.html
,你会惊奇的发现所有访问者都可以在浏览器输入 http://www.example.com/tecmint 来完整列举所有在该目录中的重要文件和文件夹。
本文将为你展示如何使用 .htaccess
文件禁用或阻止 Apache 服务器目录列举
首先,.htaccess
(hypertext access) 是一个文件,它可以让站点管理员控制服务器的环境变量以及其他的重要选项,用以增强他/她的站点功能。
欲知更多关于该重要文件的信息,请阅读以下文章,以便通过 .htaccess
的方法来确保 Apache Web 服务器的安全。
使用这一简单方法,在站点目录树中的任意/每个目录创建 .htaccess
文件,以便为站点根目录、子目录和其中的文件提供保护支持。
首先要 Apache 主配置文件中为你的站点启用 .htaccess
文件支持。
$ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu 系统
$ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS 系统
然后寻找以下部分,其中 AllowOverride
指令必须设置为 AllowOverride All
。
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
如果已存在 .htaccess
文件,先备份(如下),假设文件在 /var/www/html/tecmint/
(并要禁用该目录列举):
$ sudo cp /var/www/html/tecmint/.htaccess /var/www/html/tecmint/.htaccess.orig
然后你就可以在某个特定的目录使用你喜欢的编辑器打开 (或创建) 它,以便修改。并添加以下内容来关闭目录列举。
Options -Indexes
下一步就是重启 Apache Web 服务器:
-------- 使用 SystemD 的系统 --------
$ sudo systemctl restart apache2
$ sudo systemctl restart httpd
-------- 使用 SysVInit 的系统 --------
$ sudo /etc/init.d/apache2 restart
$ sudo /etc/init.d/httpd restart