Hướng dẫn bảo mật và bảo vệ máy chủ web của Nginx

Thực hành tốt nhất về bảo mật của Nginx.


Nginx là máy chủ web phát triển nhanh nhất trong ngành và hiện tại, nó giữ vị trí số hai về thị phần.

Nó được phát hành lần đầu vào năm 2004 và kể từ đó, nó đã đạt được danh tiếng xuất sắc và được sử dụng trong các trang web bận rộn nhất hàng triệu.

Có một lý do cho điều đó – Nginx là Rõ nhanh.

Trong bài viết này, tôi sẽ nói về một số hướng dẫn cần thiết để bảo đảm Nginx cho môi trường sản xuất. Vì vậy, hãy để Lốc bắt đầu.

SSL / TLS

Triển khai chứng chỉ SSL

Bước đầu tiên trong bảo mật web là triển khai SSL để bạn có thể truy cập các ứng dụng web bằng https và thêm một lớp mã hóa trong giao tiếp.

  • Sử dụng OpenSSL để tạo CSR với 2048 bit và sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • Lệnh trên sẽ tạo CSR và các tệp chính tại hiện đang làm việc trực tiếp. Đừng quên thay đổi tên tệp .csr và .key.

Nhận CSR được ký bởi cơ quan cấp chứng chỉ và khi bạn có chứng chỉ đã ký, bạn có thể triển khai chúng trong Nginx như dưới đây.

  • Đăng nhập vào máy chủ Nginx
  • Chuyển đến thư mục conf nơi bạn có tệp ssl.conf.

Lưu ý: Trong cài đặt mặc định trên Linux, bạn sẽ có tệp này trong /etc/nginx/conf.d.

  • Chỉnh sửa tệp và thêm các mục sau, điều này sẽ cho phép Nginx nghe trên cổng 443

người phục vụ {
nghe 443 ssl;
server_name bestflare.com;
ssl trên;
ssl_cert ve /opt/cert/bestflare.pem;
ssl_cert ve_key /opt/cert/bestflare.key;
}

Lưu ý: don lồng quên thay đổi chứng chỉ và đường dẫn tệp chính.

  • Lưu cấu hình và khởi động lại Nginx. Chứng chỉ SSL được triển khai thành công.

bestflare-ssl-cert

Tối ưu hóa SSL / TLS

Có SSL không có nghĩa là nó có bảo mật hoàn toàn và đó là một chuyên gia bảo mật web, bạn cần áp dụng một cấu hình để bảo mật máy chủ web.

Để bắt đầu, tôi khuyên bạn nên chạy một Quét SSL chống lại trang web để tìm điểm số và lỗ hổng thiết yếu.

ssl-labs-rating-c

Vì vậy, xếp hạng SSL Labs hiện tại là Cv Cv và một mục tiêu là làm cho nó

Vô hiệu hóa các giao thức SSL / TLS yếu

SSL 3, TLS 1.0 và TLS 1.1 dễ bị tấn công và chúng tôi sẽ chỉ cho phép giao thức TLS 1.2 mạnh.

  • Chỉnh sửa tệp ssl.conf và thêm bên dưới trong khối máy chủ

ssl_prot Protocol TLSv1.2;

  • Lưu tệp ssl.conf và khởi động lại Nginx

Vô hiệu hóa bộ mật mã yếu

Các bộ mật mã yếu có thể dẫn đến lỗ hổng như logjam, và đó là lý do tại sao chúng ta chỉ cần cho phép mật mã mạnh.

  • Thêm phần sau vào khối máy chủ trong tệp ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + aRSA + AESGCM EECDH + ACDA + EESDH + ECDDH ! MD5! EXP! PSK! SRP! DSS";

  • Lưu tệp và khởi động lại Nginx

Cài đặt chứng chỉ chuỗi

Không có chứng chỉ chuỗi cũng ảnh hưởng đến xếp hạng tổng thể và điều này có thể hiển thị lỗi khi duyệt trong trình duyệt hiện đại như Chrome. Bạn cần phải có được một chứng chỉ chuỗi từ cơ quan có thẩm quyền. Hầu hết bạn sẽ tìm thấy trên trang web của họ hoặc chỉ Google nó.

  • Thêm nội dung chứng chỉ chuỗi trong chứng chỉ trang web như dưới đây. Trong ví dụ của tôi, nó sẽ là /opt/cert/bestflare.pem

chuỗi chứng nhận

  • Lưu tệp và khởi động lại Nginx

Bảo mật Diffie-Hellman cho TLS

Diffie-Hellman kém an toàn hơn người ta tin. Một trong những thực tiễn tốt nhất được thêm vào gần đây trong danh sách là bảo mật Diffie-hellman. Tạo DH GROUP duy nhất và thêm ssl_dhparam trong tệp ssl.conf thực hiện việc này.

  • Tạo nhóm DH duy nhất bằng cách sử dụng OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Sẽ mất vài phút và sẽ tạo một tệp dhparams.pem trên thư mục làm việc hiện tại
  • Sao chép dhparams.pem vào thư mục cert
  • Sửa đổi ssl.conf và thêm sau vào khối máy chủ

ssl_dhparam /opt/cert/dhparams.pem;

  • Lưu tệp và khởi động lại Nginx

Điều đó là đủ để tối ưu hóa SSL / TLS và hãy để thử lại URL để xem xếp hạng.

ssllabs-a-rating

Woo ho! Vì vậy, bây giờ bạn có thể thấy nó Ăn mặc đánh giá bởi SSLLabs. Làm tốt!

Đây là ssl.conf hoàn chỉnh

Cấu hình máy chủ # HTTPS
người phục vụ {
nghe 443 ssl;
server_name bestflare.com;
ssl trên;
ssl_cert ve /opt/cert/bestflare.pem;
ssl_cert ve_key /opt/cert/bestflare.key;
ssl_prot Protocol TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers trên;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + aRSA + AESGCM EECDH + ACDA + EESDH + ECDDH ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Rò rỉ thông tin

Trong cài đặt Nginx mặc định, bạn sẽ có nhiều thông tin nhạy cảm được tiết lộ, điều này có thể giúp tin tặc chuẩn bị cho một cuộc tấn công.

Nếu bạn đang làm việc trên môi trường tuân thủ PCI, đây được coi là lỗ hổng rò rỉ thông tin và phải sửa lỗi.

Bạn phải sử dụng server_tokens để tắt rò rỉ thông tin. Tôi đã giải thích điều này trong bài viết trước của tôi. Xóa phiên bản khỏi biểu ngữ tiêu đề máy chủ trong Nginx

Bảo mật ứng dụng web

Cấu hình Nginx mặc định không hoàn hảo và có thể có nhiều lỗ hổng mà tại sao chúng tôi làm cứng chúng để bảo mật.

Vô hiệu hóa các phương thức HTTP không mong muốn

Hầu hết thời gian, bạn chỉ cần NHẬN, TRƯỚC & POST yêu cầu HTTP trong ứng dụng web của bạn. Cho phép TRACE hoặc DELETE là rủi ro vì nó có thể cho phép tấn công Theo dõi chéo trang web và có khả năng cho phép tin tặc đánh cắp thông tin cookie.

  • Sửa đổi nginx.conf và thêm sau dưới khối máy chủ

if ($ request_method! ~ ^ (NHẬN | ĐẦU | POST) $)
{
trả lại 405;
}

Lưu tệp và khởi động lại Nginx. Điều này bây giờ sẽ hiển thị 405 Không được phép nếu ai đó đang cố gắng sử dụng TRACE, DELETE, PUT, TÙY CHỌN.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Đang dùng thử 128.199.100.162…
Đã kết nối với bestflare.com.
Nhân vật thoát là ‘^]’.
TRACE / HTTP / 1.1
Máy chủ: kiểm tra
HTTP / 1.1 405 Không được phép
Máy chủ: nginx
Ngày: Thứ bảy, ngày 11 tháng 7 năm 2015 06:04:34 GMT
Loại nội dung: văn bản / html
Độ dài nội dung: 166
Kết nối: đóng

Tấn công nhấp chuột

Bạn có thể tiêm X-FRAME-TÙY CHỌN trong HTTP Header để ngăn chặn cuộc tấn công nhấp chuột.

Điều này đạt được bằng cách thêm vào bên dưới trong tệp nginx.conf

add_header X-Frame-Tùy chọn "SAMEORIGIN";

Tiêu đề trên sẽ hướng dẫn trình duyệt tải tài nguyên CHỈ từ cùng một nguồn gốc.

Bảo vệ X-XSS

Tiêm HTTP Header với bảo vệ X-XSS để giảm thiểu tấn công kịch bản chéo trang web.

  • Sửa đổi tập tin nginx.conf để thêm vào như sau

add_header X-XSS-Bảo vệ "1; chế độ = khối";

  • Lưu tệp cấu hình và khởi động lại Nginx. Bạn có thể dùng Kiểm tra tiêu đề công cụ xác minh sau khi thực hiện.

Bạn cũng có thể quan tâm đến việc triển khai các tiêu đề an toàn được đề xuất của OWASP được giải thích tại đây.

Triển khai Mod Security WAF

Thêm một lớp bảo mật bổ sung bằng cách triển khai Chế độ tường lửa ứng dụng web với Bộ quy tắc lõi OWASP.

Ngoài ra, nếu bạn có thể xem xét sử dụng bảo mật dựa trên đám mây như THÀNH CÔNG trước máy chủ Nginx.

Luôn cập nhật Nginx

Cuối cùng nhưng không kém phần quan trọng, bạn cần cập nhật Nginx của mình vì có nhiều cải tiến hiệu suất, sửa lỗi bảo mật và các tính năng mới đang được thêm vào.

Tôi hy vọng điều này sẽ giúp bạn giữ Nginx của bạn an toàn.

Tiếp theo, bạn có thể quan tâm đến việc học xây dựng Nginx cho hiệu suất cao từ đầu.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map