dev-sec.nginx-hardening
nginx 加固 (Ansible 角色)
注意: 此角色已迁移至我们的加固集合:
需求
- Ansible >= 2.5
角色变量
- nginx_client_body_buffer_size
- 默认值:
1k
- 描述:设置读取客户端请求体的缓冲区大小。如果请求体大于缓冲区,则会将整个请求体或其部分写入临时文件。
- 默认值:
- nginx_remove_default_site
- 默认值:
true
- 描述:禁用默认站点。设置为 false 可在 nginx 中启用默认站点。
- 默认值:
- nginx_client_max_body_size
- 默认值:
1k
- 描述:设置客户端请求体的最大允许大小,此大小在“Content-Length”请求头中指定。如果请求的大小超过配置值,则会返回 413 (请求实体过大) 错误。
- 默认值:
- nginx_keepalive_timeout
- 默认值:
5 5
- 描述:第一个参数设置保持连接的客户端连接在服务器端保持开启的超时时间。零值禁用保持连接。可选的第二个参数设置“Keep-Alive: timeout=time”响应头中的值。
- 默认值:
- nginx_server_tokens
- 默认值:
off
- 描述:禁用在错误消息和“Server”响应头中返回 nginx 版本。设置为 on 以在错误消息和“Server”响应头中启用 nginx 版本。
- 默认值:
- nginx_client_header_buffer_size
- 默认值:
1k
- 描述:设置读取客户端请求头的缓冲区大小。对于大多数请求,1K 字节的缓冲区足够。
- 默认值:
- nginx_large_client_header_buffers
- 默认值:
2 1k
- 描述:设置用于读取大客户端请求头的缓冲区的最大数量和大小。
- 默认值:
- nginx_client_body_timeout
- 默认值:
10
- 描述:定义读取客户端请求体的超时时间。
- 默认值:
- nginx_client_header_timeout
- 默认值:
10
- 描述:定义读取客户端请求头的超时时间。
- 默认值:
- nginx_send_timeout
- 默认值:
10
- 描述:设置向客户端传输响应的超时时间。
- 默认值:
- nginx_limit_conn_zone
- 默认值:
$binary_remote_addr zone=default:10m
- 描述:设置用于存储各种键状态的共享内存区域的参数。
- 默认值:
- nginx_limit_conn
- 默认值:
default 5
- 描述:设置共享内存区域和某个键值的最大连接数。
- 默认值:
- nginx_add_header
- 默认值:
[ "X-Frame-Options SAMEORIGIN", "X-Content-Type-Options nosniff", "X-XSS-Protection \"1; mode=block\"" ]
- 描述:在响应头中添加指定字段,前提是响应代码等于 200、201、204、206、301、302、303、304 或 307。
- 默认值:
- nginx_ssl_protocols
- 默认值:
TLSv1.2
- 描述:指定应使用的 SSL 协议。
- 默认值:
- nginx_ssl_ciphers
- 默认值:见 defaults.yml
- 描述:指定应使用的 TLS 加密套件。
- nginx_ssl_prefer_server_ciphers
- 默认值:
on
- 描述:指定在使用 TLS 协议时应优先使用服务器加密套件而不是客户端加密套件。设置为 false 以禁用此功能。
- 默认值:
- nginx_dh_size
- 默认值:
2048
- 描述:指定 EDH 加密套件的 DH 参数长度。
- 默认值:
安装
使用 ansible-galaxy 安装该角色:
ansible-galaxy install dev-sec.nginx-hardening
示例剧本
- hosts: localhost
roles:
- dev-sec.nginx-hardening
本地测试
本地测试该角色的首选方法是使用 Docker。您需要在系统上安装 Docker。请参见 入门 获取适合您系统的 Docker 软件包。
您也可以使用 vagrant 和 Virtualbox 或 VMWare 在本地运行测试。您需要在系统上安装 Virtualbox 和 Vagrant。请参见 Vagrant 下载 获取适合您系统的 vagrant 软件包。我们所有的测试都使用 test-kitchen
。如果您不熟悉 test-kitchen
,请查看 他们的指南。
接下来安装 test-kitchen:
# 安装依赖
gem install bundler
bundle install
使用 Docker 测试
# 在一台机器上快速测试
bundle exec kitchen test default-ubuntu-1204
# 在所有机器上测试
bundle exec kitchen test
# 开发用
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
使用 Virtualbox 测试
# 在一台机器上快速测试
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test nginx-ansible-19-ubuntu-1404
# 在所有机器上测试
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test
# 开发用
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create nginx-ansible-19-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge nginx-ansible-19-ubuntu-1404
有关更多信息,请参见 test-kitchen。
贡献
请参见 贡献者指南。
许可证和作者
- 作者:: Sebastian Gumprich
根据 Apache 许可证,版本 2.0(“许可证”)许可; 您不得在未遵守许可证的情况下使用此文件。 您可以在以下地址获取许可证的副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件均按“现状”提供,没有任何形式的保证或条件,无论是明示还是暗示。 请参阅许可证以了解规定的权限和限制。