Kiểm tra xem một người dùng nhất định có một đặc quyền nhất định


16

Cho một cặp người dùng và một đặc quyền tôi cần xác định xem người dùng có đặc quyền trên máy chủ hay không. Sau đây là đúng trong thiết lập của tôi:

  • Máy chủ là một phần của miền nhưng không phải là bộ điều khiển miền
  • Có một số lĩnh vực có mối quan hệ tin cậy trong cơ sở hạ tầng
  • Đôi khi người dùng (cục bộ, tên miền hoặc từ một tên miền khác) có thể thuộc về một nhóm địa phương bởi vì họ thuộc một nhóm khác (tên miền hoặc địa phương) thuộc về một nhóm địa phương, trái ngược với thuộc về nhóm trực tiếp.

Kịch bản ví dụ cho điểm cuối cùng:

  • User1 thuộc nhóm TeamA trong DomainA
  • DomaimA \ TeamA là thành viên của DomainB \ SpecialAccess
  • DomainB \ SpecialAccess là thành viên của DomainB \ DomainAdmins
  • Cuối cùng, DomainB \ DomainAdmins thuộc nhóm Quản trị viên cục bộ
  • Nhóm Quản trị viên cục bộ có SeRemoteInteractiveLogonRight privateelege

Bây giờ Nếu tôi có đầu vào DomainA \ User1 và SeRemoteInteractiveLogonRight, tôi cần đến câu trả lời Có hoặc Không. Vì vậy, tôi mở Chính sách cục bộ trên máy, lưu ý nhóm nào được liệt kê theo quyền tôi cũng quan tâm, sau đó đi đến người quản lý máy chủ và xem những gì ở các thành viên nhóm và sau đó tôi cần xem thành viên nào của bất kỳ nhóm nào trong các nhóm này và như thế.

Tôi có một cảm giác ruột rằng nó có thể dễ dàng hơn. Tôi thực sự phấn khích khi tìm thấy tiện ích AccessChk Nó kéo dài cả ba phút khiến tôi phát hiện ra rằng nó chỉ liệt kê mối quan hệ trực tiếp, vì vậy người dùng trong một nhóm sẽ không được liệt kê.

Bây giờ tôi đoán rằng có thể kết hợp các kết quả từ AccessChk một số cách để tôi có thể kiểm tra xem người dùng có thuộc bất kỳ nhóm nào mà AccessChk trả về hay không, nhưng cho rằng đó không phải là một tên miền mà là một vài trong số đó không chắc chắn làm thế nào để tiếp cận điều này. Ngoài ra đầu ra AccessChk dường như không phân biệt giữa một nhóm và người dùng.

EDIT : Với tinh thần không rơi vào bẫy vấn đề XY, điều tôi thực sự cần làm là đảm bảo rằng trên một nhóm máy chủ không có tài khoản người dùng cụ thể nào được sử dụng làm danh tính nhóm ứng dụng IIS có các đặc quyền SeInteractiveLogonRight hoặc SeRemoteInteractiveLogonRight. Tôi không có vấn đề gì với phần IIS, nhưng bước cuối cùng của việc kiểm tra tài khoản dựa trên đặc quyền là điều mà tôi đang vật lộn để tìm cách kiểm tra đơn giản. Tôi cũng muốn tự động hóa việc kiểm tra vì đây là việc cần phải được thực hiện thường xuyên.


6
Điều này nghe có vẻ như là một công việc cho ... Bộ chính sách kết quả (RSoP)! technet.microsoft.com/en-us/l
Library / cc758010% 28v = WS.10% 29.aspx

1
@zespri - Câu trả lời của tôi là rác và tôi đã xóa nó. Quyền người dùng SeInteractiveLogonRight và SeRemoteInteractiveLogonRight được xử lý khác với các đặc quyền "thông thường" và có vẻ như việc báo cáo về chúng sẽ gặp vấn đề. Nếu tôi đưa ra một giải pháp cho bạn, tôi sẽ đăng một câu trả lời khác, nhưng bây giờ tôi chẳng có gì cả.
Evan Anderson

1
@Davidw - RSoP có vấn đề ở chỗ các mặc định của Chính sách bảo mật cục bộ sẽ không được phản ánh trong đầu ra. Vì vậy, mọi mục nhập "Không được định cấu hình" sẽ chỉ hiển thị là "Không được định cấu hình" và bạn sẽ không thực sự thấy những gì hiệu trưởng được Chính sách bảo mật địa phương cấp quyền. Cuối cùng, ngay cả khi bạn nhận được một danh sách các hiệu trưởng từ Chính sách nhóm, bạn sẽ bị kẹt khi mở rộng tư cách thành viên nhóm (cũng có khả năng liên tên miền) để sao chép chức năng của hệ điều hành. Điều này thực sự đã đưa ra một câu hỏi khó khăn hơn nhiều so với tôi mong đợi.
Evan Anderson

1
@EvanAnderson Chính xác! Khi tôi được yêu cầu ước tính sẽ mất bao lâu, tôi dường như là một nhiệm vụ đơn giản. Và sau một vài ngày googling và thử những thứ khác nhau ... không có gì. Hiện tại, kế hoạch của tôi là ghim thông tin GetTokenIn information với lớp thông tin mã thông báo TokenPriv đặc biệt Tất nhiên tôi cần tìm hiểu trước tiên làm thế nào để giữ mã thông báo. Tuyến đường này có vẻ hứa hẹn nhất vào lúc này.
Andrew Savinykh

@zespri - NtOpenProcessToken () có lẽ là cách tốt nhất để nhận mã thông báo. (Hãy xem leeholmes.com/blog/2006/07/21/ Ấn )
Evan Anderson

Câu trả lời:


1

Mã thông báo truy cập không có thông tin về quyền, chỉ về đặc quyền.

Những gì bạn cần làm là đây:

  • Tìm quy trình công nhân IIS tương ứng với nhóm ứng dụng của bạn. Vì bạn biết danh tính nhóm ứng dụng nên dễ dàng bằng cách liệt kê tất cả các quy trình với tên quy trình worker và lọc cái có danh tính. Nếu có nhiều hơn một, bạn có thể sử dụng bất kỳ.
  • Sử dụng GetTokenIn information với lớp thông tin Tokengroup, không phải là TokenPriv đặc quyền trên mã thông báo quy trình. Kết quả sẽ cung cấp cho bạn tất cả các nhóm chuyển tiếp, danh tính cũng thuộc về. Điều này có nghĩa là ngay cả những người gián tiếp.
  • Bây giờ bạn có thể lặp qua các nhóm này và gọi LsaEnum CảAccountRights trên mỗi nhóm và đối chiếu thông tin. Điều này sẽ cung cấp cho bạn những gì bạn muốn.

Những điều trên phụ thuộc vào sự tồn tại của quá trình (và mã thông báo) tương ứng với danh tính tài khoản. Trong kịch bản của bạn, điều này không phải là một vấn đề. Trong trường hợp xảy ra sự cố, bạn có thể thử và sử dụng tra cứu Active Directory cho thuộc tính được tính toán của Token-Groups . Bài viết này liệt kê một vài cách tiếp cận làm thế nào để thực hiện điều này.

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.