Bảng cheat scss pdf

Bảng cheat này cung cấp hướng dẫn về cách triển khai bảo vệ lớp vận chuyển cho ứng dụng bằng Bảo mật lớp vận chuyển (TLS). Khi được triển khai đúng cách, TLS có thể cung cấp một số lợi ích về bảo mật

  • Bảo mật - bảo vệ chống lại kẻ tấn công đọc nội dung lưu lượng
  • Tính toàn vẹn - bảo vệ chống lại kẻ tấn công sửa đổi lưu lượng
  • Phát lại ngăn chặn - bảo vệ chống lại kẻ tấn công phát lại các yêu cầu đối với máy chủ
  • Xác thực - cho phép khách hàng xác minh rằng họ được kết nối với máy chủ thực (lưu ý rằng danh tính của khách hàng không được xác minh trừ khi sử dụng chứng chỉ ứng dụng khách)

TLS được sử dụng bởi nhiều giao thức khác để cung cấp mã hóa và tính toàn vẹn, đồng thời có thể được sử dụng theo một số cách khác nhau. Trang phục này chủ yếu tập trung vào cách sử dụng TLS để bảo vệ các máy khách kết nối với ứng dụng web qua HTTPS;

SSL so với TLS¶

Lớp cổng bảo mật (SSL) là giao thức ban đầu được sử dụng để cung cấp mã hóa cho lưu lượng HTTP, dưới dạng HTTPS. Có hai phiên bản SSL được phát hành công khai - phiên bản 2 và 3. Cả hai đều có điểm yếu nghiêm trọng về mật mã và không còn được sử dụng nữa

Vì nhiều lý do, phiên bản tiếp theo của giao thức (có hiệu quả là SSL 3. 1) được đặt tên là Transport Layer Security (TLS) phiên bản 1. 0. Sau đó TLS phiên bản 1. 1, 1. 2 và 1. 3 đã được phát hành

Các thuật ngữ "SSL", "SSL/TLS" và "TLS" thường được sử dụng thay thế cho nhau và trong nhiều trường hợp, "SSL" được sử dụng khi đề cập đến giao thức TLS hiện đại hơn. Trang phục này sẽ sử dụng thuật ngữ "TLS" trừ khi đề cập đến các giao thức cũ

Cấu hình máy chủ¶

Chỉ hỗ trợ các giao thức mạnh¶

Các giao thức SSL có nhiều điểm yếu và không được sử dụng trong bất kỳ trường hợp nào. Các ứng dụng web có mục đích chung nên mặc định là TLS 1. 3 (hỗ trợ TLS 1. 2 nếu cần) với tất cả các giao thức khác bị tắt. Khi biết rằng máy chủ web phải hỗ trợ máy khách cũ với trình duyệt không được hỗ trợ và không an toàn (chẳng hạn như Internet Explorer 10), có thể cần phải bật TLS 1. 0 để cung cấp hỗ trợ

Khi yêu cầu các giao thức cũ, tiện ích mở rộng "TLS_FALLBACK_SCSV" phải được bật để ngăn chặn các cuộc tấn công hạ cấp đối với máy khách

Lưu ý rằng PCI DSS cấm sử dụng các giao thức kế thừa như TLS 1. 0

Chỉ hỗ trợ mật mã mạnh¶

Có một số lượng lớn các mật mã (hoặc bộ mật mã) khác nhau được TLS hỗ trợ, cung cấp các mức độ bảo mật khác nhau. Nếu có thể, chỉ nên bật mật mã GCM. Tuy nhiên, nếu cần hỗ trợ các máy khách kế thừa thì có thể cần đến các mật mã khác

Tối thiểu, các loại mật mã sau phải luôn bị vô hiệu hóa

  • mật mã null
  • Mật mã ẩn danh
  • XUẤT KHẨU mật mã

Xem TLS Cipher String Cheat Sheet để biết đầy đủ chi tiết về cách định cấu hình mật mã an toàn

Sử dụng các tham số Diffie-Hellman mạnh¶

Khi các mật mã sử dụng trao đổi khóa Diffie-Hellman tạm thời đang được sử dụng (được biểu thị bằng các chuỗi "DHE" hoặc "EDH" trong tên mật mã), nên sử dụng các tham số Diffie-Hellman đủ an toàn (ít nhất 2048 bit)

Lệnh sau có thể được sử dụng để tạo tham số 2048 bit

openssl dhparam 2048 -out dhparam2048.pem

Trang web Weak DH cung cấp hướng dẫn về cách cấu hình các máy chủ web khác nhau để sử dụng các tham số được tạo này

Vô hiệu hóa nén¶

Nên tắt tính năng nén TLS để bảo vệ khỏi lỗ hổng bảo mật (có biệt danh là CRIME) có khả năng cho phép kẻ tấn công khôi phục thông tin nhạy cảm như cookie phiên

Vá thư viện mật mã¶

Cũng như các lỗ hổng trong giao thức SSL và TLS, cũng có một số lượng lớn lỗ hổng lịch sử trong các thư viện SSL và TLS, trong đó Heartbleed là lỗ hổng nổi tiếng nhất. Do đó, điều quan trọng là đảm bảo rằng các thư viện này được cập nhật với các bản vá bảo mật mới nhất

Kiểm tra cấu hình máy chủ¶

Khi máy chủ đã được cứng hóa, cấu hình nên được kiểm tra. Chương Hướng dẫn kiểm tra OWASP về Kiểm tra SSL/TLS chứa thêm thông tin về kiểm tra

Có một số công cụ trực tuyến có thể được sử dụng để nhanh chóng xác thực cấu hình của máy chủ, bao gồm

  • Kiểm tra máy chủ phòng thí nghiệm SSL
  • Kiểm tra tiền điện tử
  • CypherCraft
  • cứng lại
  • miễn dịchWeb
  • Đài quan sát của Mozilla
  • Scanigma
  • OWASP PurpleTeam cloud

Ngoài ra, có một số công cụ ngoại tuyến có thể được sử dụng

  • O-Saft - Công cụ pháp y nâng cao OWASP SSL
  • quét mật mã
  • CryptoLyzer
  • SSLScan - Máy quét SSL nhanh
  • SSLyze
  • kiểm tra. sh - Kiểm tra mọi mã hóa TLS/SSL
  • quét tls
  • OWASP PurpleTeam local

Giấy chứng nhận¶

Sử dụng các phím mạnh và bảo vệ chúng¶

Khóa riêng được sử dụng để tạo khóa mật mã phải đủ mạnh cho thời gian tồn tại dự kiến ​​của khóa riêng và chứng chỉ tương ứng. Cách thực hành tốt nhất hiện nay là chọn kích thước khóa ít nhất là 2048 bit. Thông tin bổ sung về tuổi thọ của khóa và độ bền của khóa có thể so sánh được có tại đây và trong NIST SP 800-57

Khóa riêng cũng phải được bảo vệ khỏi truy cập trái phép bằng cách sử dụng quyền của hệ thống tệp và các biện pháp kiểm soát quản trị và kỹ thuật khác

Sử dụng các thuật toán băm mật mã mạnh¶

Chứng chỉ nên sử dụng SHA-256 cho thuật toán băm, thay vì thuật toán MD5 và SHA-1 cũ hơn. Chúng có một số điểm yếu về mật mã và không được các trình duyệt hiện đại tin cậy

Sử dụng đúng tên miền¶

Tên miền (hoặc chủ đề) của chứng chỉ phải khớp với tên đủ điều kiện của máy chủ xuất trình chứng chỉ. Trước đây, điều này được lưu trữ trong thuộc tính commonName (CN) của chứng chỉ. Tuy nhiên, các phiên bản Chrome hiện đại bỏ qua thuộc tính CN và yêu cầu FQDN nằm trong thuộc tính subjectAlternativeName (SAN). Vì lý do tương thích, các chứng chỉ phải có FQDN chính trong CN và danh sách đầy đủ các FQDN trong SAN

Ngoài ra, khi tạo chứng chỉ, cần tính đến những điều sau

  • Cân nhắc xem có nên bao gồm tên miền phụ "www" hay không
  • Không bao gồm tên máy chủ không đủ điều kiện
  • Không bao gồm địa chỉ IP
  • Không bao gồm các tên miền nội bộ trên các chứng chỉ bên ngoài
    • Nếu máy chủ có thể truy cập được bằng cả FQDN bên trong và bên ngoài, hãy định cấu hình máy chủ bằng nhiều chứng chỉ

Cân nhắc cẩn thận việc sử dụng Chứng chỉ ký tự đại diện¶

Chứng chỉ ký tự đại diện có thể thuận tiện, tuy nhiên chúng vi phạm nguyên tắc đặc quyền tối thiểu, vì một chứng chỉ duy nhất hợp lệ cho tất cả các miền con của một miền (chẳng hạn như *. ví dụ. tổ chức). Khi nhiều hệ thống đang chia sẻ chứng chỉ ký tự đại diện, khả năng khóa riêng cho chứng chỉ bị xâm phạm sẽ tăng lên vì khóa có thể có trên nhiều hệ thống. Ngoài ra, giá trị của khóa này được tăng lên đáng kể, khiến nó trở thành mục tiêu hấp dẫn hơn đối với những kẻ tấn công

Các vấn đề xung quanh việc sử dụng chứng chỉ ký tự đại diện rất phức tạp và có nhiều cuộc thảo luận khác về chúng trực tuyến

Khi đánh giá rủi ro khi sử dụng chứng chỉ ký tự đại diện, cần xem xét các lĩnh vực sau

  • Chỉ sử dụng chứng chỉ ký tự đại diện khi có nhu cầu thực sự, thay vì để thuận tiện
    • Thay vào đó, hãy xem xét việc sử dụng ACME để cho phép các hệ thống tự động yêu cầu và cập nhật chứng chỉ của chính chúng
  • Không bao giờ sử dụng chứng chỉ ký tự đại diện cho các hệ thống ở các mức độ tin cậy khác nhau
    • Hai cổng VPN có thể sử dụng chứng chỉ ký tự đại diện được chia sẻ
    • Nhiều phiên bản của ứng dụng web có thể chia sẻ chứng chỉ
    • Cổng VPN và máy chủ web công cộng không được chia sẻ chứng chỉ ký tự đại diện
    • Máy chủ web công cộng và máy chủ nội bộ không được chia sẻ chứng chỉ ký tự đại diện
  • Xem xét việc sử dụng máy chủ proxy ngược thực hiện chấm dứt TLS để khóa cá nhân ký tự đại diện chỉ xuất hiện trên một hệ thống
  • Một danh sách tất cả các hệ thống chia sẻ chứng chỉ phải được duy trì để cho phép tất cả chúng được cập nhật nếu chứng chỉ hết hạn hoặc bị xâm phạm
  • Giới hạn phạm vi của chứng chỉ ký tự đại diện bằng cách cấp chứng chỉ đó cho tên miền phụ (chẳng hạn như *.foo.example.org) hoặc cho một tên miền riêng biệt

Sử dụng Cơ quan cấp chứng chỉ phù hợp cho Cơ sở người dùng của ứng dụng¶

Để được người dùng tin cậy, chứng chỉ phải được ký bởi cơ quan cấp chứng chỉ đáng tin cậy (CA). Đối với các ứng dụng truy cập Internet, đây phải là một trong những CA nổi tiếng và được các hệ điều hành và trình duyệt tự động tin cậy

LetsEncrypt CA cung cấp chứng chỉ SSL được xác thực tên miền miễn phí, được tất cả các trình duyệt chính tin cậy. Như vậy, hãy xem xét liệu có bất kỳ lợi ích nào khi mua chứng chỉ từ CA hay không

Đối với các ứng dụng nội bộ, có thể sử dụng CA nội bộ. Điều này có nghĩa là FQDN của chứng chỉ sẽ không bị lộ (đối với CA bên ngoài hoặc công khai trong danh sách minh bạch của chứng chỉ). Tuy nhiên, chứng chỉ sẽ chỉ được tin cậy bởi những người dùng đã nhập và tin cậy chứng chỉ CA nội bộ đã được sử dụng để ký tên họ

Sử dụng Bản ghi CAA để Hạn chế CA nào có thể Cấp Chứng chỉ¶

Các bản ghi DNS Ủy quyền của Cơ quan Chứng nhận (CAA) có thể được sử dụng để xác định CA nào được phép cấp chứng chỉ cho một miền. Các bản ghi chứa danh sách các CA và bất kỳ CA nào không có trong danh sách đó sẽ từ chối cấp chứng chỉ cho miền. Điều này có thể giúp ngăn kẻ tấn công lấy chứng chỉ trái phép cho miền thông qua CA kém uy tín hơn. Khi nó được áp dụng cho tất cả các tên miền phụ, nó cũng có thể hữu ích từ góc độ quản trị bằng cách giới hạn những quản trị viên hoặc nhà phát triển CA nào có thể sử dụng và bằng cách ngăn họ lấy chứng chỉ ký tự đại diện trái phép

Luôn cung cấp tất cả các chứng chỉ cần thiết¶

Để xác thực tính xác thực của chứng chỉ, trình duyệt của người dùng phải kiểm tra chứng chỉ đã được sử dụng để ký và so sánh chứng chỉ đó với danh sách các CA được hệ thống của họ tin cậy. Trong nhiều trường hợp, chứng chỉ không được ký trực tiếp bởi CA gốc mà thay vào đó được ký bởi CA trung gian, CA trung gian này lại được ký bởi CA gốc

Nếu người dùng không biết hoặc không tin tưởng CA trung gian này thì quá trình xác thực chứng chỉ sẽ không thành công, ngay cả khi người dùng tin tưởng CA gốc cuối cùng, vì họ không thể thiết lập chuỗi tin cậy giữa chứng chỉ và gốc. Để tránh điều này, bất kỳ chứng chỉ trung gian nào cũng phải được cung cấp cùng với chứng chỉ chính

Cân nhắc việc sử dụng Chứng chỉ xác thực mở rộng¶

Chứng chỉ xác thực mở rộng (EV) yêu cầu cung cấp mức xác minh thực thể cao hơn, vì chúng thực hiện kiểm tra xem người yêu cầu có phải là một pháp nhân hợp pháp hay không, thay vì chỉ xác minh quyền sở hữu tên miền như bình thường (hoặc "Miền đã xác thực") . Điều này thực sự có thể được xem là sự khác biệt giữa "Trang web này thực sự được điều hành bởi Example Company Inc. " vs "Miền này thực sự là ví dụ. tổ chức"

Trước đây, những thứ này hiển thị khác nhau trong trình duyệt, thường hiển thị tên công ty hoặc biểu tượng hoặc nền màu xanh lá cây trên thanh địa chỉ. Tuy nhiên, kể từ năm 2019, cả Chrome và Firefox đều đã thông báo rằng họ sẽ xóa các chỉ báo này vì họ không tin rằng chứng chỉ EV cung cấp bất kỳ biện pháp bảo vệ bổ sung nào

Không có nhược điểm bảo mật nào đối với việc sử dụng chứng chỉ EV. Tuy nhiên, vì chúng đắt hơn đáng kể so với chứng chỉ được xác thực miền, nên cần thực hiện đánh giá để xác định xem chúng có cung cấp bất kỳ giá trị bổ sung nào không

Đăng kí¶

Sử dụng TLS cho tất cả các trang¶

TLS nên được sử dụng cho tất cả các trang, không chỉ những trang được coi là nhạy cảm, chẳng hạn như trang đăng nhập. Nếu có bất kỳ trang nào không thực thi việc sử dụng TLS, những trang này có thể tạo cơ hội cho kẻ tấn công đánh hơi thông tin nhạy cảm như mã thông báo phiên hoặc đưa JavaScript độc hại vào phản hồi để thực hiện các cuộc tấn công khác chống lại người dùng

Đối với các ứng dụng công khai, có thể thích hợp để máy chủ web lắng nghe các kết nối HTTP không được mã hóa trên cổng 80, sau đó ngay lập tức chuyển hướng chúng bằng chuyển hướng vĩnh viễn (HTTP 301) để cung cấp trải nghiệm tốt hơn cho người dùng nhập thủ công . Điều này sau đó sẽ được hỗ trợ với tiêu đề HTTP Strict Transport Security (HSTS) để ngăn họ truy cập trang web qua HTTP trong tương lai

Không trộn lẫn nội dung TLS và không phải TLS¶

Một trang khả dụng qua TLS không được bao gồm bất kỳ tệp tài nguyên nào (chẳng hạn như JavaScript hoặc CSS) được tải qua HTTP không được mã hóa. Những tài nguyên không được mã hóa này có thể cho phép kẻ tấn công đánh hơi cookie phiên hoặc đưa mã độc vào trang. Các trình duyệt hiện đại cũng sẽ chặn các nỗ lực tải nội dung hoạt động qua HTTP không được mã hóa vào các trang an toàn

Tất cả các cookie phải được đánh dấu bằng thuộc tính "Secure", hướng dẫn trình duyệt chỉ gửi chúng qua các kết nối HTTPS được mã hóa để ngăn chúng bị đánh cắp từ kết nối HTTP không được mã hóa. Điều này rất quan trọng ngay cả khi trang web không lắng nghe trên HTTP (cổng 80), vì kẻ tấn công thực hiện tấn công trung gian có thể đưa ra một máy chủ web giả mạo trên cổng 80 cho người dùng để đánh cắp cookie của họ

Ngăn chặn bộ nhớ đệm của dữ liệu nhạy cảm¶

Mặc dù TLS cung cấp khả năng bảo vệ dữ liệu trong khi truyền, nhưng nó không cung cấp bất kỳ sự bảo vệ nào cho dữ liệu khi dữ liệu đã đến hệ thống yêu cầu. Do đó, thông tin này có thể được lưu trữ trong bộ đệm của trình duyệt của người dùng hoặc bởi bất kỳ proxy chặn nào được định cấu hình để thực hiện giải mã TLS

Khi dữ liệu nhạy cảm được trả về trong các phản hồi, các tiêu đề HTTP nên được sử dụng để hướng dẫn trình duyệt và bất kỳ máy chủ proxy nào không lưu thông tin vào bộ nhớ đệm để ngăn thông tin được lưu trữ hoặc trả lại cho người dùng khác. Điều này có thể đạt được bằng cách đặt các tiêu đề HTTP sau trong phản hồi

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

Sử dụng HTTP Strict Transport Security¶

HTTP Strict Transport Security (HSTS) hướng dẫn trình duyệt của người dùng luôn yêu cầu trang web qua HTTPS và cũng ngăn người dùng bỏ qua các cảnh báo chứng chỉ. Xem HTTP Strict Transport Security cheatsheet để biết thêm thông tin về cách triển khai HSTS

Cân nhắc việc sử dụng Chứng chỉ phía máy khách¶

Trong cấu hình điển hình, TLS được sử dụng với chứng chỉ trên máy chủ để máy khách có thể xác minh danh tính của máy chủ và cung cấp kết nối được mã hóa giữa chúng. Tuy nhiên, có hai điểm yếu chính với phương pháp này

  • Máy chủ không có bất kỳ cơ chế nào để xác minh danh tính của máy khách
  • Kẻ tấn công có thể lấy chứng chỉ hợp lệ cho miền có thể chặn kết nối
    • Điều này được các doanh nghiệp sử dụng phổ biến nhất để thực hiện kiểm tra lưu lượng TLS bằng cách cài đặt chứng chỉ CA đáng tin cậy trên các hệ thống máy khách đó

Chứng chỉ ứng dụng khách giải quyết cả hai vấn đề này bằng cách yêu cầu ứng dụng khách chứng minh danh tính của họ với máy chủ bằng chứng chỉ của riêng họ. Điều này không chỉ cung cấp khả năng xác thực mạnh mẽ danh tính của máy khách mà còn ngăn không cho bên trung gian thực hiện giải mã TLS, ngay cả khi họ có chứng chỉ CA đáng tin cậy trên hệ thống máy khách

Chứng chỉ ứng dụng khách hiếm khi được sử dụng trên các hệ thống công cộng do một số vấn đề

  • Phát hành và quản lý chứng chỉ ứng dụng khách gây ra chi phí quản trị đáng kể
  • Người dùng không có kỹ thuật có thể gặp khó khăn khi cài đặt chứng chỉ ứng dụng khách
  • Giải mã TLS được nhiều tổ chức sử dụng sẽ khiến xác thực chứng chỉ ứng dụng khách không thành công

Tuy nhiên, chúng nên được xem xét cho các ứng dụng hoặc API có giá trị cao, đặc biệt khi có một số lượng nhỏ người dùng phức tạp về mặt kỹ thuật hoặc khi tất cả người dùng là thành viên của cùng một tổ chức

Cân nhắc sử dụng tính năng ghim khóa công khai¶

Ghim khóa công khai có thể được sử dụng để đảm bảo rằng chứng chỉ của máy chủ không chỉ hợp lệ và đáng tin cậy mà còn phù hợp với chứng chỉ dự kiến ​​cho máy chủ. Điều này cung cấp khả năng bảo vệ chống lại kẻ tấn công có thể lấy chứng chỉ hợp lệ, bằng cách khai thác điểm yếu trong quy trình xác thực, xâm phạm cơ quan cấp chứng chỉ đáng tin cậy hoặc có quyền truy cập quản trị vào ứng dụng khách

Ghim khóa công khai đã được thêm vào các trình duyệt theo tiêu chuẩn Ghim khóa công khai HTTP (HPKP). Tuy nhiên, do một số vấn đề, sau đó nó không còn được dùng nữa và không còn được khuyến nghị hoặc hỗ trợ bởi các trình duyệt hiện đại

Tuy nhiên, ghim khóa công khai vẫn có thể mang lại lợi ích bảo mật cho các ứng dụng di động, máy khách dày và giao tiếp giữa máy chủ với máy chủ. Điều này được thảo luận chi tiết hơn trong Pinning Cheat Sheet