PCI Compliance в NGINX

Готовим NGINX к проверке PCI Compliance, поднимаем безопасность SSL соединений и устраняем уязвимости.

ssl_session_timeout

Разрешаем возобновление сессий при помощи TLS session tickets
Задаем тип и размер кэшей для хранения параметров сессии.
Кеш необходим для возможности повторного использования ключей сессии, таким образом при установлении нового соединения будут использоваться старые ключи, т.е. не будет повторно производиться хендшейк.

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

ssl_prefer_server_ciphers

Указывает, чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские. (nginx ©)

ssl_prefer_server_ciphers on;

Исключаем возможность BEAST-атаки CVE-2011-3389

ssl_ciphers

ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5;

Указывает используемые шифры. За счет изменения набора шифров настраивается Forward Secrecy. От стандартного набора, предлагаемого NGINX, отличается только параметром !kEDH,

Также рекомендую в nginx.conf в секцию http добавить параметр

ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;

для того, что бы шифрам с CBC-режимом предпочитался RC4-SHA, так как они подвержены уязвимостям.

add_header Strict-Transport-Security max-age

Strict-Transport-Secutiry — заголовок, указывающий браузеру на то, что сайт доступен только по https. Это предотвращает возможность перехода обратно на http-версию для последующей атаки через незашифрованное соединение.

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_stapling

Позволяет серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей. Для работы этой функции нужно указать DNS-сервер, что и делается директивой resolver.

ssl_stapling on;
ssl_stapling_verify on;
resolver $DNS_1 $DNS_2 valid=300s;
resolver_timeout 5s;

Перезагружаем NGINX

systemctl restart nginx

Проверяем SSL соединение на SSL Labs

Поделиться Комментарии