주어진 사용자에게 주어진 권한이 있는지 확인하십시오


16

한 쌍의 사용자와 권한이 주어지면 사용자에게 서버에 대한 권한이 있는지 확인해야합니다. 내 설정에서 다음이 사실입니다.

  • 서버는 도메인의 일부이지만 도메인 컨트롤러는 아닙니다
  • 인프라에 신뢰 관계가있는 여러 도메인이 있습니다.
  • 때때로 사용자 (로컬, 도메인 또는 다른 도메인의 사용자)는 그룹에 직접 속한 것이 아니라 로컬 그룹에 속하는 다른 그룹 (도메인 또는 로컬)에 있다는 장점으로 인해 로컬 그룹에 속할 수 있습니다.

마지막 요점에 대한 예제 시나리오 :

  • User1은 DomainA의 TeamA 그룹에 속합니다
  • DomaimA \ TeamA는 DomainB \ SpecialAccess의 구성원입니다.
  • DomainB \ SpecialAccess는 DomainB \ DomainAdmins의 구성원입니다.
  • 마지막으로 DomainB \ DomainAdmins는 로컬 관리자 그룹에 속합니다.
  • 로컬 관리자 그룹에는 SeRemoteInteractiveLogonRight 권한이 있습니다.

이제 입력 DomainA \ User1 및 SeRemoteInteractiveLogonRight가있는 경우 예 또는 아니오로 응답해야합니다. 따라서 컴퓨터에서 로컬 정책을 열고 관심있는 그룹에 대해 나열한 항목을 확인한 다음 서버 관리자로 이동하여 그룹 구성원의 구성원을 확인한 다음 해당 그룹의 그룹 구성원을 확인해야합니다. 등등.

나는 그것이 더 쉬울 수 있다고 생각합니다. AccessChk 유틸리티를 찾았을 때 정말 기뻤습니다. 3 분 동안 지속되어 직접적인 관계 만 나열되어 그룹 내의 사용자가 나열되지 않습니다.

이제 AccessChk의 결과를 어떻게 결합하여 사용자가 AccessChk가 반환하는 그룹에 속하는지 확인할 수 있지만 단일 도메인이 아니라 그중 일부임을 감안할 수 있습니다. 어떻게 접근 해야할지 모르겠습니다. 또한 AccessChk 출력은 그룹과 사용자를 구별하지 않는 것 같습니다.

편집 : XY 문제 함정에 빠지지 않기 위해 실제로해야 할 일은 서버 그룹에서 IIS 응용 프로그램 풀 ID로 사용되는 특정 사용자 계정이 SeInteractiveLogonRight 또는 SeRemoteInteractiveLogonRight 권한을 갖지 않도록하는 것입니다. IIS 부분에는 문제가 없지만 권한에 대해 계정을 확인하는 마지막 단계는 간단한 확인 방법을 찾는 데 어려움을 겪고 있습니다. 나는 또한 정기적으로 수행해야 할 일이기 때문에 수표를 자동화하고 싶습니다.



1
@zespri-내 대답은 쓰레기이며 삭제했습니다. SeInteractiveLogonRight 및 SeRemoteInteractiveLogonRight 사용자 권한은 "일반"권한과 다르게 처리되며이를보고하는 데 문제가있는 것 같습니다. 내가 당신을위한 해결책을 제시하면 다른 답변을 게시 할 것이지만 지금은 아무것도 얻지 못했습니다.
Evan Anderson

1
@Davidw-RSoP는 로컬 보안 정책 기본값이 출력에 반영되지 않는다는 문제가 있습니다. 따라서 "구성되지 않음"항목은 "구성되지 않음"으로 표시되며 로컬 보안 정책에 의해 어떤 주체에게 권한이 부여되는지 실제로는 알 수 없습니다. 마지막으로 그룹 정책에서 프린시 펄 목록을 가져 오더라도 OS 기능을 복제하기 위해 그룹 멤버십을 확장 할 수 있습니다 (도메인 간 교차 가능성도 있음). 이것은 실제로 내가 예상했던 것보다 훨씬 더 어려운 질문으로 판명되었습니다.
Evan Anderson

1
트윗 담아 가기 시간이 얼마나 걸릴지 예측하라는 요청을 받았을 때 간단한 작업 인 것 같습니다. 며칠 동안 인터넷 검색을하고 다른 일을 시도한 후 ... 아무것도 없습니다. 현재 내 계획은 TokenPrivileges 토큰 정보 클래스를 사용 하여 GetTokenInformation 을 호출 하는 것입니다. 물론 토큰 자체를 얻는 방법을 먼저 알아야합니다. 이 경로는 현재 가장 유망한 것으로 보입니다.
앤드류 Savinykh

@zespri-NtOpenProcessToken ()은 아마도 토큰을 얻는 가장 좋은 방법 일 것입니다. ( leeholmes.com/blog/2006/07/21/… )
Evan Anderson

답변:


1

액세스 토큰에는 권한에 대한 정보가 없으며 권한에 대한 정보 만 있습니다.

당신이해야 할 일은 이것입니다 :

  • 앱 풀에 해당하는 IIS 작업자 프로세스를 찾습니다. 작업자 프로세스 이름으로 모든 프로세스를 열거하고 ID가있는 프로세스를 필터링하여 쉽게 수행해야하는 앱 풀 ID를 알고 있기 때문입니다. 둘 이상이 있으면 아무 것도 사용할 수 있습니다.
  • 프로세스 토큰의 TokenPrivilege가 아닌 TokenGroup 정보 클래스와 함께 GetTokenInformation을 사용하십시오. 결과적으로 모든 전이 그룹에 정체성이 속합니다. 이것은 심지어 간접적 인 것을 의미합니다.
  • 이제 이러한 그룹을 반복하고 각 그룹에서 LsaEnumerateAccountRights 를 호출 하고 정보를 수집 할 수 있습니다. 이것은 당신이 원하는 것을 줄 것입니다.

위의 내용은 계정 ID에 해당하는 프로세스 (및 토큰)의 존재에 의존합니다. 시나리오에서 이것은 문제가되지 않습니다. 이것이 문제가되는 시나리오에서는 토큰 그룹 계산 된 속성에 대해 Active Directory 조회를 시도하고 사용할 수 있습니다 . 이 기사 에서는이를 해결하는 방법에 대해 설명합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.