ฉันจะอนุญาตให้ nginx บันทึกโปรโตคอล SSL / TLS และ ciphersuite ที่ใช้แล้วได้อย่างไร


24

เป้าหมายของฉันคือการรับรองความปลอดภัยที่เหมาะสมสำหรับลูกค้าที่เชื่อมต่อกับ nginx ของฉัน ฉันปฏิบัติตามคำแนะนำของ Mozilla เพื่อกำหนดค่า TLS อย่างถูกต้องในการติดตั้ง nginx ของฉัน แต่ฉันไม่มีภาพรวมของโปรโตคอล / 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 เพื่อบันทึกข้อมูลนี้ได้อย่างไร

คำตอบ:


43

เพิ่ม$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"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.