alivx.ansible_cis_nginx_hardening

Ansible CIS Nginx 强化 Build Status (仍在测试阶段)

基于 CIS NGINX 基准 v1.0.0 - 2019年2月28日

Nginx 无疑是最广泛使用的免费开源网页服务器之一,适用于承载高流量网站。它因其稳定性、卓越性能、低资源消耗和简洁配置而闻名。 默认配置并不安全,需要额外的调整来增强网页服务器的安全性,以防止攻击和泄露,因此这个角色为在 Ubuntu 上运行的 NGINX 建立了安全配置基准。

评分信息

  • 评分状态指示符合给定建议是否影响评估目标的基准得分。该基准使用以下评分状态:

已评分(在此角色中实现)

  • 不符合“已评分”建议将降低最终基准得分。符合“已评分”建议将提高最终基准得分。

未评分(在此角色中未实现)

  • 不符合“未评分”建议不会降低最终基准得分。符合“未评分”建议不会提高最终基准得分。

使用您的供应商提供的 NGINX 包的主要优点:

  • 安装简便
  • 依赖关系解决
  • 提高维护和安全补丁的有效性
  • 由您的供应商进行的问答程序

要求

由于此角色将从操作系统库安装最新的 Nginx 包,请确保在新的 Nginx 服务器上运行此角色,这将处理安装过程。

如果您已经在服务器上安装了 Nginx,它可能仍然有效。


角色变量

配置如下

large_client_header_buffers: "2 1k"
client_max_body_size: "100K"
client_body_timeout: 10
client_header_timeout: 10
strict_transport_security_max_age: 15768000 # max-age 指令设置为 15768000 秒(六个月)或更长
nginx_site_config_dir: /etc/nginx/sites-available/
# 或 ALL:!EXP:!NULL:!ADH:!LOW:!SSLv2:!SSLv3:!MD5:!RC4;
ssl_ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

nginx_key: /etc/ssl/private/nginx-selfsigned.key
nginx_cert: /etc/ssl/certs/nginx-selfsigned.crt

backendserver: http://localhost:3000
backendserver_ssl: True

access_log: /var/log/nginx/alivx.com.access.log
error_log: /var/log/nginx/alivx.com.error.log warn

domainName: 172.16.186.129

依赖关系


示例剧本

包括一个如何使用您的角色的示例(例如,以变量作为参数传入)对用户来说也是很好的:

---
- hosts: host1
  become: yes
  remote_user: root
  gather_facts: no
  roles:
    - { role: "ansible-cis-nginx-hardening" }

基准

  • 1 初始设置
  • 1.1 安装
  • 1.1.1 确保已安装 NGINX(已评分)
  • 1.2 配置软件更新
  • 2 基本配置
  • 2.1 最小化 NGINX 模块
  • 2.1.2 确保未安装 HTTP WebDAV 模块(已评分)
  • 2.1.3 确保已禁用具有 gzip 功能的模块(已评分)
  • 2.1.4 确保已禁用 autoindex 模块(已评分)
  • 2.2 帐户安全
  • 2.2.2 确保 NGINX 服务帐户已锁定(已评分)
  • 2.2.3 确保 NGINX 服务帐户具有无效 shell(已评分)
  • 2.3 权限和所有权
  • 2.3.1 确保 NGINX 目录和文件归根用户所有(已评分)
  • 2.3.2 确保对 NGINX 目录和文件的访问受到限制(已评分)
  • 2.3.3 确保 NGINX 进程 ID(PID)文件已安全(已评分)
  • 2.4 网络配置
  • 2.4.1 确保 NGINX 仅在授权端口上监听网络连接(未评分)
  • 2.4.3 确保 keepalive_timeout 设置为 10 秒或更短,但不为 0(已评分)
  • 2.4.4 确保 send_timeout 设置为 10 秒或更短,但不为 0(已评分)
  • 2.5 信息泄露
  • 2.5.1 确保 server_tokens 指令设置为 off(已评分)
  • 2.5.2 确保默认错误和 index.html 页面不引用 NGINX(已评分)
  • 2.5.4 确保 NGINX 反向代理未启用信息泄露(已评分)
  • 3 日志记录
  • 3.2 确保启用访问日志(已评分)
  • 3.3 确保启用错误日志并设置为信息日志级别(已评分)
  • 3.4 确保日志文件轮换(已评分)
  • 3.7 确保代理传递源 IP 信息(已评分)
  • 4 加密
  • 4.1 TLS / SSL 配置
  • 4.1.1 确保 HTTP 被重定向到 HTTPS(已评分)
  • 4.1.3 确保私钥权限受到限制(已评分)
  • 4.1.4 确保仅使用现代 TLS 协议(已评分)
  • 4.1.5 禁用弱加密套件(已评分)
  • 4.1.6 确保使用自定义 Diffie-Hellman 参数(已评分)
  • 4.1.7 确保启用在线证书状态协议(OCSP)叠加(已评分)
  • 4.1.8 确保启用 HTTP 严格传输安全(HSTS)(已评分)
  • 4.1.10 确保上游服务器流量使用客户端证书进行身份验证(已评分)
  • 4.1.13 确保禁用会话恢复以启用完美前向安全(已评分)
  • 5 请求过滤和限制
  • 5.1 访问控制
  • 5.2 请求限制
  • 5.2.1 确保正确设置客户端头部和主体的超时值(已评分)
  • 5.2.2 确保正确设置最大请求主体大小(已评分)
  • 5.2.3 确保定义 URI 的最大缓冲区大小(已评分)
  • 5.3 浏览器安全
  • 5.3.1 确保配置并启用 X-Frame-Options 头(已评分)
  • 5.3.2 确保配置并启用 X-Content-Type-Options 头(已评分)
  • 5.3.3 确保启用并正确配置 X-XSS-Protection 头(已评分)

许可证

GNU 通用公共许可证

作者信息

此角色最初由 Ali Saleh Baker 开发。

在为此存储库贡献之前,请先通过 GitHub 问题、电子邮件或其他渠道与我讨论您希望做的更改 :)

安装
ansible-galaxy install alivx.ansible_cis_nginx_hardening
许可证
agpl-3.0
下载
132
拥有者
Everything