2010-11-09 67 views
25

Tôi đang làm việc trên trang web bên ngoài (DMZ) cần lấy dữ liệu từ cơ sở dữ liệu sản xuất nội bộ của chúng tôi.Truy cập dữ liệu trong cơ sở dữ liệu sản xuất nội bộ từ máy chủ web trong DMZ

Tất cả các thiết kế mà tôi đã đưa ra đều bị từ chối vì bộ phận mạng sẽ không cho phép kết nối bất kỳ loại nào (WCF, Oracle, v.v.) vào trong từ DMZ.

Các ý kiến ​​cho rằng đã đến từ phía mạng thường rơi vào hai loại -

1) Xuất dữ liệu cần thiết để một máy chủ trong DMZ và xuất khẩu điều chỉnh/ghi chèn cuối cùng bằng cách nào đó, hoặc

2) Thăm dò ý kiến ​​từ bên trong, liên tục yêu cầu một dịch vụ trong DMZ cho dù có bất kỳ yêu cầu nào cần được bảo dưỡng hay không.

Tôi không thích đề xuất 1 vì tôi không thích ý tưởng về cơ sở dữ liệu nằm trong DMZ. Lựa chọn 2 có vẻ giống như một số tiền vô lý của biến chứng thêm cho bản chất của những gì đang được thực hiện.

Đây có phải là giải pháp hợp pháp duy nhất không? Có một giải pháp rõ ràng tôi đang thiếu? Nghị định "Không có kết nối trong từ DMZ" có thực tế không?

Chỉnh sửa: Một dòng tôi thường xuyên nghe là "không có công ty lớn nào cho phép trang web kết nối bên trong để nhận dữ liệu sản xuất trực tiếp. Đó là lý do họ gửi email xác nhận". Đó có thực sự là cách nó hoạt động không?

+0

Đây không phải là yêu cầu phải được hỏi trên www.serverfault.com, bởi vì nó là một câu hỏi quản trị. Nhưng do bounty nó 'không thể được đóng lại ... –

+1

"không có công ty lớn cho phép một trang web để kết nối bên trong để có được dữ liệu sản xuất trực tiếp" là hoàn thành rác –

+0

Tôi đề nghị, cũng như một vài người khác thông qua mod-cờ, rằng điều này sẽ được phục vụ tốt hơn bởi cộng đồng Server Fault.Tôi có thể di chuyển nó nếu bạn muốn. –

Trả lời

2

Đây là những gì bạn có thể làm ... nó hơi căng, nhưng nó sẽ hoạt động ...

Viết dịch vụ nằm trên máy chủ trong DMZ. Nó sẽ lắng nghe trên ba cổng, A, B và C (chọn bất kỳ số cổng nào có ý nghĩa). Tôi sẽ gọi đây là ứng dụng đường hầm DMZ.

Viết một dịch vụ khác sống ở bất kỳ đâu trên mạng nội bộ. Nó sẽ kết nối với ứng dụng đường hầm DMZ trên cổng B. Khi kết nối này được thiết lập, ứng dụng đường hầm DMZ không còn cần phải nghe trên cổng B. Đây là "kết nối điều khiển".

Khi kết nối với cổng A của ứng dụng đường hầm DMZ, nó sẽ gửi yêu cầu qua kết nối điều khiển cho DB mới/kết nối bất kỳ. Ứng dụng đường hầm nội bộ sẽ phản hồi bằng cách kết nối với tài nguyên nội bộ. Khi kết nối này được thiết lập, nó sẽ kết nối trở lại ứng dụng đường hầm DMZ trên cổng C.

Sau khi xác minh một số mã thông báo (phần này tùy thuộc vào bạn), ứng dụng đường hầm DMZ sẽ chuyển dữ liệu qua lại giữa các kết nối nó nhận được trên cổng A và C. Bạn sẽ có một proxy TCP minh bạch được tạo ra từ hai dịch vụ đang chạy trong DMZ và trên mạng nội bộ.

Và một phần tốt nhất, một khi điều này được thực hiện, bạn có thể giải thích những gì bạn đã làm cho bộ phận CNTT của bạn và xem khuôn mặt của họ khi họ nhận ra rằng bạn không vi phạm chính sách bảo mật của họ. . Tôi nói với bạn, họ sẽ ghét điều đó.

+1

Có, nhưng sau đó họ nói rằng chúng tôi không thể làm điều đó, nó trở lại bảng vẽ, và ngân sách bị thổi. Bạn không thể khó khăn khi ai đó có quyền phủ quyết hoàn toàn. – aehiilrs

+6

Sau đó, bạn có thể muốn đi đến cấp cao hơn và nói "nhìn xem, ứng dụng này cần quyền truy cập vào nguồn dữ liệu này ... không có cách nào xung quanh điều đó. Chúng tôi có thể chơi trò chơi bảo mật với CNTT cả ngày, nhưng bạn có muốn dự án này không hoàn thành hay không? " – cdhowie

+1

Sau đó, bạn đi đến người giám sát của bạn và giải thích sự bắt giữ 22 mà bạn đang ở. Bạn đã được yêu cầu làm một công việc, và CNTT đang ngăn cản bạn. Để nó trên đĩa của người khác để tìm hiểu làm thế nào để làm cho nó xảy ra ... heck bạn chỉ là nhà phát triển ... bạn phát triển phần mềm. –

3

Tại sao bạn không sao chép máy chủ cơ sở dữ liệu của mình? Bạn có thể đảm bảo rằng kết nối từ các máy chủ nội bộ đến các máy chủ bên ngoài và không phải là cách khác. Một cách là sử dụng khung đồng bộ hóa ms - bạn có thể xây dựng một dịch vụ cửa sổ đơn giản có thể đồng bộ hóa các thay đổi từ cơ sở dữ liệu nội bộ sang cơ sở dữ liệu bên ngoài của bạn (có thể nằm trên một máy chủ db riêng) và sau đó sử dụng nó trang mạng. Lợi thế là, logic đồng bộ của bạn có thể lọc ra dữ liệu nhạy cảm và chỉ giữ những thứ thực sự cần thiết.Và vì toàn bộ quyền kiểm soát dữ liệu sẽ nằm trong các máy chủ nội bộ của bạn (dữ liệu PUSH thay vì kéo) Tôi không nghĩ rằng nó sẽ có vấn đề với điều đó.

Kết nối được tạo thành không bao giờ ở trong - nó đã hết - nghĩa là không cần mở cổng nào.

+0

Sao chép không được phép vì (từ của họ) nếu ai đó hack máy chủ web và chèn dữ liệu crap/deletes, nó sẽ được nhân rộng ngay lập tức vào db nội bộ. Điều đó nói rằng, tôi sẽ tìm trong khuôn khổ MS Sync bạn đề nghị và xem nếu có thể giải quyết vấn đề của chúng tôi. Cảm ơn! – aehiilrs

+0

Một nhược điểm khác là có một số dữ liệu có thể được coi là cả a) nhạy cảm và b) cần thiết. – aehiilrs

+1

@aehiilrs Roopesh đang nói về nhân rộng PUSH nơi dữ liệu trên máy chủ web không bao giờ được cập nhật trở lại cơ sở dữ liệu gốc, dữ liệu chỉ được đẩy vào nó. Nhưng bạn chính xác về vấn đề dữ liệu nhạy cảm –

42

Tôi xin lỗi, nhưng bộ phận mạng của bạn đang bị bẻ khóa hoặc như thế - rõ ràng họ không hiểu mục đích của DMZ là gì. Tóm lại - có ba "khu vực" - thế giới bên ngoài lớn, xấu xa, thế giới trong sạch và thuần khiết của bạn, và DMZ nổi tiếng, đáng tin cậy, an toàn.

Các quy tắc là:

  1. Connections từ bên ngoài chỉ có thể nhận được đến các host trong DMZ, và trên các cổng cụ thể (80, 443, vv);
  2. Các kết nối từ bên ngoài vào bên trong bị chặn hoàn toàn;
  3. Các kết nối từ bên trong tới DMZ hoặc bên ngoài là tốt và dandy;
  4. Chỉ các máy chủ trong DMZ mới có thể thiết lập kết nối với bên trong, và một lần nữa, chỉ trên các cổng nổi tiếng và được phép.

Điểm bốn là điểm mà họ chưa nắm bắt - chính sách "không có kết nối từ DMZ" bị sai lệch.

Hỏi họ "Hệ thống email của chúng tôi hoạt động như thế nào?" Tôi cho rằng bạn có một máy chủ thư của công ty, có thể trao đổi và các cá nhân có khách hàng kết nối với nó. Yêu cầu họ giải thích cách email công ty của bạn, có quyền truy cập vào email internet, hoạt động và tuân thủ chính sách của họ.

Rất tiếc, nó không thực sự cung cấp cho bạn câu trả lời.

+1

Vâng, tôi đã cố gắng thuyết phục anh chàng hàng đầu của ngày hôm qua. Lý do nó là xấu là bởi vì nếu ai đó hack thông qua ba máy chủ và hai bức tường lửa ở phía trước của db sau đó không có gì ngăn cản họ nhận được tại db prod. – aehiilrs

+1

@aehiilrs: thật không may, đây cũng là lý do không có trang web để bắt đầu. Ý tôi là, họ có thể hack các trang web và dmz và nhận được để lan địa phương của bạn anyway ... – NotMe

+2

Rõ ràng @ sysadmin1138 (trong một cuộc thảo luận "Server Fault" trước đó, diễn ra trong tháng 3 năm 2010) có sự hiểu biết ngược lại của Ken Ray trên "Điểm bốn". Xem http://serverfault.com/questions/125881/should-a-webserver-in-the-dmz-be-allowed-to-access-mssql-in-the-lan nơi sysadmin1138 nói như sau: "_Proper an ninh mạng nói rằng các máy chủ DMZ không nên có quyền truy cập vào mạng 'Trusted'. Mạng Trusted có thể truy cập DMZ, nhưng không phải theo cách khác. Đối với các máy chủ web được hỗ trợ DB như của bạn, đây có thể là một vấn đề. máy chủ cơ sở dữ liệu kết thúc bằng DMZs._ ". – ricmarques

2

Trước khi nói về vấn đề cụ thể của bạn, tôi muốn xử lý Cập nhật mà bạn đã cung cấp.

Tôi chưa từng làm việc cho một công ty "lớn" - mặc dù lớn khó đánh giá mà không có ngữ cảnh, nhưng tôi đã xây dựng phần ứng dụng web cho bộ phận phi lợi nhuận và trường đại học mà tôi từng làm việc. Trong cả hai trường hợp, tôi luôn kết nối với DB sản xuất trên mạng nội bộ từ máy chủ Web trên DMZ. Tôi khá chắc chắn rằng nhiều công ty lớn cũng làm điều này; hãy nghĩ ví dụ về cách thiết lập kiến ​​trúc của Sharepoint - các máy chủ lập chỉ mục, cơ sở dữ liệu, vv, được kết nối với máy chủ web mặt trước nằm trong DMZ.

Cũng thực hành gửi e-mail xác nhận, mà tôi tin rằng bạn đang đề cập đến xác nhận khi bạn đăng ký một trang web thường không xử lý bảo mật. Họ là một phương pháp để xác minh rằng người dùng đã nhập địa chỉ email hợp lệ.

Bây giờ, hãy thoát khỏi vấn đề của bạn. Thật không may, ngoài hai giải pháp bạn trình bày, tôi không thể nghĩ ra cách nào khác để làm điều này. Mặc dù một số điều mà bạn có thể muốn suy nghĩ về:

Giải pháp 1:

Tùy thuộc vào sự nhạy cảm của các dữ liệu mà bạn cần phải làm việc với, giải nén nó vào một máy chủ trên DMZ - cho dù sử dụng một dịch vụ hoặc một số loại phần mềm đồng bộ hóa tự động - đi ngược lại ý thức chung về bảo mật cơ bản. Những gì bạn đã làm là di chuyển dữ liệu từ một máy chủ phía sau một bức tường lửa đến một cái ở phía trước nó. Chúng cũng có thể cho phép bạn truy cập vào máy chủ db nội bộ từ DMZ.

Giải pháp 2:

Tôi không có chuyên gia mạng, vì vậy hãy sửa lại cho tôi nếu tôi sai, nhưng một cơ chế bỏ phiếu vẫn đòi hỏi một số loại thông tin liên lạc từ máy chủ web để thông báo cho các máy chủ cơ sở dữ liệu mà nó cần một số dữ liệu trở lại, có nghĩa là một cổng cần được mở, và một lần nữa bạn cũng có thể yêu cầu họ cho phép bạn truy cập vào cơ sở dữ liệu nội bộ mà không gặp rắc rối, bởi vì bạn chưa thực sự thêm bất kỳ bảo mật bổ sung nào với phương thức này.

Vì vậy, tôi hy vọng điều này sẽ giúp trong ít nhất cung cấp cho bạn một số đối số để cho phép bạn truy cập dữ liệu trực tiếp. Đối với tôi, có vẻ như có nhiều quan niệm sai lầm trong bộ phận mạng của bạn về cách một kiến ​​trúc ứng dụng web được bảo vệ cơ sở dữ liệu an toàn như thế nào.

+1

Vấn đề không phải là thực tế là có giao tiếp, đó là nơi kênh truyền thông được mở. – aehiilrs

1

Nếu không thể áp dụng tất cả các giải pháp phát triển vì hạn chế kỹ thuật hệ thống trong DMZ thì hãy cho chúng bóng.

Đặt trang web của bạn trong mạng nội bộ và cho họ biết 'Bây giờ tôi cần HTTP đến: 80 hoặc HTTPS: 443 kết nối với các ứng dụng đó. Thiết lập những gì bạn muốn: proxy ngược, ISA Server, ngắt giao thức, SSL ... Tôi sẽ điều chỉnh ứng dụng của mình nếu cần. '

Giới thiệu về ISA, tôi đoán chúng có một thiết bị nếu bạn có trao đổi với kết nối bên ngoài.

Rất nhiều công ty đang chọn giải pháp này khi tài nguyên cần được chia sẻ giữa mạng nội bộ và công khai.

Thiết lập mạng cụ thể và mạng nội bộ với các quy tắc bảo mật cao là cách tốt nhất để giúp quản trị, tích hợp và triển khai dễ dàng hơn. Điều dễ hơn được biết đến nhiều, cái được biết là được làm chủ: ít vi phạm an ninh hơn.

Ngày càng có nhiều công cụ hệ thống (như mỏ) thích duy trì mạng nội bộ có 'vi phạm bảo mật' nhỏ hơn HTTP để mở các giao thức và cổng khác.

Nhân tiện, nếu họ biết các dịch vụ WCF, họ sẽ chấp nhận giải pháp này. Đây là giải pháp an toàn nhất nếu được thiết kế tốt.

Cá nhân, tôi sử dụng hai phương pháp sau: Dịch vụ TCP (HTTP hoặc không) và Máy chủ ISA.

2

Tôi chủ yếu là với Ken Ray về việc này; tuy nhiên, dường như có một số thông tin còn thiếu. Hãy xem liệu tôi có nhận được quyền này không:

  1. Bạn có ứng dụng web.
  2. Một phần của ứng dụng web đó cần hiển thị dữ liệu từ một máy chủ sản xuất khác (không phải là máy chủ thường sao lưu trang web của bạn).
  3. Dữ liệu bạn muốn/cần được xử lý bởi một ứng dụng hoàn toàn khác trong nội bộ.
  4. Dữ liệu này rất quan trọng đối với luồng thông thường của doanh nghiệp của bạn và chỉ một bộ giới hạn cần phải có sẵn cho thế giới bên ngoài.

Nếu tôi đang đi đúng hướng, tôi sẽ phải nói rằng tôi đồng ý với bộ phận CNTT của bạn và tôi cũng sẽ không cho phép bạn truy cập trực tiếp vào máy chủ đó.

Chỉ cần chọn tùy chọn 1. Yêu cầu máy chủ sản xuất xuất dữ liệu bạn cần đến vị trí thả thường có thể truy cập. Yêu cầu máy chủ db khác (một trong DMZ) nhận dữ liệu và nhập nó một cách thường xuyên.Cuối cùng, có ứng dụng web của bạn CHỈ nói chuyện với máy chủ db trong dmz.

Cho biết có bao nhiêu người xây dựng trang web trong những ngày này, tôi cũng sẽ rất lo lắng khi chỉ cần mở một cổng sql từ dmz đến máy chủ web được đề cập. Khá thẳng thắn tôi có thể bị thuyết phục để mở kết nối nếu tôi được đảm bảo rằng 1. bạn chỉ sử dụng procs được lưu trữ để truy cập dữ liệu bạn cần; 2. thông tin tài khoản được sử dụng để truy cập cơ sở dữ liệu đã được mã hóa và hoàn toàn bị hạn chế để chỉ chạy các procs đó; 3. những procs có không sql năng động và được giới hạn để lựa chọn; 4. mã của bạn được xây dựng ngay.

Một người CNTT thông thường có thể sẽ không đủ điều kiện để trả lời tất cả các câu hỏi đó. Và nếu cơ sở dữ liệu này là từ một bên thứ ba, tôi sẽ đặt cược bạn có thể mất hỗ trợ nếu bạn đã bắt đầu truy cập nó từ bên ngoài nó là ứng dụng bình thường.

+0

Ok, thử trả lời lần nữa. 1) Có. 2) Không, ứng dụng web này là phần công khai của ứng dụng nội bộ. Cùng một dữ liệu. 3) xem 2. 4) Có, nhưng có những tình huống mà các máy bên trong và bên ngoài đang cạnh tranh cho những điểm đến đầu tiên. – aehiilrs

+0

Đối với kết nối SQL - thật đáng buồn, toàn bộ điều này đã xuất hiện khi chúng tôi cố gắng thay đổi cách thực hiện chính xác điều đó (ứng dụng đã được thực hiện theo cách đó nhiều năm trước). Thay vào đó, chúng tôi muốn nhấn một dịch vụ web nội bộ, điều này sẽ cho phép chúng tôi xác thực hơn trên máy chủ đáng tin cậy hơn máy chủ web trong khi cho phép chúng tôi loại bỏ hoàn toàn kết nối cơ sở dữ liệu trực tiếp. Chúng tôi đã khá ngạc nhiên khi phản ứng là "Không, thay đổi mọi thứ hoàn toàn và cuộn mã chuyển dữ liệu của riêng bạn." Là nó thực sự hợp lý để liên tục thăm dò ý kiến ​​từ bên trong để yêu cầu dịch vụ từ bên ngoài? – aehiilrs

+0

@aehiilrs: Trong trường hợp đó, nhân viên CNTT của bạn đang bị rạn nứt. Nếu nó giúp, tôi đối phó với một anh chàng CNTT như thế này một vài năm trước đây. Tôi đã dành 2 tháng liên tục đi đến ông chủ chia sẻ của chúng tôi với, "Tôi rất muốn thực hiện điều này, nhưng tôi không thể vì những hạn chế của bozo" vô ích. Cuối cùng, boss + bozo bị sa thải và đột nhiên chúng tôi có thể hoàn thành công việc của mình. Không phải là một câu trả lời tôi biết, chỉ cần nói rằng tôi cảm thấy đau đớn của bạn. – NotMe

12

Tôi là kiến ​​trúc sư bảo mật tại một công ty tài chính 50 tài sản. Chúng tôi đã có những cuộc trò chuyện tương tự. Tôi không đồng ý với nhóm mạng của bạn. Tôi hiểu sự giận dữ của họ, và tôi hiểu rằng họ muốn một giải pháp tốt hơn nhưng hầu hết mọi nơi không chọn lựa với những lựa chọn tốt hơn (do sự thiếu hiểu biết về phần của họ [tức là kẻ mạng không phải bạn]).

Hai tùy chọn nếu chúng được thiết lập khó khăn về điều này: Bạn có thể sử dụng một giải pháp proxy SQL như greensql (Tôi không làm việc cho họ, chỉ biết chúng) chúng chỉ là greensql dot com.

Cách tiếp cận mà họ đề cập đến sử dụng "tổ chức lớn nhất" nhất là mô hình web theo tầng. Trường hợp bạn có một máy chủ web giao diện người dùng (được truy cập bởi công chúng nói chung), một tầng giữa (lớp ứng dụng hoặc dịch vụ nơi các quá trình thực tế xảy ra) và tầng cơ sở dữ liệu. Tầng giữa là thứ duy nhất có thể nói chuyện với tầng cơ sở dữ liệu. Theo tôi, mô hình này là tối ưu cho hầu hết các tổ chức lớn. NHƯNG được nói, hầu hết các tổ chức lớn sẽ chạy vào một sản phẩm do nhà cung cấp cung cấp không hỗ trợ tầng giữa, họ phát triển mà không có tầng giữa và quá trình chuyển đổi yêu cầu tài nguyên phát triển mà họ không phải phụ thuộc để phát triển các dịch vụ web trung cấp, hoặc hoàn toàn đơn giản, không có một nhà hảo tâm nào ở một số công ty đi theo con đường đó.

Đó là một khu vực màu xám, không có quyền rắn hoặc sai trong vấn đề đó, vì vậy nếu họ đang nói trong điều kiện cuối cùng thì họ rõ ràng là sai. Tôi hoan nghênh nhiệt huyết của họ, như một chuyên gia an ninh, tôi hiểu họ đến từ đâu. NHƯNG, chúng tôi phải cho phép doanh nghiệp hoạt động an toàn. Đó là challange và găng tay tôi luôn luôn cố gắng và ném xuống bản thân mình. làm cách nào tôi có thể phân phối khách hàng của mình (nhà phát triển, quản trị viên, người dùng doanh nghiệp của tôi) những gì họ muốn (trong lý do và nếu tôi nói với ai đó không, tôi luôn cố gắng cung cấp giải pháp thay thế đáp ứng hầu hết nhu cầu của họ).

Thành thật mà nói, đó phải là cuộc hội thoại mở. Đây là nơi tôi nghĩ rằng bạn có thể nhận được một số phòng, yêu cầu họ đe dọa mô hình nguy cơ mà họ đang tìm cách để giảm thiểu. Yêu cầu họ cung cấp các giải pháp thay thế cho phép các ứng dụng web của bạn hoạt động. Nếu họ nói rằng họ không thể nói chuyện, sau đó đưa các onus vào họ để cung cấp một giải pháp. Nếu họ không thể thì bạn mặc định nó hoạt động. Trang web mà bạn mở các kết nối từ dmz đến db CHỈ cho các cổng đã được phê duyệt. Hãy cho họ biết rằng DMZ là để cung cấp các dịch vụ bên ngoài. Các dịch vụ bên ngoài không tốt nếu không có dữ liệu nội bộ cho bất kỳ thứ gì nhiều hơn các giải pháp truyền tệp có khả năng.

Chỉ hai xu của tôi, hy vọng nhận xét này sẽ hữu ích. Và cố gắng dễ dàng với các anh em an ninh của tôi. Chúng tôi có một số ít kinh nghiệm sai lầm trong đàn của chúng tôi mà bám víu vào một số cách làm cũ. Khi thế giới phát triển mối đe dọa phát triển và cách tiếp cận của chúng tôi để giảm thiểu.

Các vấn đề liên quan