Apache httpd 2.4 访问控制

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
访问控制,不限时长
云解析 DNS,旗舰版 1个月
简介: Apache访问控制可以由几个不同的模块完成。其中最重要的是mod_authz_core和mod_authz_host。

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'

五、配置示例

环境
[root@centos7-router ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:  Nov 19 2015 21:43:13

配置允许所有客户端访问
注释原有的DocumentRoot,并添加下列内容到httpd.conf
[root@centos7-router ~]# tail -8 /etc/httpd/conf/httpd.conf 
DocumentRoot "/u01/web"
<Directory "/u01/web">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

# echo "This is a access privileges test page.">>/u01/web/index.html
[root@centos7-router ~]# systemctl reload httpd
[root@centos7-router ~]# curl http://localhost:90
This is a access privileges test page.

配置拒绝所有客户端访问
Require all granted 成 Require all denied并reload httpd
# curl http://localhost:90
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
</body></html>

配置允许192.168.1.0网段访问,注意,此处使用RequireAll容器
DocumentRoot "/u01/web"

<Directory "/u01/web">
    Options Indexes FollowSymLinks
    AllowOverride None
    <RequireAll>
        Require ip 192.168.1
    </RequireAll>
</Directory>

从1.253服务器上进行访问
[robin@ydq4 ~]$ ip addr |grep inet|grep global
    inet 192.168.1.253/24 brd 192.168.1.255 scope global eth0
[robin@ydq4 ~]$ curl http://192.168.1.175:90
This is a access privileges test page.

五、更多参考

https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html

DBA牛鹏社(SQL/NOSQL/LINUX)

这里写图片描述

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
7月前
|
Linux 网络安全 Apache
Centos下操作Apache httpd
Centos下操作Apache httpd
133 0
|
人工智能 网络协议 安全
Apache(httpd)的简介、安装以及如何使用(上)
Apache(httpd)的简介、安装以及如何使用(上)
687 0
Apache(httpd)的简介、安装以及如何使用(上)
|
2月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
234 1
|
2月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
52 1
|
6月前
|
存储 Apache 文件存储
在Apache环境下为Web网站增设访问控制:实战指南
在Apache服务器上保护网站资源涉及启用访问控制模块(`mod_authz_core`和`mod_auth_basic`),在`.htaccess`或`httpd.conf`中设定权限,如限制对特定目录的访问。创建`.htpasswd`文件存储用户名和密码,并使用`htpasswd`工具管理用户。完成配置后重启Apache服务,访问受限目录时需提供有效的用户名和密码。对于高安全性需求,可考虑更复杂的认证方法。【6月更文挑战第20天】
359 4
|
7月前
|
Web App开发 存储 Linux
Linux Apache服务详解——Apache服务访问控制
Linux Apache服务详解——Apache服务访问控制
446 7
|
7月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
96 0
|
缓存 网络协议 PHP
httpd和apache
httpd和apache
75 0
|
安全 Apache PHP
Apache配置----访问控制,禁止解析php
Apache配置----访问控制,禁止解析php
147 0
|
安全 Apache
CVE-2021-42013 Apache HTTPd 2.4.49 2.4.50 路径穿越以及RCE漏洞
影响版本 Apache 2.4.49 Apache 2.4.50 当前描述 发现Apache HTTP Server 2.4.50中对CVE-221-41773的修复不足。攻击者可以使用路径遍历攻击将URL映射到Alias类指令配置的目录之外的文件。如果这些目录之外的文件不受通常默认配置“要求全部拒绝”的保护,这些请求可能会成功。如果还为这些别名路径启用了CGI脚本,这可能允许远程代码执行。此问题仅影响Apache 2.4.49和Apache 2.4.50,而不影响早期版本。 环境搭建可以查看我的上一篇文章 https://developer.aliyun.com/article/11136
379 0
CVE-2021-42013 Apache HTTPd 2.4.49 2.4.50 路径穿越以及RCE漏洞

推荐镜像

更多