Apache禁止列出目录,限制目录文件访问

主要记录一些常用的apache限制访问配置,禁止列出目录禁止访问文件禁止某些ip访问

一、禁止列出目录

apache默认配置是目录下没有index文件就显示出目录详情的,但是很多时候这是很危险的事。

1、修改Apache配置文件[httpd.conf]

(1)配置目录

<Directory "/var/www">
#Options Indexes FollowSymLinks
Options FollowSymLinks
AllowOverride All
</Directory>

Options Indexes FollowSymLinks 改成 Options FollowSymLinks 即可以禁止 Apache 显示该目录结构。

Indexes 的作用就是当该目录下没有指定 index 文件时,就显示目录结构,去掉 Indexes ,Apache 就不会显示该目录的列表了。
(2)虚拟主机配置

<virtualhost *:80>
DocumentRoot /var/www/tenshi
ServerName tenshi.cc
<Directory /var/www/tenshi>
Options +Includes -Indexes
AllowOverride All
</Directory>
</virtualhost>

Indexes 前面加上 符号也是可以禁止 Apache 显示该目录结构。

Indexes 前,加 + 代表允许目录浏览;加 代表禁止目录浏览。

2、修改.htaccess文件

修改 .htaccess 文件,增加如下代码

<Files *>
Options -Indexes
</Files>

Indexes 前,加 + 代表允许目录浏览;加 代表禁止目录浏览。

推荐在apache全局中禁用目录浏览,然后在需要目录的虚拟主机或 .htaccess 文件内允许。

二、禁止访问目录、文件

1、增加Files选项来控制,比如要不允许访问 .txt 扩展名的文件:

<Files ~ ".txt$">
    Order allow,deny
    Deny from all
</Files>

2、禁止访问某些目录(可以用 <DirectoryMatch> 来进行正则匹配):

<Directory ~ "^/var/www/sites/(.+/)*[0-9]{3}">
    Order allow,deny
    Deny from all
</Directory>

3、通过文件匹配来进行禁止,比如禁止所有针对图片的访问:

<FilesMatch .(?i:gif|jpe?g|png)$>
    Order allow,deny
    Deny from all
</FilesMatch>

4、针对URL相对路径的禁止访问

<Location ~ "^/(data|conf)">
    Order allow,deny
    Deny from all
</Location>

5、针对代理方式禁止对某些目标的访问( 可以用来正则匹配)

<Proxy http://test.com/*>
    Order allow,deny
    Deny from all
</Proxy>

三、禁止ip访问

1、如果要控制禁止某些非法IP访问,在 Directory 选项控制:

<Directory "/var/www/">
    Order allow,deny
    Allow from all
    Deny from 10.0.0.1 #阻止一个IP
    Deny from 192.168.0.0/24 #阻止一个IP段
</Directory>

2、只允许某些ip访问

<Directory "/var/www/">
    Order deny,allow
    Deny from all
    All from example.com #允许某个域名
    All from 10.0.0.1 #允许一个iP
    All from 10.0.0.1 10.0.0.2 #允许多个iP
    Allow from 10.1.0.0/255.255.0.0 #允许一个IP段,掩码对
    All from 10.0.1 192.168 #允许一个IP段,后面不填写
    All from 192.168.0.0/24 #允许一个IP段,网络号
</Directory>

Copyright ©2016-2018 红世幻境 All Rights Reserved

浙ICP备15041976号-2 联系邮箱: shana@tenshi.cc

Top