Có rủi ro khi có một máy chủ cơ sở dữ liệu và máy chủ web trên cùng một máy không?


8

Có vẻ như cuộc sống sẽ đơn giản để chạy máy chủ cơ sở dữ liệu trên cùng một máy như máy chủ web, nhưng chúng ta có phải chịu một rủi ro lớn trong ba mươi năm không?

Môi trường sẽ là máy chủ Windows 2008, Postgresql (phiên bản mới nhất, có thể là 9.0 khi ra mắt) và Apache 2.


Nó phụ thuộc. Bạn có thể cho biết thêm chi tiết về kịch bản cụ thể mà bạn đang xem xét?
K. Brian Kelley

Câu trả lời:


7

Không cần thiết.

Giả sử máy chủ web của bạn bị xâm nhập, kẻ tấn công vẫn sẽ có được thông tin đăng nhập để truy cập cùng cơ sở dữ liệu, bất kể họ chạy trên máy chủ nào. Rốt cuộc, máy chủ cơ sở dữ liệu vẫn sẽ cần phải được cấu hình để cho phép yêu cầu hợp pháp từ máy chủ web.

(Giả sử các biện pháp bảo mật hợp lý như tại mysqld không chấp nhận đăng nhập root không có mật khẩu từ localhost.)

Điều đó đang được nói, bạn vẫn có thể muốn chạy một máy chủ cơ sở dữ liệu riêng biệt. Lý do cho điều đó có liên quan đến hiệu suất, khả năng mở rộng, vv


3
Tôi đồng ý rằng một vấn đề lớn hơn sẽ là hiệu năng mà bạn đạt được khi chạy cả hai trên cùng một máy.
ChrisF

5

Tôi không đồng ý với các áp phích tuyên bố rằng đây không phải là vấn đề bảo mật và đây là lý do:

  • Dịch vụ mặt trước của bạn nên có bề mặt tấn công nhỏ nhất có thể . Đây là lý do chính để sử dụng proxy và tường lửa đảo ngược và để giữ các dịch vụ và chương trình không cần thiết tránh xa các máy chủ không yêu cầu chúng hoạt động. Đây là lý do tại sao các máy chủ web là mục tiêu phổ biến nhất cho việc tăng cường bảo mật.
  • Máy chủ web của bạn không nên có quyền thượng đế đối với hệ thống cơ sở dữ liệu của bạn. Do đó, việc thỏa hiệp máy chủ web cũng không thỏa hiệp với máy chủ cơ sở dữ liệu. Đối với người mới bắt đầu, tài khoản mà máy chủ web sử dụng để truy cập cơ sở dữ liệu không nên có quyền quản trị cục bộ đối với hộp SQL, các quyền của tài khoản đó phải được giới hạn hoàn toàn đối với quyền của cơ sở dữ liệu. Thứ hai, trong các quyền SQL đó, nó phải được vận hành theo nguyên tắc đặc quyền tối thiểu . Ví dụ, hộp web của bạn không thể khởi tạo cơ sở dữ liệu mới trong ví dụ. Lý tưởng nhất, hộp web của bạn sẽ không có khả năng bỏ các bảng hoặc xóa các hàng khỏi bất kỳ bảng nào mà nó hoàn toàn không phải. Vì vậy, trong trường hợp thỏa hiệp trong thiết lập 2 tầng được cấu hình đúng, tác động của kẻ tấn công sử dụng thông tin đăng nhập SQL bị giới hạn trong phạm vi.

1
Tôi không nghĩ ai đó nói rằng giải pháp hai hộp không an toàn hơn. Tuy nhiên, câu hỏi là liệu rủi ro đó có phải là, để trích dẫn câu hỏi "lớn". Câu trả lời rõ ràng là phụ thuộc vào hoàn cảnh - chẳng hạn, tôi sẽ không điều hành một trang web ngân hàng trực tuyến trên một máy. Nhưng một máy chủ Web bị khóa đúng cách, một khi đã bị xâm nhập, sẽ không có quyền truy cập nhiều hơn hoặc ít hơn vào máy chủ cơ sở dữ liệu của nó so với trước khi bị xâm phạm và nguyên tắc đó không phụ thuộc vào việc giải pháp nằm trên hai máy hay một. Nếu điều đó không đúng, đã đến lúc kiến ​​trúc lại hệ thống.
BMDan

Tôi không theo logic của bạn. Nếu bạn thỏa hiệp một máy chủ web và lấy quyền root cho máy đó, bạn đã có mọi thứ trên máy đó. Nếu bao gồm toàn bộ cơ sở dữ liệu của bạn với tất cả dữ liệu của nó, thì mọi thứ đều bị xâm phạm. Nhưng nếu bạn có 2 máy chủ riêng biệt, thì việc thỏa hiệp hoàn toàn máy chủ web, ở bất kỳ mức độ nào, sẽ chỉ giúp bạn truy cập cấp dữ liệu vào dữ liệu mà chính máy chủ web có thể truy cập được.
Chris Thorpe

3

Nó thực sự phụ thuộc vào mô hình bảo mật của máy chủ Web và DB của bạn (nghĩa là phần mềm), cũng như mức độ tường lửa / kiểm soát truy cập / IDP mà bạn thực thi trên hai máy chủ riêng biệt.

Tất cả những thứ khác đều bằng nhau, có lẽ nên tách hai người ra thì tốt hơn. Tuy nhiên, trên thực tế, ít nhất là trong môi trường LAMP, miễn là bạn đang sử dụng Apache riêng tư (nếu bạn không chắc chắn, đừng lo lắng, bạn sẽ không) và không sử dụng đăng nhập gốc vào MySQL trong ứng dụng web của bạn, và bạn không tiếp xúc với tcp / 3306 với thế giới bên ngoài, bạn không thực sự đạt được nhiều bảo mật bằng cách di chuyển cái này sang cái khác trên một miếng silicon khác. Bạn có được hiệu suất và lợi ích khả năng gỡ lỗi, mặc dù.

Câu hỏi của bạn theo kiểu dường như đòi hỏi một câu trả lời tuyệt đối, nhưng không có thêm thông tin (tối thiểu, những gì mà máy chủ OS và web / DB chúng ta đang nói đến), thật khó để đưa ra một thông tin.


1
+1 Bảo mật cơ bản và thực tiễn tốt nhất là đủ cho hầu hết dữ liệu.
Chris S

Chúng tôi sẽ chạy: Windows Server 2008 và Postgresql 8.4 (hoặc 9.0 khi phát hành), Apache 2
CLJ

0

Tôi không thấy nhiều rủi ro bảo mật bổ sung khi đặt cơ sở dữ liệu và máy chủ web trên cùng một phần cứng. Nếu máy chủ web bị vi phạm, dữ liệu vẫn có thể truy cập được. Bảo mật không phải là lý do điển hình cho việc phân tách các tầng.

Trong cả hai trường hợp, bạn muốn đảm bảo rằng máy chủ cơ sở dữ liệu đang lắng nghe trên các cổng không chuẩn, sẽ chỉ trả lời các yêu cầu từ máy chủ web và tường lửa chỉ cho phép các yêu cầu http / s đến máy chủ web và không có cổng hoặc địa chỉ nào khác .

Tuy nhiên, tách chúng là một cách thực hành tốt .. mỗi máy chủ dễ quản lý và định cấu hình hơn và bạn có thể xử lý các lỗi, sự cố, xây dựng lại, các vấn đề về hiệu suất, v.v. Vì vậy, bạn có thể xem xét hai máy chủ ảo trên cùng một phần cứng, sau đó có thể được tách ra khi hiệu năng hoặc công suất yêu cầu.


0

Tôi sẽ không - nhưng đó là tôi.

Nó phụ thuộc vào những gì ở phía trước hộp của bạn (ví dụ như tường lửa, bộ cân bằng tải, v.v.) và mức độ "chặt chẽ" của chúng, dữ liệu thực tế là gì (tức là bây giờ - tác động đến dữ liệu công khai ở đầu kia, bí mật quốc gia ở đầu kia) , cho dù có bất kỳ tác động hiệu suất nào đến việc kết hợp chúng, sức mạnh của mạng giữa cả hai (tức là tường lửa giữa các tầng) và chất lượng của việc làm cứng hệ điều hành / ứng dụng sẽ được áp dụng.

Nếu bạn không mong đợi hệ thống này phải xử lý quá tải, một điều bạn có thể cân nhắc là ảo hóa hệ thống thành hai VM riêng biệt; một cho mỗi chức năng - có thể với một VM tường lửa chỉ có phần mềm thứ ba giữa chúng. Điều này có nghĩa là ngay cả khi ai đó bẻ khóa máy chủ web của bạn thì họ cũng phải bẻ khóa máy chủ cơ sở dữ liệu và, nếu được bao gồm, một VM tường lửa trung gian. Tất nhiên, điều này sẽ làm giảm hiệu năng hệ thống tổng thể nhưng ít nhất sẽ an toàn hơn ở một mức độ nào đó và cũng có thể giúp ích nếu tải của bạn tăng lên yêu cầu thiết kế hai máy chủ vì bạn chỉ cần chuyển một VM sang máy thứ hai. Sản phẩm ESXi miễn phí của VMWare có thể thực hiện việc này khá dễ dàng và đã có các VM tường lửa miễn phí được đóng gói sẵn để thực hiện nếu bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.