Windows-Windows 서비스에 로컬 서비스 및 / 또는 네트워크 서비스 계정 사용


18

Windows OS의 특정 디렉토리에있는 파일을 모니터하는 윈도우 서비스를 만들었습니다. 파일이 감지되면 서비스는 일부 파일 I / O를 수행하고 파일을 읽고 하위 디렉토리를 작성하는 등의 작업을 수행합니다.이 서비스는 데이터베이스 연결을 사용하여 다른 서버에 연결합니다. 내 계획은 서비스를 기본 "로컬 서비스"계정으로 실행하는 것입니다. "로컬 서비스"계정이 기본적으로 수행하지 않는 쓰기 / 읽기 권한을 허용해야하므로 폴더에있는 "로컬 서비스"계정에 대해 "모든 권한"권한을 명시 적으로 설정하겠습니다. 읽기 / 쓰기

나는 위의 것이 좋다고 생각합니다. 제 질문은 읽고 쓰는 폴더에 대해 모든 권한을 가진 "네트워크 서비스"역할을 설정해야합니까? "네트워크 서비스"계정 설정이 필요한 경우 내 서비스가 다른 서버에 대한 데이터베이스 연결을 사용하기 때문에 궁금합니다.

"네트워크 서비스"계정의 기능이 잘못 이해되었을 수 있습니다.

답변:


18

NT AUTHORITY\NetworkService계정은 액세스 제어를위한 장치의 자격 증명이 필요 도메인에있는 다른 컴퓨터와 통신 할 때에만 필요합니다. 간단한 인터넷 / 네트워크 액세스에는 필요하지 않습니다. Active Directory 도메인의 특정 목적으로 만 필요합니다.

또한 NT AUTHORITY\LocalService계정 의 전체 요점은 시스템에 대한 최소 권한이 있다는 것입니다. 더 많은 권한을 부여하면 시스템에서 낮은 권한 수준으로 실행되도록 설계된 시스템의 많은 서비스의 보안이 저하됩니다. 서비스에 그 이상의 권한이 필요한 경우 필요한 권한으로 새 계정을 만들고 서비스 속성 의 로그온 탭 에서 해당 계정을 설정해야합니다 . 프로그래밍 방식으로 수행 할 수도 있습니다.

시스템에 무제한으로 액세스 할 수 있는 NT AUTORITY\LocalSystem계정을 사용하여 실행할 수도 있지만 LocalService제공하는 보안 강화를 위해 계정 을 사용하려고한다고 가정 합니다.


1
한 폴더 (및 하위 폴더)에서 LocalService 계정에 모든 권한을 부여하면 다른 서비스의 보안이 어떻게 저하됩니까?
contactmatt

1
@ user19185 보안 그 자체를 낮추지는 않지만 공격 프로필을 높입니다. 서비스 LocalService가 손상된 경우 서비스 를 위해 열어 놓은 항목에 액세스 할 수있는 LocalService반면 일반적으로 아무것도 액세스하지 않습니다. 이것은 70 년대 이후 표준 컴퓨터 보안 운영 절차였습니다 .
Patches

1
일반 관리자 계정보다 더 많은 권리와 권한 을 LocalSystem가지고 있음을 지적하고 싶습니다 .
Stein Åsmul

@Stein Åsmul : 수정 해 주셔서 감사합니다! 이것을 반영하여 답변을 업데이트했습니다.
패치

2

이전 답변은 질문을 직접 해결하는 것으로 보이지 않았으므로 추가 할 것이라고 생각했습니다.

  1. 내 계획은 서비스를 기본 "로컬 서비스"계정으로 실행하는 것입니다. 읽고 쓰는 폴더의 "로컬 서비스"계정에 대해 "모든 권한"권한을 명시 적으로 설정하겠습니다. 나는 위의 좋은 계획이라고 생각합니다.

개인적으로, 나는이 계획에 큰 문제가 보이지 않습니다. BUILTIN을 사용하면 다음 중 하나를 선택할 수 있습니다.

  1. LOCALSYSTEM으로 실행 –이 서비스가 손상된 경우 공격자는 Everything 을 즉시 소유 합니다.
  2. LOCALSERVICE로 실행-이 서비스 또는이 계정으로 실행되는 다른 많은 서비스가 손상된 경우 공격자는 하나의 추가 디렉터리에 액세스 할 수 있습니다. *

두 번째 옵션을 사용하려면 몇 개의 ACL을 추가하는 것이 좋습니다. 예. 권한이 낮지 만 보안에 매우 민감한 서비스를위한 가장 안전한 옵션은 맞춤형의 낮은 권한 서비스 계정으로 실행하는 것입니다. 그러나 배포하는 모든 서비스에 대해 새 계정 / 관리 암호를 만들지 않는 한 중요하지 않은 사소한 작업에 LocalService를 사용하는 것은 끔찍한 일이 아닙니다. 디렉토리 나 데이터베이스에있는 내용과 같은 고려 사항에 따라 책임있는 결정을 내려야합니다.

다시 말하지만, 최소 권한 원칙에 따라 실제로 충분하지 않은 Full Control경우 에만 설정해야합니다 Modify.

2. 내 질문은 읽고 쓰는 폴더에 대해 모든 권한을 가진 "네트워크 서비스"역할을 설정해야합니까? "네트워크 서비스"계정 설정이 필요한 경우 내 서비스가 다른 서버에 대한 데이터베이스 연결을 사용하기 때문에 궁금합니다.

데이터베이스에 Windows 통합 / SSPI 로그인이 필요한 경우, 예를 들어 RunAs 및 디렉터리 권한과 같은 모든 곳에서 NetworkService (또는 도메인 서비스 계정)를 사용해야합니다. computername $ 또는 도메인 계정에이 데이터베이스에 대한 액세스 권한을 부여했다고 가정하십시오. 그렇게하는 것이 의심 스럽기 때문에 정상적인 사용자 이름 / 암호 인증을 사용하면 LocalService로 모든 것을 수행 할 수 있어야합니다. 해당 디렉토리에 대해 하나의 계정 권한 만 부여하면되며 둘 다 RunA에서 사용하는 것이 아닙니다.

3. "네트워크 서비스"계정의 기능이 잘못 이해되었을 수 있습니다.

LocalService / NetworkService 는 로컬 컴퓨터에서 거의 동일한 계정입니다. 차이점은 주로 네트워크에서 수행 할 수있는 작업입니다. NS는 네트워크에 실제 (컴퓨터) 계정으로 나타나기 때문에 일부 네트워크 리소스에 액세스 할 수 있습니다. 그러나 LS는 ANONYMOUS로 표시되므로 네트워크의 모든 것이 거부됩니다.

그건 그렇고, 당신은 서비스가 아닌 예약 작업을 사용해야합니다.

* , 이후 비스타로 인해 서비스 격리 , 하나 개의 손상된 LocalService를 공정은 쉽게 서로를 공격 할 수 없다. 각 LocalService / NetworkService 서비스 프로세스 / 인스턴스는 Windows 2003과 달리 고유 한 로그온 세션 SID (고유 소유자)를받습니다. 그러나 이것이 완벽하고 파일 및 리소스에 대한 DACL 취약점을 완전히 완화시킬 수는 없습니다. 제한된 SID 및 쓰기 제한 토큰 이이 컨텍스트에서 언급됩니다.


2

다른 답변은 로컬 서비스 사용에 대한 의견을 확인합니다. 요약하자면, 네트워크 서비스의 추가 Active Directory SSPI 기능이 필요하지 않은 경우 로컬 서비스는 서비스와 함께 사용하는 것이 좋습니다.

특정 폴더에 대한 읽기 / 쓰기 액세스를 제한하려면 일반 로컬 서비스 계정에 액세스하는 것보다 낫습니다. 다른 사람들이 지적했듯이 문제는 로컬 서비스로 실행되는 다른 모든 서비스에 대한 읽기 / 쓰기 액세스 권한을 부여하며 모든 서비스가이를 수행하면 점차 로컬 서비스가 점점 더 중요한 리소스에 액세스 할 수 있다는 것입니다.

해결책은 특정 서비스 SID를 사용하여 폴더를 ACL로 만드는 것입니다. 자신의 서비스 프로세스에만 서비스 SID가 연결되어 있으므로 리소스가 더욱 제한됩니다. 를 사용하여 서비스 SID를 볼 수 있습니다 sc showsid <service name>. 서비스 SID는 서비스 이름에서 생성되므로 모든 시스템에서 동일합니다.

서비스에서 서비스 SID 사용을 활성화하려면 사용 ChangeServiceConfig2SERVICE_SID_INFO세트 구조 SERVICE_SID_TYPE_UNRESTRICTED. 또한 SERVICE_SID_TYPE_RESTRICTED서비스 SID에서 명시 적으로 허용 된 리소스에 대한 쓰기 액세스 만 허용하는 훨씬 제한된 SID를 얻도록 설정할 수도 있습니다 .

이 링크에는 서비스 SID 및 제한된 서비스 SID에 대한 고급 설명이 있습니다. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and- 2008 / hh125927 (v = ws.10)

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