ansible_cis_nginx_hardening
Ansible CIS Nginx Hardening (все еще находится в стадии тестирования)
Основано на CIS NGINX Benchmark v1.0.0 - 28-02-2019
Nginx, безусловно, является одним из самых широко используемых бесплатных и открытых веб-серверов для хостинга сайтов с высоким трафиком. Он известен своей стабильностью, отличной производительностью, низким потреблением ресурсов и простой настройкой. Стандартные настройки не безопасны, и необходимы дополнительные изменения для укрепления веб-сервера и обеспечения необходимой безопасности для предотвращения атак и утечек. Эта роль устанавливает безопасные настройки для NGINX, работающего на Ubuntu.
Информация о оценивании
- Статус оценки указывает, влияет ли соблюдение данной рекомендации на оценку целевого бенчмарка. В этом бенчмарке используются следующие статусы оценки:
Оценено (реализовано в этой роли)
- Несоответствие "Оцененным" рекомендациям приведет к снижению окончательной оценки бенчмарка. Соблюдение "Оцененных" рекомендаций увеличит окончательную оценку бенчмарка.
Не оценено (не реализовано в этой роли)
- Несоответствие "Не оцененным" рекомендациям не снизит окончательную оценку бенчмарка. Соблюдение "Не оцененных" рекомендаций не увеличит окончательную оценку бенчмарка.
Основные преимущества использования пакетов 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
Зависимости
Пример Playbook
Включение примера того, как использовать вашу роль (например, с переменными, переданными в качестве параметров), также будет полезно пользователям:
---
- 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 недействительная оболочка (Оценено)
- 2.3 Разрешения и права собственности
- 2.3.1 Убедитесь, что директории и файлы NGINX принадлежат root (Оценено)
- 2.3.2 Убедитесь, что доступ к директориям и файлам NGINX ограничен (Оценено)
- 2.3.3 Убедитесь, что файл идентификатора процесса (PID) NGINX защищен (Оценено)
- 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 Убедитесь, что используются пользовательские параметры Диффи-Хеллмана (Оценено)
- 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 GENERAL PUBLIC LICENSE
Информация об авторе
Роль была изначально разработана Али Салехом Бейкером.
При внесении изменений в этот репозиторий, пожалуйста, сначала обсудите изменение, которое вы хотите внести, через GitHub issue, электронную почту или другие каналы связи со мной :)
Nginx CIS
ansible-galaxy install alivx/ansible-cis-nginx-hardening