首页主机资讯Ubuntu Apache访问控制策略

Ubuntu Apache访问控制策略

时间2025-11-27 18:27:04发布访客分类主机资讯浏览1335
导读:Ubuntu 上 Apache 的访问控制策略 一 核心机制与模块 基于主机的访问控制:使用 mod_authz_host 的 Require ip/host 等指令进行白名单/黑名单控制,可精确到 IPv6 与 CIDR 网段。 基于身...

Ubuntu 上 Apache 的访问控制策略

一 核心机制与模块

  • 基于主机的访问控制:使用 mod_authz_hostRequire ip/host 等指令进行白名单/黑名单控制,可精确到 IPv6CIDR 网段。
  • 基于身份的访问控制:使用 mod_auth_basic + mod_authn_file 实现 HTTP 基本认证,配合 htpasswd 管理账号。
  • 基于表达式与环境的控制:使用 mod_authz_coreRequire 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
Ubuntu Apache更新与维护最佳实践 Ubuntu Apache与PHP集成方法

游客 回复需填写必要信息