Tại sao xác thực hệ điều hành được coi là bảo mật kém cho cơ sở dữ liệu Oracle?


29

Oracle đang phản đối việc xác thực hệ điều hành theo Hướng dẫn bảo mật cơ sở dữ liệu của Oracle , cho biết

Xin lưu ý rằng tham số REMOTE_OS_AUTHENT không được dùng trong Cơ sở dữ liệu Oracle 11g Phiên bản 1 (11.1) và chỉ được giữ lại để tương thích ngược.

Ngoài ra, hầu hết các thông tin và công cụ bảo mật đều coi xác thực hệ điều hành (bên ngoài) là một vấn đề bảo mật. Tôi đang cố gắng để hiểu tại sao đây là trường hợp. Dưới đây là một số lợi thế tôi thấy về xác thực hệ điều hành:

  1. Không có các ứng dụng Xác thực hệ điều hành phải lưu trữ mật khẩu trong nhiều ứng dụng khác nhau với mỗi lỗ hổng bảo mật và mô hình bảo mật riêng.
  2. Xác thực tên miền đã phải được bảo mật bởi vì nếu không thì bảo mật cơ sở dữ liệu chỉ làm chậm truy cập vào cơ sở dữ liệu, nhưng không thể ngăn chặn nó.
  3. Người dùng chỉ cần nhớ một mật khẩu tên miền có thể được tạo để tạo mật khẩu miền an toàn dễ dàng hơn so với họ có thể tạo mật khẩu cơ sở dữ liệu kém an toàn hơn khi số lượng cơ sở dữ liệu khác nhau mà họ phải kết nối tăng lên.

Bạn thấy Oracle đã phản đối xác thực bên ngoài ở đâu?
Hang Justin

1
@Justin Cave Tôi sẽ cập nhật câu hỏi với thông tin đó.
Leigh Riffel

2
Cảm ơn các cập nhật. Tuy nhiên, để rõ ràng, Oracle không từ chối xác thực bên ngoài, nó không tán thành xác thực bên ngoài từ xa thường kém an toàn hơn nhiều (như Gaius thảo luận bên dưới)
Justin Cave

Câu trả lời:


16

Hãy xem xét kịch bản sau đây:

  1. Có một người dùng Unix được đặt tên gaiustrên máy chủ Oracle với xác thực bên ngoài, vì vậy trong Oracle có một người dùng tương ứng được gọi ops$gaius. Khi đăng nhập vào hệ vỏ, tôi cũng có thể đăng nhập thẳng vào lược đồ Oracle của mình và các công việc định kỳ của tôi cũng không cần mật khẩu được nhúng trong tập lệnh.
  2. Xác thực hệ điều hành từ xa được cho phép, với giả định rằng LAN an toàn 100% và khách hàng có thể tin cậy (giống như rlogin/ rshđược sử dụng để được phép thông thường)
  3. Kẻ tấn công đưa máy tính xách tay của mình vào mạng LAN bằng mọi cách, biết rằng tôi làm việc ở đó và tạo một người dùng cục bộ trên máy tính xách tay của họ được gọi gaiusvà chạy SQL * Plus với tư cách là người dùng đó
  4. Oracle thấy (tức là OSUSERtrong V$SESSION) là gaiusvà đăng nhập người dùng từ xa nhưops$gaius

Đó không phải chỉ đến tức cười dễ giả mạo, nhưng đội mũ hay giễu cợt tôi, Oracle không thể thực hiện bất kỳ tiền hơn bán bạn của họ ưa thích single sign-on sản phẩm ... Trong đó bằng cách này không thực hiện đầy đủ tất cả các điểm bạn tăng như ưu điểm của hệ điều hành -level auth. Hai mật khẩu tốt hơn một là hoàn toàn giả mạo; hầu hết mọi người sẽ đặt chúng giống nhau (dù sao không có cơ chế nào trong Oracle để ngăn chặn điều này).

Nguyên tắc chung là cực kỳ khó bảo vệ trong phần mềm khi kẻ tấn công có quyền truy cập vật lý. Và không bao giờ tin tưởng khách hàng.


2
Nó thậm chí còn tồi tệ hơn thế. Xem orahaq 'Tại sao tài khoản OPS $ có rủi ro bảo mật trong môi trường máy khách / máy chủ?' (họ đổ lỗi cho các cửa sổ, nhưng bạn nói đúng, đó là bất cứ điều gì trên mạng)
Joe

3
Làm thế nào để máy chủ có một yếu tố tên miền windows vào đây? tức là kẻ tấn công sẽ phải nối máy tính của họ vào miền để có tài khoản bao gồm tên miền hoặc kẻ tấn công có thể mô phỏng sự hiện diện của tên miền mà không cần phải thực sự tham gia vào máy tính của họ không?
Leigh Riffel

Tôi đoán rằng ban đầu nó được viết vào thời điểm tất cả các máy chủ là Unix và tất cả các máy tính để bàn đều là Windows
Gaius

3
@Leigh - Bạn có thể làm cho xác thực hệ điều hành từ xa an toàn hơn với các máy khách Windows bằng cách đặt OS_AUTHENT_PREFIX thành một miền Windows đáng tin cậy. Điều đó đòi hỏi máy khách từ xa phải (hoặc dường như) trên miền đáng tin cậy đó. Điều đó làm tăng đáng kể thanh trên một "máy tính cắm tầm thường" vào một cổng dự phòng, thêm một người dùng cục bộ và bạn đang "tấn công" nhưng nó vẫn khá dễ bị tấn công.
Hang Justin

1
so sánh và đối chiếu với nếu nó đang thực hiện xác thực AD / Kerberos thực tế và lấy một vé từ người dùng và xác minh nó với KDC, mà tôi đoán là SqlServer sẽ làm gì khi được đặt để sử dụng xác thực Windows?
araqnid

8

Nó làm tăng các điểm thất bại duy nhất và mở rộng bề mặt rủi ro của dữ liệu của bạn.

Kẻ tấn công giành được quyền truy cập vào hệ thống, với Xác thực hệ điều hành, sẽ có quyền truy cập vào cơ sở dữ liệu. Bằng cách yêu cầu quyền truy cập an toàn hơn vào cơ sở dữ liệu, kẻ tấn công tiềm năng phải leo thang các đặc quyền của chúng trên hệ thống bị xâm nhập để có quyền truy cập root hoặc orory, thay vì bất kỳ người dùng nào.

Vấn đề này là một chức năng của truy cập bên ngoài vào cơ sở dữ liệu. Nếu không có quyền truy cập bên ngoài và máy được bảo mật hoàn toàn thì câu hỏi về quyền là phải tranh luận. Tuy nhiên, nếu nhà phát triển có quyền truy cập, quyền người dùng ở cấp độ hệ điều hành sẽ tăng phạm vi của các thảm họa bảo mật tiềm ẩn.

Cân nhắc sử dụng quyền truy cập nhiều người để hạn chế phạm vi vi phạm bảo mật và cung cấp cho bất kỳ người dùng, ứng dụng hoặc khách hàng nào quyền truy cập mà họ cần mà không cần phải tạo tài khoản cấp hệ điều hành cho mọi trường hợp.


Tôi thấy, vì vậy để đơn giản hóa - hai yêu cầu tên người dùng / mật khẩu an toàn hơn một -. Điểm của bạn nghe có vẻ hợp lý.
Leigh Riffel

Đây là một câu trả lời không chính xác - vấn đề không phải là xác thực bên ngoài mà là xác thực bên ngoài từ xa . Tôi sẽ giải thích dưới đây.
Gaius

@Gaius Việc xác thực hệ điều hành bên ngoài sẽ cực kỳ hạn chế đến mức vô dụng nếu nó không ở xa? Bạn có nói rằng Oracle không phản đối việc xác thực bằng HĐH, mà chỉ phản đối việc xác thực HĐH từ một máy tính từ xa?
Leigh Riffel

@Leigh - Trường hợp sử dụng chính để xác thực hệ điều hành của các tài khoản cục bộ là dành cho các tác vụ kiểu DBA trong đó bạn có một loạt các tập lệnh shell chạy trên máy chủ cơ sở dữ liệu cần truy cập vào các tài khoản rất mạnh trên máy chủ cơ sở dữ liệu. Xác thực hệ điều hành cho phép bạn tránh việc có mật khẩu cấp DBA không được mã hóa trong các tập lệnh shell đó.
Hang Justin

Các công việc hàng loạt @Justin nói chung, được triển khai dưới dạng các kịch bản shell hoặc bất cứ thứ gì, trong các crons riêng lẻ
Gaius

4

Gaius đã chỉ ra lý do tại sao xác thực hệ điều hành từ xa (trái ngược với xác thực hệ điều hành vanilla nơi bạn cho phép người dùng máy cục bộ truy cập cơ sở dữ liệu mà không chỉ định mật khẩu riêng) là tương đối không an toàn.

Tôi hy vọng rằng Oracle đang đi theo hướng này vì họ muốn khuyến khích mọi người sử dụng người dùng doanh nghiệp (hoặc bộ quản lý danh tính chính thức) thay vì người dùng xác thực hệ điều hành từ xa. Người dùng doanh nghiệp có những lợi thế giống như người dùng đã xác thực hệ điều hành từ xa nhưng Oracle thực sự đang ra ngoài và đánh máy chủ Active Directory của bạn để xác thực người dùng. Bạn nhận được cùng một dấu hiệu về lợi ích mà không cần rời khỏi kiểm tra bảo mật cho máy khách.


Xác thực LDAP có thể mở một hộp giun khác ... Tôi sẽ đăng câu trả lời dài hơn.
Joe

+1 Cảm ơn bạn đã chỉ ra Bảo mật người dùng doanh nghiệp. Chúng tôi đã xem xét Bảo mật Nâng cao và điều này làm cho nó trở nên hấp dẫn hơn.
Leigh Riffel

4

Bạn đặc biệt chỉ ra xác thực kiểu nhận dạng, nhưng tôi cũng muốn chỉ ra rằng các phương pháp khác để buộc cơ sở dữ liệu hoặc bất kỳ thông tin đăng nhập nào khác vào thông tin đăng nhập của HĐH đều tệ như vậy. (có thể là tệp mật khẩu cục bộ, LDAP hoặc bất cứ thứ gì để lưu trữ thông tin xác thực)

Nếu bạn cho phép các kết nối từ xa đến cơ sở dữ liệu (hoặc máy chủ web hoặc bất cứ điều gì đang thực hiện xác thực), một số HĐH sẽ bỏ qua các quy tắc có thể được đặt để gây khó khăn cho các tài khoản bắt buộc (ví dụ: chặn IP nơi các nỗ lực thất bại đến từ; khóa người dùng trong một khoảng thời gian sau một số lượng chim ưng, v.v.). Thông thường, các quy tắc này được gắn vào sshdkhông phải là toàn bộ hệ thống xác thực.

Vì vậy, nếu ai đó có thể kết nối với cơ sở dữ liệu / máy chủ web / bất cứ điều gì từ xa, họ có thể buộc mật khẩu, vì cơ sở dữ liệu không có xu hướng có cùng cơ chế để làm chậm các nỗ lực, sau đó tìm kiếm thông tin cần thiết.


2
Tôi không chắc chắn tôi làm theo lý do ở đây. Nếu bạn có Oracle xác thực chống lại LDAP, bạn sẽ phải phá LDAP để lấy mật khẩu - sẽ không có bản sao băm mật khẩu cục bộ nào để ép buộc như đối với người dùng Oracle thông thường. Nếu bạn lo ngại về những kẻ tấn công đánh bại xác thực LDAP của bạn, có lẽ bạn có vấn đề lớn hơn so với cách bạn xác thực người dùng Oracle. Và thật dễ dàng để định cấu hình Oracle để khóa tài khoản sau một số lần thử thất bại, hạn chế các địa chỉ IP được phép, v.v. Thực tế, phần lớn trong số đó là hành vi mặc định trong 11g.
Hang Justin

@Justin: chỉ là vấn đề nếu bạn buộc nó để thông tin đăng nhập vào HĐH giống như thông tin đăng nhập vào cơ sở dữ liệu (hoặc máy chủ web, v.v.). Và có vẻ như Oracle đã nhận được xác thực tốt hơn so với lần cuối tôi sử dụng nó, nhưng hầu hết các cơ sở dữ liệu khác thì không. (và Apache cũng không, vì vậy người dùng MacOS X Servers nên trao đổi mod_auth_applemod_auth_digest_applecho các phiên bản mặc định, mặc dù tôi đã không kiểm tra nếu sự cố vẫn còn tồn tại trong 10.6)
Joe
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.