前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享Apache环境禁止目录浏览的方法

分享Apache环境禁止目录浏览的方法

原创
作者头像
IDC科技
修改2020-08-18 14:58:55
3.2K0
修改2020-08-18 14:58:55
举报
文章被收录于专栏:IDC杂谈IDC杂谈

在Apache环境中,文件目录列表默认是允许的,也就是说,如果没有默认索引文件,如index.php或index.html,那么访问域名时则会显示目录的内容。在网站上线之后,不建议启用目录浏览,因为它可能导致网站信息泄漏,并帮助攻击者确定网站或Web应用程序是如何构造的,并增加攻击面。本文简单说说在Ubuntu20.04系统中测试和禁用Apache目录浏览。

实验环境

Ubuntu20.04系统、LAMP环境,网站www.appjzw.com,sudo用户权限。

创建测试目录

使用SSH登陆远程服务器,然后在根目录下创建一个的测试目录,命令如下:

代码语言:javascript
复制
$ sudo mkdir /var/www/html/test

在test目录下创建两个子目录。

代码语言:javascript
复制
$ sudo mkdir /var/www/html/test/sub-directory_1
$ sudo mkdir /var/www/html/test/sub-directory_2

将两个文件添加到test目录。

代码语言:javascript
复制
$ sudo touch /var/www/html/test/file1.txt
$ sudo touch /var/www/html/test/file2.txt

打开网页浏览器并访问下面的URL。请将appjzw.com替换成你自己的域名或服务器IP地址

代码语言:javascript
复制
http://www.appjzw.com/test

如果启用了Apache目录列表,您应该会看到您创建的所有文件和子目录的列表。

在Apache配置中禁用

打开/etc/apache2/apache2.conf配置文件

代码语言:javascript
复制
$ sudo nano /etc/apache2/apache2.conf

找到下面的内容。

代码语言:javascript
复制
...
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
...

将下面的行:

代码语言:javascript
复制
Options Indexes FollowSymLinks

更改为:

代码语言:javascript
复制
Options -Indexes +FollowSymLinks

替换完成之后,应该是这样的。

代码语言:javascript
复制
...
<Directory /var/www/>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
...

默认情况下,Indexes选项中未检测到默认索引文件时,Apache将会显示文件和目录列表。而在/var/www目录的前缀Indexes中使用连字符的选项,表示将禁止显示文件和目录列表。

保存并关闭文件。然后,重新启动Apache Web服务器。

代码语言:javascript
复制
$ sudo systemctl restart apache2

尝试访问测试目录的URL。请将appjzw.com替换成你自己的域名或服务器IP地址

代码语言:javascript
复制
http://www.appjzw.com/test

这一次访问时将会显示禁止载入,也就不会将网站的文件和目录呈现出来。

虚拟主机禁用方法设置

如果你有多个网站托管在同一个Apache Web服务器上,则可以通过单独编辑每个网站的虚拟主机配置文件来禁用目录列表。

通过运行下面的命令,列出Apache Web服务器上可用的站点。

代码语言:javascript
复制
$ sudo ls -lsa /etc/apache2/sites-available

下面的输出可能是不同的,这取决于在服务器上托管的网站。

代码语言:javascript
复制
4 drwxr-xr-x 2 root root 4096 Jul 15 12:19 .
4 drwxr-xr-x 8 root root 4096 Jul 16 11:33 ..
4 -rw-r--r-- 1 root root 1332 Apr 13 20:19 000-default.conf
8 -rw-r--r-- 1 root root 6338 Apr 13 20:19 default-ssl.conf

获取要编辑的网站的配置文件名(例如000-default.conf打开文件。

代码语言:javascript
复制
$ sudo nano /etc/apache2/sites-available/000-default.conf

这时候文件的内容将在某种程度上类似于下面所示的内容。

代码语言:javascript
复制
<VirtualHost *:80>
...
        #ServerName www.appjzw.com  ##这个替换你自己的网站

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

...
</VirtualHost>

通过添加<Directory /var/www/>...</Directory>备选方案如下:

代码语言:javascript
复制
<VirtualHost *:80>
...
        #ServerName www.appjzw.com ##这个替换你自己的网站

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
...
    <Directory /var/www/>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

保存并关闭文件。然后,重新启动Apache Web服务器。

代码语言:javascript
复制
$ sudo systemctl restart apache2

这样经成功地禁用了在该站点上的直接浏览。如果要禁用其他网站的目录列表,可以重复此

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
  • 创建测试目录
  • 在Apache配置中禁用
  • 虚拟主机禁用方法设置
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档