Apache服务器配置文件或目录禁止访问

RedstoneCMX

Apache服务器配置文件或目录禁止访问

在PHP网站开发中,为了让网站目录文件和程序代码的安全考虑,我们必须对某些目录或者文件的访问权限进行控制,来提高网站的安全,那么我们怎样来实现这种功能呢?因此很多时候我们需要禁止服务器上某个目录或文件被访问,主要是对Apache的配置文件进行操作,有两种方法。

1.修改http.conf文件


(1).打开apache配置文件httpd.conf

(2).找到

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Directory />
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory></pre>

只需要修改****Options Indexes****为****Options None即可,:根据PHP运行环境安装包的不同,Options Indexes也有可能是Options Indexes FollowSymLinks,一并改为Options None即可。

(3).保存httpd.conf,并重启Apache即可,此时再访问http://localhost时, 报apache http 403 禁止访问错误信息

Forbidden

You don’t have permission to access / on this server.

Indexes 的作用就是当该目录下没有 index.html 或index.php文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。

Apache****单个或多个目录禁止访问方法

这种方法通常用来禁止访问者访问后台管理目录或者程序目录,方法如下

(1).打开apache配置文件httpd.conf

(2).创建Directory块,比如禁止访问某个类库目录,可以这样实现

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Directory /var/wwww/inc>
Order Deny,Allow
Deny from all
</Directory></pre>

上述代码实现了禁止所有用户访问/var/www/inc目录的功能。如要实现禁止访问所有目录中inc目录的功能,只要将

更改为

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Directory /var/www/*/inc></pre>

(3).重启Apache服务器。即可。

其他说明

(1).只允许或禁止某个域名进行目录访问

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Directory /var/www/inc>
Order Deny,Allow
Deny from abc.com
Allow from apache.org
</Directory></pre>

(2).只允许或禁止某个IP进行目录访问上述代码实现禁止abc.com域中主机访问inc目录,允许apache.org域中主机访问inc目录的功能。

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Directory /var/www/inc>
Order Deny,Allow
Deny from 10.1.1.2
Allow from 192.168.1.0/255.255.255.0
</Directory></pre>

注意:Allow from 192.168.1.0/255.255.255.0等同于Allow from 192.168.1或Allow from 192.168.1.0/24上述代码实现禁止IP10.1.1.2访问inc目录,允许IP192.168.1子网中的主机访问inc目录的功能。

2.添加.htaccess文件


上面那种方法在我的Mac下好像实现起来有问题,修改了httpd.conf文件之后重启Apache,无法访问任何本地网站链接了,应该还是修改有问题,还没摸索出来。之后便使用了另外一个方法,其实我感觉这个方法更方便。如果只是想禁止某一个目录或某个目录下的文件,只需要在该目录下新建一个.htaccess文件,然后输入一些配置信息即可。

先说明一下什么是.htaccess文件,.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。.htaccess的用途范围主要针对当前目录。

这里我们就关注使用.htaccess文件来限制访问某个目录或该目录下的文件。

(1).在进行.htaccess文件配置之前,需要先确定httpd.conf文件是否配置了允许.htaccess文件的作用。因为要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。

从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">< Directory />
AllowOverride None
< /Directory></pre>

在我本机Mac电脑上,由于使用1中的方法新增<Directory></Directory>导致错误,不知什么原因,应该是我还没搞明白。因此我就修改了其原有的一个<Directory></Directory>,如下图所示,将AllowOverride none 改为了 AllowOverride All,出于安全性考虑最好是想在哪个目录下添加.htaccess文件就增加一个<Directory></Directory>,并配置目录路径,添加AllowOverride All。(这个还需后续摸索成功)在 AllowOverride 设置为 None 时,.htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。

还需要注明的是,在购买的阿里虚拟主机上,好像不必对httpd.conf进行配置,.htaccess文件即可生效?

(2).对httpd.conf配置完之后,便可以在需要设置访问权限的目录下新建一个.htaccess文件,添加相关的配置代码即可。比如如果想禁止所在目录以及其目录下的所有文件访问。可进行如下配置:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">order allow,deny
deny from all</pre>

如果只是想禁止所在目录下的特定格式的文件可进行如下配置:

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"><Files ~ ".(pdf|psd|zip|rar)$">
Order allow,deny
Deny from all
</Files></pre>

输入Files后的波浪线表示启用“正则表达式”,简单的写法有:<Files *>,表示禁止访问该目录下所有文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。