Ubuntu Apache访问控制策略
导读:Ubuntu 上 Apache 的访问控制策略 一 核心机制与模块 基于主机的访问控制:使用 mod_authz_host 的 Require ip/host 等指令进行白名单/黑名单控制,可精确到 IPv6 与 CIDR 网段。 基于身...
Ubuntu 上 Apache 的访问控制策略
一 核心机制与模块
- 基于主机的访问控制:使用 mod_authz_host 的 Require ip/host 等指令进行白名单/黑名单控制,可精确到 IPv6 与 CIDR 网段。
- 基于身份的访问控制:使用 mod_auth_basic + mod_authn_file 实现 HTTP 基本认证,配合 htpasswd 管理账号。
- 基于表达式与环境的控制:使用 mod_authz_core 的 Require expr 做时间/请求头等条件判断;用 SetEnvIf 标记请求,再用 Order/Allow/Deny 做环境匹配。
- 配置作用域:在 、、 等段落中应用,注意段落合并与匹配优先级。
- 兼容性提示:同时存在新旧两套语法,建议在新配置中优先使用 Require 系列指令;旧语法 Order/Allow/Deny 仍可用但需注意评估顺序与默认策略。
二 常用策略与示例
- 目录级默认放行/拒绝
< Directory "/var/www/html/public"> Require all granted < /Directory> < Directory "/var/www/html/restricted"> Require all denied < /Directory> - 基于 IP/CIDR 的访问控制
< Directory "/var/www/html/admin"> # 允许内网网段与本地 Require ip 192.168.1.0/24 127.0.0.1 # 也可拒绝某个网段 Require not ip 203.0.113.0/24 < /Directory> - 基本身份验证(先启用模块)
# 启用模块 sudo a2enmod auth_basic authn_file # 创建密码文件(首次加 -c,追加用户不要 -c) sudo htpasswd -c /etc/apache2/.htpasswd alice # 配置受保护目录 < Directory "/var/www/html/admin"> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user < /Directory> - IP + 账号双重校验(任一满足即通过)
< Directory "/var/www/html/admin"> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require ip 192.168.1.10 Require user alice < /Directory> - 按文件类型限制
< Files "secret.pdf"> Require ip 192.168.1.0/24 < /Files> - 基于时间的访问控制
< Directory "/var/www/html/office-hours"> Require expr "%{ TIME_HOUR} > = 9 & & %{ TIME_HOUR} < = 18" < /Directory> - 使用旧语法 Order/Allow/Deny 的等价写法(示例为仅允许内网)
< Directory "/var/www/html/legacy"> Order deny,allow Deny from all Allow from 192.168.1.0/24 Allow from 127.0.0.1 < /Directory>
以上示例覆盖了 IP/CIDR、基本认证、组合策略、按文件类型 与 时间条件 的常见场景。
三 组合策略与评估顺序
- 新语法(推荐):使用 Require 系列,配合 RequireAny/RequireAll 明确逻辑。例如“内网免密 + 外网需账号”:
< Directory "/var/www/html/admin"> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd < RequireAny> Require ip 192.168.1.0/24 127.0.0.1 Require valid-user < /RequireAny> < /Directory> - 旧语法(兼容):Order 决定默认策略与评估顺序,常见为 Order deny,allow(默认允许,先拒后允)与 Order allow,deny(默认拒绝,先允后拒)。务必注意“后评估者胜出”的规则,避免逻辑错误。
- 环境匹配:用 SetEnvIf 标记后配合 Allow/Deny 实现更灵活的策略(如屏蔽恶意 User-Agent)。
四 落地步骤与运维要点
- 启用必要模块
sudo a2enmod auth_basic authn_file authz_host authz_core - 选择配置位置:在 /etc/apache2/apache2.conf 的全局段,或在 /etc/apache2/sites-available/your-site.conf 的 内使用 精确控制。
- 语法检查与生效
sudo apache2ctl configtest sudo systemctl restart apache2 - 文件与目录权限:确保运行用户(常见为 www-data)对内容具备合适权限,例如目录 755、文件 644,并合理设置属主/属组。
sudo chown -R www-data:www-data /var/www/html sudo find /var/www/html -type f -exec chmod 644 { } \; sudo find /var/www/html -type d -exec chmod 755 { } \; - 安全建议:将 .htpasswd 等敏感文件放在 Web 不可写 目录,限制访问来源,必要时结合 TLS 避免凭据泄露。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Apache访问控制策略
本文地址: https://pptw.com/jishu/758129.html
