Apache 访问控制

Apache访问控制php

  • 版本:Apche 2.3 前

经过设置访问控制,可对网站进行权限管理,提升安全性。html

 

参数介绍正则表达式

<Directory />: 行为对根目录的限制

Options:容许使用控制目录特征的指令.他们包括Options 和XBitHack
参数:
       一、All:准许如下除MultiViews之外全部功能
       二、MultiViews:容许多重内容被浏览,若是你的目录下有一个叫作foo.txt的文件,那么你能够经过/foo来访问到它,这对于一个多语言内容的站点比较有用
       三、Indexes:当用户访问该目录时,若是用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。 
       四、IncludesNOEXEC:准许SSI,但不可以使用#exec和#include功能
       五、Includes:准许SSI
       六、FollowSymLinks:在该目录中,服务器将跟踪符号连接。注意,即便服务器跟踪符号连接,它也不会改变用来匹配不一样区域的路径名,若是在<Local>;标记内设置,该选项会被忽略
       七、SymLinksIfOwnerMatch:在该目录中仅仅跟踪本站点内的连接
       八、ExecCGI:在该目录下准许使用CGI
       九、FollowSymLinks:在该目录下容许文件系统使用符号链接,默认为禁用。  
     十、SymLinksIfOwnerMatch:当使用符号链接时,只有当符号链接的文件拥有者与实际文件的拥有者相同时才能够访问。 

AllowOverride:AllowOverride参数就是指明Apache服务器是否去找.htacess文件做为配置文件,若是设置为none,那么服务器将忽略.htacess文件,若是设置为All,那么全部在.htaccess文件里有的指令都将被重写。对于AllowOverride,还能够对它指定以下一些能被重写的指令类型. 
参数:  
    一、None:当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(能够减少服务器开销)。 
    二、All:在.htaccess文件中可使用全部的指令。 
    三、AuthConfig:容许使用全部的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile  AuthGroupFile  AuthName AuthTypeAuthUserFile和Require

FileInfo:容许使用文件控制类型的指令。
参数:
    一、AddEncoding 
    二、AddLanguage  
    三、AddType  
    四、DEfaultType 
    五、ErrorDocument 
    六、LanguagePriority

Indexes:容许使用目录控制类型的指令。
参数:
   一、AddDescription  
   二、AddIcon  
   三、AddIconByEncoding 
   四、AddIconByType  
   五、DefaultIcon  
   六、DirectoryIndex  
   七、FancyIndexing  
   八、HeaderName  
   九、IndexIgnore  
 十、IndexOptions 
 十一、ReadmeName

Limit:容许使用权限控制指令。
参数:
   一、Allow Deny
   二、Order


Order:控制在访问时Allow和Deny两个访问规则哪一个优先: 
参数:
   一、Allow:容许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。 
   二、Deny:拒绝访问的主机列表。 

AuthName:在出现输入账号与密码的对话框中,出现的提示字符

Authtype:认证类型

AuthUserFile:保护目录所使用的账号密码的设置文件,能够随意设置此文件,注意,此文件不要放置在apache可浏览的目录内,以避免被窃取;

require: 网页访问限制
参数:
   一、valid-user:后面接可使用的账号,若只想设置一个账号认证用,则在require user 后面直接接用户名,此处的例子是适用于多个用户名;
   二、all granted:容许全部受权

<Directory />:结尾
Order 定义顺序
<Directory /usr/local/apache/install>:指定控制目录
Order deny,allow:先执行deny,后执行allow
deny from all:全不匹配
allow from 127.0.0.1:指定127匹配
</Directory>

1.deny与allow有前后顺序的。
2.后面的参数会覆盖掉前面的参数。
Order 解释
举例1:
Order allow,deny
deny from all
allow from 127.0.0.1
注:先allow,后deny 127不会被匹配,由于deny会覆盖allow。

举例2:
Order deny,alow
deny from all
注:所有不能通行。

举例3:
Order alow,deny
deny from all
注:所有不能通行。

举例4:
Order deny,all
注:所有均可以通行(默认)

举例5:
Order allow,deny
注:所有不能通行(默认)
Order 举例说明

 

访问控制配置express

以下配置均可在主配置文件、虚拟主机配置文件配置apache

  • 配置目录1:vim httpd-vhosts.conf
  • 配置目录2:vim httpd.conf

指定IP或IP段不能够访问网页、其余人能够访问vim

<Directory /usr/local/apache/install>
   Order allow,deny
   Allow from all
   Deny from 127.0.0.1
   Deny from 192.168.1.0/24
</Directory>
配置

指定IP或IP段能够访问网页、其余人不可访问
<Directory /usr/local/apache/install>
   Order deny,allow
   Allow from 127.0.0.1
   Allow from 192.168.1.0/24
   Deny from all
</Directory>
配置

指定IP或IP段能够访问指定网页URL包含存在字段文件,其余人都不可访问
# 指定admin文件类型
<filesmatch "(.*)admin(.*)">
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
   Allow from 192.168.1.0/24
</filesmatch>
配置

限制某个目录下的php类型文件没有执行权限
<Directory /usr/local/apache/>
   # 定义php不能解析
   php_admin_flag engine off
   <filesmatch "(.*)php">
         Order deny,allow
         Deny from all
         Allow from 127.0.0.1
   </filesmatch>
</Directory>
配置

其余禁止访问了解
1.禁止访问某些文件/目录
增长Files选项来控制,好比要不容许访问.inc扩展名的文件,保护php类库:
<Files ~ "\.insc$">

2.禁止访问某些指定目录:(能够用<DirectoryMatch>来进行正则匹配)
<Directory ~ "/var/www/(.+)*[0-9]{3}">
固然能够写目录全局路径
<Directory /var/www/111>

3.经过文件匹配来进行禁止,好比禁止全部针对图片的访问
<Filesmatch (.*)php>

4.针对URL相对路径的禁止访问
<Location /dir/>
说明案例

 

用户验证配置安全

注:用户登录验证,指定某一个网站须要用户登录才能够访问。服务器

1.修改虚拟主机配置文件网络

# 配置用户验证
<Directory /usr/local/html>
    Allowoverride AuthConfig
    AuthName "123"
    AuthType "Basic"
    AuthUserFile /usr/local/.htpasswd
    require valid-user
</Directory>
配置文件

 2.建立验证用户ide

# 建立用户 第二次添加用户不须要用-c参数
apache/bin/htpasswd -c /usr/local/.htpasswd xsk

参数:

-c 建立create

-m md5加密方法

3.从新加载配置文件

/usr/local/apache2/bin/apachectl graceful

 


 

Apache访问控制

  • 版本:apache 2.4+ 新增
  • Apache2.4中开始使用mod_authz_host这个新的模块来进行访问控制和其余的受权检查。
  • 原来在Apache2.2版本下用以实现网站访问控制的Order,Allow,Deny指令须要替换为新的Require访问控制指令。

使用格式:

<Directory ...>

    <RequireAll>
        xxx
    </RequireAll>
 
</Directory> 

经常使用参数:

# 容许全部
Require all granted 

# 拒绝全部
Require all denied 

# 容许匹配环境变量中任意一个
Require env env-var [env-var] ... 

# 容许特定的HTTP方法(GET/POST/HEAD/OPTIONS)
Require method http-method [http-method] ... 

# 容许,表达式为true
Require expr expression 

# 容许特定用户
Require user userid [ userid ] ... 

# 容许特定用户组
Require group group-name [group-name] ... 

# 容许,有效用户
Require valid-user # 

# 容许特定IP或IP段,多个IP或IP段间使用空格分隔
Require ip 192.100 192.168.100 192.168.100.5 
<Directory xxx>
 
    <RequireAll>
        Require all denied
    </RequireAll>
 
</Directory>
拒绝全部访问请求
<Directory xxx>
 
    <RequireAll>
        Require all granted
    </RequireAll>
 
</Directory> 
容许全部访问请求
<Directory xxx>
 
    <RequireAll>
        Require host xxx.com
    </RequireAll>
 
</Directory>
只容许指定域名主机访问请求,其余请求拒绝
<Directory xxx>
 
    <RequireAll>
        Require ip 172.18 192.168.1.1 192.168.1.2
    </RequireAll>
 
</Directory>
只容许指定IP网段或指定IP访问请求
<Directory xxx>
 
    <RequireAll>
        Require all granted
        Require not ip 192.168.1.1
        Require not ip 192.120 192.168.100
    </RequireAll>
 
</Directory>
容许全部访问请求,但拒绝指定IP或IP段的请求(组织恶意IP或爬虫网段访问)
说明:使用mod_setenvif经过正则表达式匹配来访请求的User-Agent,并设置内部环境变量BADBOT,最后拒绝BADBOT的访问请求。

<Directory xxx>
 
    SetEnvIfNoCase User-Agent ".*(FeedDemon|JikeSpider|AskTbFXTV|CrawlDaddy|Feedly|Swiftbot|ZmEu|oBot).*" BADBOT
    SetEnvIfNoCase User-Agent "brandwatch" BADBOT
    SetEnvIfNoCase User-Agent "rogerbot" BADBOT
    <RequireAll>
        Require all granted
        Require not env BADBOT
        Require not ip 192.168.100.1
    </RequireAll>
 
</Directory>
容许全部访问请求,但拒绝某些User-Agent的访问请求(经过User-Agent屏蔽垃圾网络爬虫)

 

相关文章
相关标签/搜索