温馨提示×

Nginx在Debian上的访问控制策略有哪些

小樊
37
2025-12-06 01:13:24
栏目: 智能运维

Nginx 在 Debian 上的访问控制策略

一 网络层与主机层控制

  • 使用 UFW 限制访问端口与来源:例如仅允许来自 192.168.1.1 的访问到 80 端口,其余默认拒绝;命令示例:sudo ufw allow from 192.168.1.1 to any port 80sudo ufw default deny incomingsudo ufw enable。也可直接限制端口:sudo ufw deny 80(注意避免把自己锁在外面)。
  • 使用 iptables 做更细粒度策略(如按来源网段、接口、连接状态等)。

二 应用层控制

  • 基于 IP 白名单/黑名单:在 server 或 location 中使用 allow/deny。示例:
    location /admin {
        allow 192.168.1.0/24;
        deny all;
    }
    
  • 基于 HTTP 基本认证:使用 auth_basicauth_basic_user_file。步骤:安装工具 sudo apt-get install apache2-utils;创建密码文件 sudo htpasswd -c /etc/nginx/.htpasswd username;在配置中启用:
    location / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
    
  • 基于 请求头 的条件放行:例如仅当请求头 X-Custom-Header 为指定值时放行:
    location / {
        if ($http_x_custom_header = "allowed_value") { allow all; }
        deny all;
    }
    
  • 基于 外部认证服务 的访问控制:使用 ngx_http_auth_request_moduleauth_request。示例:
    location / {
        auth_request /auth;
    }
    location = /auth {
        internal;
        proxy_pass http://auth-service/validate;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }
    
    提示:部分发行版需要安装包含该模块的包(如 nginx-extras)或通过源码编译启用。

三 TLS 客户端证书认证

  • 443 ssl 的 server 块中配置 CA 证书 并开启 客户端证书校验,仅对持有受信任证书的用户放行:
    server {
        listen 443 ssl;
        server_name yourdomain.com;
    
        ssl_certificate     /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        include            /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam         /etc/letsencrypt/ssl-dhparams.pem;
    
        ssl_client_certificate /etc/ssl/certs/ca-certificates.crt;
        ssl_verify_client      on;
    
        location / {
            root /var/www/html;
            index index.html;
        }
    }
    
    说明:将 /etc/ssl/certs/ca-certificates.crt 替换为你的 CA 证书 路径。

四 速率与并发限制

  • 使用 limit_conn_zonelimit_conn 限制单 IP 的并发连接数,缓解 DoS/CC 风险。示例:
    http {
        limit_conn_zone $binary_remote_addr zone=addr:10m;
    
        server {
            location / {
                limit_conn addr 100;   # 每个IP最多100个并发连接
                # 可按需增加 limit_req 限制请求速率
            }
        }
    }
    
    提示:结合业务场景设置合理阈值,避免影响正常用户。

五 部署与运维要点

  • 配置变更后执行语法检查与平滑重载:sudo nginx -t && sudo systemctl reload nginx
  • 管理凭据与权限:将 /etc/nginx/.htpasswd 设置为仅 root 可读(如 600),避免泄露。
  • 分层防护:对管理后台等敏感路径叠加 IP 白名单 + 基本认证;对外服务优先 TLS,必要时启用 客户端证书
  • 默认拒绝策略:在边界防火墙与 Nginx 配置中均采用 默认拒绝,仅对明确允许的源/用户放行。

0