이전 답변은 질문을 직접 해결하는 것으로 보이지 않았으므로 추가 할 것이라고 생각했습니다.
- 내 계획은 서비스를 기본 "로컬 서비스"계정으로 실행하는 것입니다. 읽고 쓰는 폴더의 "로컬 서비스"계정에 대해 "모든 권한"권한을 명시 적으로 설정하겠습니다. 나는 위의 좋은 계획이라고 생각합니다.
개인적으로, 나는이 계획에 큰 문제가 보이지 않습니다. BUILTIN을 사용하면 다음 중 하나를 선택할 수 있습니다.
- LOCALSYSTEM으로 실행 –이 서비스가 손상된 경우 공격자는 Everything 을 즉시 소유 합니다.
- 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 및 쓰기 제한 토큰 이이 컨텍스트에서 언급됩니다.