Làm cách nào tôi có thể để nginx đăng nhập giao thức SSL / TLS và ciphersuite đã sử dụng?


24

Mục tiêu của tôi là đảm bảo an ninh thích hợp cho các khách hàng kết nối với nginx của tôi. Tôi đang làm theo hướng dẫn của Mozilla để định cấu hình TLS chính xác trong quá trình cài đặt nginx của tôi, nhưng tôi không có cái nhìn tổng quan về các giao thức / mật mã thực tế đang được sử dụng trong thực tế.

Những gì tôi có bây giờ:

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;
}

Với điều này, tôi muốn đăng nhập giao thức SSL nào được sử dụng cho kết nối và ciphersuite nào được chọn sau khi khách hàng / máy chủ đàm phán. Ví dụ:

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

đến

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"

Bằng cách này, tôi có thể nhanh chóng xác định các máy khách đang sử dụng các trình duyệt hoặc máy tự động lỗi thời không hỗ trợ PFS hoặc các công nghệ cho phép bảo mật có liên quan khác.

Làm cách nào để định cấu hình nginx để ghi thông tin này?

Câu trả lời:


43

Thêm $ssl_ciphervào log_formatcấu hình của bạn .

Tham khảo http://nginx.org/en/docs/http/ngx_http_ssl_module.html#variables cho tất cả các biến liên quan đến SSL.

Thí dụ

Xác định một tùy chỉnh log_formattrong httpngữ cảnh (ví dụ /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"';

Ở trên dựa trên định combineddạng mặc định với một '$ssl_protocol/$ssl_cipher 'dòng bổ sung .

Sau đó thêm vào một serverngữ cảnh (có bật SSL) access_logchỉ thị với định dạng nhật ký tùy chỉnh:

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

Sau khi khởi động lại nginx, các bản ghi xuất hiện như sau:

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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.