it-swarm-vi.com

Khi nào thì phù hợp với các kết nối Cơ sở dữ liệu mã hóa SSL?

Giả sử tôi có một máy chủ web tôi thiết lập và sau đó là máy chủ cơ sở dữ liệu.

Tuy nhiên, họ đang liên lạc tại địa phương và đứng sau tường lửa. Theo tôi, không cần SSL ở đây phải không?

Lần duy nhất để sử dụng SSL để mã hóa kết nối cơ sở dữ liệu là giữa một máy chủ web tồn tại trong một máy chủ liên lạc từ xa với một máy chủ cơ sở dữ liệu được đặt ở một nơi khác phải không?

Tôi đã thấy các hướng dẫn về bảo mật trước đó ủng hộ việc bảo mật bằng SSL kết nối cơ sở dữ liệu nhưng không rõ ràng khi nào nên sử dụng nó.

20
Dexter

Dường như hai câu trả lời trước cho câu hỏi này ít nhiều khuyến nghị nên bật SSL, nhưng tôi muốn đề xuất một góc lý luận khác (mặc dù tôi không khuyên bạn không nên bật SSL).

Hai điểm chính trong việc đánh giá xem bạn có cần SSL hay không là (a) SSL bảo vệ bạn chống lại và (b) mô hình luồng là gì: liệt kê các mối đe dọa tiềm ẩn.

SSL/TLS bảo vệ việc vận chuyển thông tin giữa máy khách (trong trường hợp này là máy chủ web của bạn) và máy chủ (trong trường hợp này là máy chủ cơ sở dữ liệu của bạn) khỏi bị giả mạo và nghe lén bởi bất kỳ ai trên mạng ở giữa (bao gồm cả có thể truy cập vào những người đó hai máy).

Để đánh giá xem SSL có hữu ích hay không, bạn cần cho rằng kẻ tấn công đang ở vị trí để thực hiện tấn công SSL được thiết kế để bảo vệ bạn chống lại. Đó là, kẻ tấn công sẽ cần phải ở trong một vị trí để đánh hơi các gói trên mạng hoặc trên cả hai máy.

  • Nếu ai đó ở vị trí đánh hơi các gói từ máy chủ cơ sở dữ liệu, họ có khả năng có quyền truy cập root/admin vào máy chủ đó. Sử dụng SSL/TLS ở giai đoạn đó sẽ không có sự khác biệt.

  • Nếu ai đó ở vị trí để đánh hơi các gói trên mạng giữa máy chủ web và máy chủ cơ sở dữ liệu (không bao gồm các máy đó), sử dụng SSL/TLS sẽ ngăn chúng nhìn/thay đổi nội dung ứng dụng. Nếu bạn nghĩ có thể có khả năng thì điều này là có thể, hãy bật SSL. Một cách để giảm thiểu điều này là sử dụng hai card mạng trên máy chủ web: một cho thế giới bên ngoài và một cho mạng LAN bên trong nơi có máy chủ DB (không có máy nào khác, hoặc theo cách mà bạn có thể coi tất cả chúng là một máy lớn hơn). Mạng này hình thành cụm trang trại tổng thể hoặc cụm (tuy nhiên bạn muốn gọi nó) sẽ được tách biệt về mặt vật lý và chỉ có một điểm vào từ bên ngoài: chính máy chủ web (cùng nguyên tắc cho nút đầu proxy ngược).

  • Nếu ai đó ở vị trí đánh hơi các gói trên nút đầu (máy chủ web), thì có khả năng họ có quyền truy cập root ở đó (các quy trình được chạy bởi người dùng không phải root trên máy, không nên đọc các gói đó không dành cho họ). Trong trường hợp này, dù sao bạn cũng sẽ gặp vấn đề lớn.

    Điều tôi nghi ngờ ở đây là liệu việc bật SSL có thực sự bảo vệ bạn nhiều trong kịch bản này hay không.

    Ai đó có quyền truy cập root trên máy chủ web sẽ có thể đọc cấu hình ứng dụng của bạn, bao gồm cả mật khẩu DB và có thể kết nối với máy chủ DB một cách hợp pháp, thậm chí sử dụng SSL.

    Ngược lại, nếu bạn cho rằng điều này đảm bảo việc sử dụng SSL (bởi vì có thể khó nhìn vào những gì các quy trình thực sự làm hơn là chỉ nhìn vào mạng, ngay cả khi bạn có quyền kiểm soát gốc trên máy), điều này có nghĩa là bạn cũng muốn chuyển sang truyền thông localhost (ví dụ: nếu bạn có các dịch vụ khác trên máy chủ web của mình hoặc trong trường hợp cả máy chủ DB và máy chủ web nằm trên cùng một máy).

Không nhất thiết phải quá thận trọng, nhưng bạn phải đặt câu hỏi của mình trong bối cảnh những kẻ tấn công cũng có thể làm gì nếu chúng ở trong một vị trí để thực hiện một cuộc tấn công chống lại những gì biện pháp bảo mật (SSL) bảo vệ bạn chống lại, và liệu biện pháp bảo mật này có ngăn cản họ đạt được mục tiêu hay không, một lần ở vị trí này.

Tôi nghĩ rằng cửa sổ thực sự khá hẹp ở đó (giả sử mạng back-end của bạn thực sự được bảo mật, về mặt vật lý, không chỉ bởi một số tường lửa giữa một số máy).

21
Bruno

Khi mạng cục bộ bao gồm máy chủ cơ sở dữ liệu và máy khách có thể bao gồm các quy trình khác thì bạn nên mã hóa kết nối giữa hai.

Điều này gần như luôn luôn như vậy, ngay cả khi bạn cho rằng mạng cục bộ không thể truy cập được (bạn không nên), bên cạnh máy khách và máy chủ cơ sở dữ liệu thường có

  1. quản trị viên cần có thể đăng nhập và khắc phục sự cố hoặc cập nhật
  2. người thu thập nhật ký cần lấy các tệp mà không có dữ liệu nhạy cảm và di chuyển chúng đến nơi khác
  3. các trình sao chép cần sao chép nội dung cơ sở dữ liệu để sao lưu ngoài trang web hoặc cung cấp các bảng có độ nhạy thấp lớn cho các hệ thống khai thác dữ liệu
  4. màn hình cần kiểm tra xem những cái khác có còn sống không

Trong số đó, chỉ những người sao chép cần có quyền truy cập vào các bảng có dữ liệu nhạy cảm, nhưng bất kỳ quy trình nào trong số này có thể bị xâm phạm bởi các tác nhân xấu trong bộ phận CNTT của bạn.

Mã hóa tất cả các kênh mang dữ liệu nhạy cảm giúp những người trung thực luôn trung thực, bảo vệ bạn một cách sâu sắc và giúp bạn thu hẹp tìm kiếm khi có vấn đề phát sinh.

10
Mike Samuel

Hãy nhớ rằng bất kỳ ai ở trên cùng một mạng với máy chủ của bạn đều có thể đánh hơi được lưu lượng truy cập hoặc thực hiện một cuộc tấn công trung gian. SSL nên ngăn chặn điều này, giả sử nó được thiết lập đúng. Bạn cũng nên thiết lập tường lửa trên máy chủ cơ sở dữ liệu và chỉ cho phép kết nối từ các địa chỉ IP đáng tin cậy.

Đề nghị của tôi là bật nó lên, sau đó tắt nó chỉ khi bạn nghĩ rằng nó gây ra vấn đề về hiệu suất (hoặc khác). Bằng cách đó, bạn đã cắt giảm các vectơ tấn công của mình xuống đáng kể.

Trong thực tế, chi phí mã hóa SSL qua mạng sẽ là tối thiểu, đặc biệt khi so sánh với tải xử lý các truy vấn SQL. Bạn sẽ đạt được hiệu suất cao hơn bằng cách tối ưu hóa các truy vấn và cấu hình hiệu suất máy chủ của mình hơn là vô hiệu hóa SSL.

4
Polynomial

Giả sử tôi có một máy chủ web do tôi thiết lập và sau đó là máy chủ cơ sở dữ liệu ... giao tiếp cục bộ và đứng sau tường lửa

Bỏ qua một bên thực tế là kiến ​​trúc này tệ về tính khả dụng ...

  • bạn có tin tưởng tất cả mọi người và mọi thứ "đằng sau tường lửa" không?
  • bạn có tin rằng tường lửa của bạn là hoàn hảo?
  • bạn có thể dự đoán rằng bạn sẽ không bao giờ cần kết nối từ xa để hỗ trợ tính khả dụng cao hơn, di chuyển trung tâm dữ liệu của bạn hoặc thực hiện sao lưu?
  • cơ chế xác thực mặc định cho dbms có an toàn đến mức không thể bị phá hủy không?
  • bạn có một quy trình triển khai để đảm bảo thông tin cơ sở dữ liệu không thể bị xâm phạm?

Nếu câu trả lời của bạn cho bất kỳ câu hỏi nào trong số này không phải là có, thì bạn có thể được hưởng lợi từ các đảm bảo bổ sung của việc sử dụng kết nối SSL được cấu hình phù hợp. Chi phí hiệu suất là không đáng kể ngay cả khi không phụ thuộc vào các kết nối liên tục (mặc dù điều này cũng có thể được loại trừ bằng cách định tuyến lưu lượng truy cập thông qua một đường hầm liên tục). Nó chỉ đơn giản là làm việc nếu chi phí cấu hình SSL (một vài giờ làm việc) nhiều hơn trách nhiệm pháp lý.

0
symcbean