nginx-hardening
nginx-hardening (Роль 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 останется открытым на серверной стороне. Нулевое значение отключает соединения keep-alive. Второй необязательный параметр устанавливает значение в заголовке ответа “Keep-Alive: timeout=time”.
- Значение по умолчанию:
- nginx_server_tokens
- Значение по умолчанию:
off
- Описание: Отключает отображение версии nginx в сообщениях об ошибках и в заголовке ответа "Server". Установите в on, чтобы включить версию nginx в сообщениях об ошибках и заголовке "Server".
- Значение по умолчанию:
- 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
- Описание: Указывает длину параметров DH для шифров EDH.
- Значение по умолчанию:
Установка
Установите роль с помощью ansible-galaxy:
ansible-galaxy install dev-sec.nginx-hardening
Пример Playbook
- 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
Участие
Смотрите руководство для участников.
Лицензия и автор
- Автор:: Себастьян Гумприх
Лицензировано по лицензии Apache, версия 2.0 (далее "Лицензия"); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если иное не предусмотрено применимым законодательством или согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, предоставляется "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО ВИДА, явных или подразумеваемых. Смотрите Лицензию для получения конкретной информации об условиях использования и ограничениях, установленных Лицензией.
This Ansible role provides secure nginx configurations. http://dev-sec.io/
ansible-galaxy install dev-sec/ansible-nginx-hardening