0
0
Lập trình
Admin Team
Admin Teamtechmely

7 Mẹo Tăng Cường Bảo Mật TLS Trên Nginx

Đăng vào 6 tháng trước

• 4 phút đọc

Giới thiệu

Bảo mật lớp truyền tải (TLS) là nền tảng của lưu lượng web được mã hóa. Đối với các quản lý DevOps điều hành các trang web có lưu lượng truy cập cao, một cấu hình TLS không chính xác có thể rò rỉ dữ liệu, giảm hiệu suất hoặc thậm chí làm lộ máy chủ của bạn trước các cuộc tấn công hạ cấp. Danh sách kiểm tra này sẽ hướng dẫn bạn qua các bước tăng cường bảo mật hiệu quả nhất cho Nginx trên Linux, tập trung vào các bộ mã hóa hiện đại, Bảo mật Đường truyền Hoàn hảo (PFS) và độ trễ tối thiểu.


1. Sử dụng Phiên bản TLS Gần đây

Các phiên bản giao thức cũ (SSLv3, TLS 1.0/1.1) đầy rẫy các lỗ hổng đã biết. Trong tệp nginx.conf, chỉ cho phép TLS 1.2 và TLS 1.3:

Copy
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

Cả hai phiên bản này đều được hầu hết các trình duyệt hỗ trợ ngày nay, và TLS 1.3 mang lại sự giảm độ trễ bắt tay từ 30 đến 40%.


2. Chọn Bộ Mã Hóa Mạnh

Một danh sách mã hóa được chọn lọc kỹ lưỡng ngăn chặn việc quay lại các thuật toán yếu. Bộ mã sau đây hoạt động cho hầu hết các trình duyệt trong khi sử dụng CPU ở mức thấp:

Copy
ssl_ciphers \
    "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256" \
    "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384" \
    "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305";
  • Tại sao lại chọn những bộ mã này?
    • Tất cả đều là AEAD (Mã hóa xác thực với Dữ liệu liên quan) – không cần MAC riêng biệt.
    • Chúng sử dụng Elliptic Curve Diffie-Hellman (ECDHE) cho PFS.
    • Danh sách ưu tiên các khóa 256-bit nhưng sẽ quay lại 128-bit cho phần cứng cũ hơn.

3. Bảo Đảm Bảo Mật Đường Truyền Hoàn Hảo

PFS đảm bảo rằng ngay cả khi khóa riêng của bạn bị xâm phạm, các phiên trước đó vẫn được mã hóa. Các bộ ECDHE trên đây đã cung cấp PFS, nhưng bạn có thể kiểm tra lại bằng:

Copy
openssl s_client -connect example.com:443 -cipher "ECDHE" -tls1_2

Nếu đầu ra hiển thị Cipher : ECDHE-RSA-AES256-GCM-SHA384, bạn đã sẵn sàng.


4. Cải Thiện Chuỗi Chứng Chỉ

  • Sử dụng CA uy tín – tránh các chứng chỉ tự ký trong môi trường sản xuất.
  • Bao gồm chứng chỉ trung gian – một chuỗi đầy đủ tránh các vòng đi vòng lại không cần thiết.
  • Kích hoạt OCSP stapling để cho phép trình duyệt xác minh trạng thái thu hồi mà không cần yêu cầu riêng:
Copy
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

5. Tối Ưu Hóa Khôi Phục Phiên TLS

Thẻ phiên giảm tải trong quá trình bắt tay. Bật chúng lên, nhưng xoay vòng khóa thẻ hàng ngày để giới hạn mức độ tiếp xúc:

Copy
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
ssl_ticket_key /etc/nginx/ticket.key;

Tạo khóa thẻ mới bằng:

Copy
openssl rand 48 > /etc/nginx/ticket.key
chmod 600 /etc/nginx/ticket.key

6. Kích Hoạt HTTP/2 (hoặc HTTP/3) Qua TLS

Cả hai giao thức đều đa luồng, giảm độ trễ cho việc tải trang. Trong Nginx 1.19+, bạn có thể dễ dàng kích hoạt HTTP/2:

Copy
listen 443 ssl http2;
# Đối với HTTP/3 (yêu cầu mô-đun quic)
# listen 443 ssl http3 reuseport;

Nếu bạn muốn thử nghiệm, hãy thử mô-đun HTTP/3 thử nghiệm để cải thiện dưới một phần triệu giây.


7. Kiểm Tra và Giám Sát Liên Tục

Việc tăng cường không phải là một nhiệm vụ một lần. Sử dụng các công cụ tự động để phát hiện sự suy giảm:

  • Qualys SSL Labs – quét sâu miễn phí, đánh giá từ A- đến F.
  • Mozilla Observatory – kiểm tra các tiêu đề theo quy tắc tốt nhất.
  • Prometheus + node_exporter – giám sát độ trễ bắt tay TLS:
Copy
- job_name: 'nginx_tls'
  static_configs:
    - targets: ['localhost:9113']

Thiết lập cảnh báo cho thời gian bắt tay > 200 ms hoặc chứng chỉ hết hạn trong vòng 30 ngày.


Thêm: Giảm Tải Qua TLS Với Nén Brotli

Mặc dù không phải là cài đặt TLS, việc phục vụ tài sản nén qua HTTPS tiết kiệm băng thông mà không làm giảm bảo mật. Trong Nginx:

Copy
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;

Kết hợp điều này với nén tiêu đề của HTTP/2 để có trải nghiệm người dùng mượt mà hơn.


Kết luận

Một cấu hình TLS vững chắc trên Nginx bảo vệ dữ liệu, cải thiện hiệu suất và xây dựng niềm tin với người dùng. Bằng cách làm theo bảy bước trên - cập nhật giao thức, lựa chọn mã hóa, bảo đảm PFS, hoàn thiện chuỗi chứng chỉ, kích hoạt khôi phục phiên, bật HTTP/2/3 và kiểm tra liên tục - bạn sẽ có một điểm cuối HTTPS không có độ trễ, phù hợp với tương lai.

Khi bạn sẵn sàng kiểm tra toàn bộ ngăn xếp của mình hoặc cần một môi trường Linux được quản lý mà tôn trọng các thực hành tăng cường này, hãy xem qua https://lacidaweb.com để tìm giải pháp lưu trữ thân thiện với nhà phát triển.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào