Apache访问控制策略

Apache访问控制可以由几个不同的模块完成。其中最重要的是mod_authz_core和mod_authz_host。Apache使用Require指令进行授权来确保用户被允许或拒绝访问资源。其中mod_authz_host模块可以使用ip,host,forward-dns和local扩展授权类型。其他授权类型也可以使用,但可能需要加载额外的授权模块。这些授权提供程序会影响哪些主机可以访问服务器的某个区域。访问可以通过主机名,IP地址或IP地址范围进行控制。
一、基于主机的访问控制
由mod_authz_host实现的授权提供者是使用Require指令注册的。 
该指令作用域
    <Directory>
    <Files>
    <Location>部分
    .htaccess文件中

通常,访问限制指令适用于所有访问方法(GET,PUT,POST等)。 这在大多数情况下是需要的行为。
但是,通过将指令放在<Limit>部分中,可以限制某些方法,而使其他方法不受限制。
二、特定上下文环境常见的访问控制
Require all granted 
   允许所有

Require all denied 
   拒绝所有

Require env env-var [env-var] … 
   只有在给定的环境变量被设置的情况下才允许访问

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

Require expr expression 
   允许特定表达式为true时

Require user userid [userid] … 
   允许特定用户

Require group group-name [group-name] … 
   允许特定用户组

Require valid-user 
   允许有效的用户

Require ip 10 172.20 192.168.2 
   允许特定IP或IP段,多个IP或IP段间使用空格分隔

三、基于IP地址的访问控制

单个或多个IP 
   Require ip 10.1.2.3 
   Require ip 192.168.1.104 192.168.1.205

基于部分IP地址的访问控制 
   Require ip 10.1 
   Require ip 10 172.20 192.168.2

基于网络/子网掩码的访问控制 
   Require ip 10.1.0.0/255.255.0.0 
   Require ip 10.1.0.0/16

基于IPv6的访问控制 
   Require ip 2001:db8::a00:20ff:fea7:ccea 
   Require ip 2001:db8:1:1::a      #Author : Leshami 
   Require ip 2001:db8:2:1::/64   #Blog   :http://blog.csdn.net/leshami 
   Require ip 2001:db8:3::/48

基于主机名的访问控制 
   Require host example.org 
   Require host .net example.edu

基于forward-dns方式的访问控制 
   forward-dns允许根据简单的主机名来访问服务器。 当指定require forward-dns host-name时,所有与主机名对应的IP地址都被允许访问。该方法不依赖于反向DNS查询:它仅查询DNS的主机名,并允许客户端的IP匹配。 因此,它只适用于主机名,而不是域名。 但是,由于不使用反向DNS,它将与使用动态DNS服务的客户端协同工作。

  Require forward-dns bla.example.org 
   能够被bla.example.org解析的IP地址将被允许访问

仅允许本机访问 
   Require local
四、混合配置
黑名单方法
<RequireAll>
    Require all granted
    Require not ip 10.252.46.165
</RequireAll>

Require not ip 192.168.205
Require not host phishers.example.com moreidiots.example
Require not host gov

白名单方法
Require ip 192.168.1.104 192.168.1.205

基于变量和表达式的访问控制方法
<If "%{HTTP_USER_AGENT} == 'BadBot'">
    Require all denied
</If>

Require expr %{HTTP_USER_AGENT} != 'BadBot'
五、配置案例

案例一:允许所有主机访问

< Directory “/var/www/html/”>

AllowOverride None

Require all granted

</Directory>

AllowOverride ALL   #允许子目录中的.htaccess中的设置覆盖当前位置

AllowOverride None  #不允许子目录中的.htaccess中的设置覆盖当前设置

案例二:允许网段或固定IP访问

< Directory “/var/www/html/”>

AllowOverride None

Require ip 202.106.0.0/24

Require ip 114.248.160.203

案例三:只拒绝某些主机访问

< Directory “/var/www/html/”>

AllowOverride None

<RequireAll>

Require not ip 202.106.0.0/24

Require ip 114.248.160.203

案例四:针对文件的访问控制

需求:不允许在/var/www/html/目录中执行.php文件

< Directory /var/www/html>

AllowOverride None

Require all granted

<Files ~ ”\.php$”>

Order allow,deny

Deny from all

</Files>

</Directory>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值