Menu Close

6.5.2. 保护 Nginx 服务器配置

Nginx 是一个高性能 HTTP 和代理服务器。您可以使用以下配置选项强化 Nginx 配置。

流程

  • 要禁用版本字符串,修改 server_tokens 配置选项:

    server_tokens off;

    这个选项将停止显示其他详细信息,如服务器版本号。此配置仅显示 Nginx 提供的所有请求中的服务器名称,例如:

    $ curl -sI http://localhost | grep Server
    Server: nginx
  • 添加额外的安全标头,以缓解特定 /etc/nginx/ conf 文件中的某些已知 Web 应用程序漏洞:

    • 例如,X-Frame-Options 标头选项拒绝您的域之外的任何页面来帧由 Nginx 提供的任何内容,缓解了攻击:

      add_header X-Frame-Options "SAMEORIGIN";
    • 例如,x-content-type 标头在某些较旧的浏览器中可以防止 MIME-type sniffing:

      add_header X-Content-Type-Options nosniff;
    • 例如,X-XSS-Protection 标头启用跨站点脚本过滤(XSS)过滤,这可防止浏览器渲染由 Nginx 中包含的潜在的恶意内容:

      add_header X-XSS-Protection "1; mode=block";
  • 您可以限制公开的服务,并限制它们对访问者执行的操作,例如:

    limit_except GET {
        allow 192.168.1.0/32;
        deny  all;
    }

    该片段将限制对除 GETHEAD 外的所有方法的访问。

  • 您可以禁用 HTTP 方法,例如:

    # Allow GET, PUT, POST; return "405 Method Not Allowed" for all others.
    if ( $request_method !~ ^(GET|PUT|POST)$ ) {
        return 405;
    }
  • 您可以配置 SSL 来保护 Nginx web 服务器提供的数据,请考虑仅通过 HTTPS 提供它。另外,您可以使用 Mozilla SSL 配置生成器生成在 Nginx 服务器中启用 SSL 的安全配置配置文件。生成的配置确保了,所有已知存在安全漏洞的协议(例如, SSLv2 和 SSLv3),加密程序和哈希算法(例如 3DES 和 MD5) 都已禁用。您还可以使用 SSL 服务器测试来验证您的配置是否满足现代安全要求。