Як я можу дозволити nginx реєструвати використаний протокол SSL / TLS та шифрсуйт?


24

Моя мета - забезпечити належну безпеку для клієнтів, які підключаються до мого nginx. Я слідую посібнику Mozilla, щоб правильно настроїти TLS на моїй установці nginx, але я не маю огляду фактичних протоколів / шифрів, які використовуються на практиці.

Що я маю зараз:

server {
    listen 443;
    ssl on;
    ssl_certificate /path/to/signed_cert_plus_intermediates;
    ssl_certificate_key /path/to/private_key;
    ssl_dhparam /path/to/dhparam.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'the_long_ciphersuite_listed_there';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
}

Цим я хотів би записати, який протокол SSL використовувався для з'єднання та який шифр був обраний після узгодження клієнта / сервера. Наприклад:

10.1.2.3 - - [13/Aug/2014:12:34:56 +0200] "GET / HTTP/1.1" 200 1234 "-" "User agent bla"

до

10.1.2.3 - - [13/Aug/2014:12:34:56 +0200] ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 "GET / HTTP/1.1" 200 1234 "-" "User agent bla"

Таким чином я можу швидко визначити клієнтів, які використовують застарілі веб-переглядачі або автоматизовані машини, які не підтримують PFS або інші відповідні технології, що сприяють безпеці.

Як налаштувати nginx для реєстрації цієї інформації?

Відповіді:


44

Додайте $ssl_cipherдо log_formatконфігурації.

Зверніться до http://nginx.org/en/docs/http/ngx_http_ssl_module.html#variables для всіх змінних, що стосуються SSL.

Приклад

Визначте звичай log_formatу httpконтексті (наприклад /etc/nginx/nginx.conf):

log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
                        '$ssl_protocol/$ssl_cipher '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent"';

Вищенаведене базується на combinedформаті за замовчуванням з додатковим '$ssl_protocol/$ssl_cipher 'рядком.

Потім додайте в serverконтекст (з увімкненою SSL) access_logдирективу у власному форматі журналу:

server {
  listen 443;
  ssl on;
  access_log /var/log/nginx/access.log combined_ssl;
  [...]
}

Після перезапуску nginx журнали відображаються як:

10.1.2.3 - - [13/Aug/2014:12:34:56 +0200] TLSv1.2/ECDHE-RSA-AES128-GCM-SHA256 "GET / HTTP/1.1" 200 1234 "-" "User agent bla"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.