8、站点访问控制常见机制
可基于两种机制指明对哪些资源进行何种访问控制
访问控制机制有两种:客户端来源地址,用户账号
文件系统路径:
<Directory “/path">...</Directory> 目录
<File “/path/file”> ...</File> 文件
<FileMatch "PATTERN">...</FileMatch> 文件表达式
URL路径:
<Location "">...</Location>
<LocationMatch "">...</LocationMatch>
示例:
<FilesMatch "\.(gif|jpe?g|png)$">
<Files “?at.*”> 通配符
<Location /status> <LocationMatch "/(extra|special)/data">
参数说明:1.Options 2.AllowOverride 3.Require
(1) Options:后跟1个或多个以空白字符分隔的选项列表
在选项前的+,- 表示增加或删除指定选项
常见选项:
Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户,默认不显示符号链接。
FollowSymLinks:允许访问符号链接文件所指向的源文件,(DocumentRoot里可能有软连接路径。)
None:全部禁用
All: 全部允许
示例:
<Directory /var/www/html/>
Require all granted
Options Indexes FollowSymLinks
</Directory>
(2) AllowOverride
与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令
cat /var/www/html/.htaccess
Options Indexes FollowSymLinks
在配置文件中对启用.htaccess设置授权。
1.只对<directory>语句有效 2.针对不同的文件夹设置不同的功能。
AllowOverride All #.htaccess中所有指令都有效
AllowOverride None #.htaccess 文件无效,服务器不会读取.htaccess文件
AllowOverride AuthConfig #.htaccess 文件中,除了AuthConfig 其它指令都无法生效
<Directory /var/www/html/>
Require all granted
#Options Indexes FollowSymLinks #这项已在.htaccess设置了。
AllowOverride All
</Directory>
<Files "*.conf">
Require all denied
</Files>
(3) 基于IP的访问控制:
无明确授权的目录,默认拒绝
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
控制特定的IP访问:
Require ip IPADDR/mask:授权指定来源的IP访问
Require not ip IPADDR:拒绝特定的IP访问
控制特定的主机访问:
Require host HOSTNAME:授权特定主机访问
Require not host HOSTNAME:拒绝
HOSTNAME:
FQDN:特定主机
domin.tld:指定域名下的所有主机
#禁止访问配置文件
<Files "*.conf">
Require all denied
</Files>
#不能有失败,至少有一个成功匹配才成功,即失败优先
<directory /data/www/>
<RequireAll>
Require all granted
Require not ip 172.16.1.1 拒绝特定IP
</RequireAll>
</directory>
#多个语句有一个成功,则成功,即成功优先
<directory /data/www/>
<RequireAny>
Require all denied
require ip 172.16.1.1 允许特定IP
</RequireAny>
</directory>
远程客户端和用户验证的控制(用户验证的控制有基于IP/用户的访问控制的两种)
Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any 客户机IP和用户验证,有一个满足即可
示例:
Require valid-user
<RequireAll>
Require all granted
Require not ip 172.16.1.1
</RequireAll>
Satisfy Any