Моя цель состоит в том, чтобы гарантировать надлежащую безопасность для клиентов, соединяющихся с моим nginx. Я следую руководству Mozilla для конфигурирования TLS правильно на моей nginx установке, но у меня нет обзора фактического protocols/ciphersuites, используемого на практике.
Что я имею теперь:
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 использовался для соединения и какой ciphersuite был выбран после того, как клиент/сервер согласовал. Например:
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 для входа этой информации?
Добавьте $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"';
Вышеуказанное основано на стандартном комбинированном
формате с дополнительной строкой '$ssl_protocol/$ssl_cipher '
. Затем добавьте в контекст сервера
(с включенным 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"