다양한 서비스를 실행하는 일부 Windows 서버가 있는데 때때로 해당 서비스가 중지되는 상황이 있습니다. 이러한 서비스를 모니터링하기 위해 ServiceController를 사용하여 의심되는 서비스를 살펴보고 현재 상태를 확인하는 Windows 서비스를 작성했습니다. 문제의 서버에 대한 로컬 관리자 권한이 있는 계정에서 실행되도록 새 서비스를 구성하면 제대로 작동하지만 해당 시스템의 서비스를 보는 것 이외의 권한을 부여하므로 보안 관점에서는 이상적이지 않습니다. 이상적으로는 모든 서버(범위 내의 서버는 향후 확대될 목록임)에서 서비스를 "확인"하고 조사할 수 있지만 해당 서버에 대한 다른 권한은 없는 AD 계정을 만들고 싶습니다. 가능하다면 그러한 계정의 설정은 무엇입니까?
이 설명이 다소 모호했다면 사과드립니다. 따라서 제가 작성한 서비스가 ServerA에 설치될 것이며 ServiceController를 사용하여 ServerB의 "MSSQLSERVER" 서비스, ServerC의 "MSSQL$OTHERINSTANCE" 서비스를 조사할 수 있어야 한다고 가정해 보겠습니다. ServerD에서 "SOMEOTHERSERVICE" 및 "RUNNINGOUTOFIDEAS" 서비스를 제공합니다. 이 외에도 조사할 서비스 목록은 ServerZ의 MS SQL Server 데이터베이스에 보관되어 있으므로 계정은 해당 서버의 해당 데이터베이스에 연결할 수 있어야 합니다. SQL Server 보안에서 사용자로 표시되는 표준 AD 계정입니다.
누구든지 어떤 아이디어가 있습니까? 어떤 제안이라도 미리 감사드리며, 시간을 내어 읽어주셔서 감사합니다. 참고: "왜 이런 일을 하는 걸까요? 당신은 해야 할 일"과 같은 프레임 챌린지입니다.저것" 더 나은 방법이 없다고 확신하고 항상 배우는 것이 즐겁기 때문에 직접적인 답변만큼 환영받을 것입니다.
답변1
모든 시스템 서비스를 원격으로 모니터링하려면 계정에 scmanager에 대한 다음 액세스 권한이 필요합니다.
현재 scmanager ACL에 삽입해야 하는 문자열은 다음과 같습니다.
(A;;CCLCRPRC;;;<AccountSID>)
A: Allow
CC - SC_MANAGER_CONNECT - remotely connect
LC - SC_MANAGER_ENUMERATE_SERVICE - list all services
RP - SC_MANAGER_QUERY_LOCK_STATUS - interogate the status of each
RC - STANDARD_RIGHTS_READ - read the permissions of scmanager and services
ACL은 다음 위치에 저장됩니다.HKLM:\SYSTEM\CurrentControlset\Control\ServiceGroupOrder\Security
현재 ACL이 scmanager에 있는지 확인하고 위 문자열을 적절한 위치(예: 중간, 임의 ACL 끝, 시스템 ACL 앞)에 포함하려고 합니다.
D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CC;;;S-1-15-3-1024-xxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx)(A;;CCLCRPRC;;;<SID goes Here>)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)
배포 방법과 자동화된 배포를 위한 시스템이 무엇인지에 따라 sc.exe
명령을 활용하는 것이 더 쉬울 수 있습니다. sc.exe로 관리하는 "서비스"는 실제로는 서비스가 아니며 서비스 제어 관리자(scmanager)입니다.
sc.exe sdset scmanager "D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CC;;;S-1-15-3-1024-xxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx)(A;;CCLCRPRC;;;<SID goes Here>)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"
이는 소수가 아닌 모든 서비스의 상태 및 권한을 쿼리할 수 있는 권한을 계정에 부여하므로 기술적으로 과도한 액세스입니다.