ApplicationPoolIndetity (프로세스ID 설정)
http://skyblue09876.tistory.com/entry/IIS-75-ApplicationPoolIdentity-%EC%97%AD%ED%99%9C-%EB%B0%8F-%EA%B8%B0%EB%8A%A5-1?category=555679
https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities
If you are running IIS 7.5 on Windows Server 2008 R2, or a later version of IIS, you don't have to do anything to use the new identity. For every application pool you create, the Identity property of the new application pool is set to ApplicationPoolIdentity by default. The IIS Admin Process (WAS) will create a virtual account with the name of the new application pool and run the application pool's worker processes under this account by default.
To use this virtual account when running IIS 7.0 on Windows Server 2008, you have to change the Identity property of an application pool that you create to ApplicationPoolIdentity. Here is how:
- Open the IIS Management Console (INETMGR.MSC).
- Open the Application Pools node underneath the machine node. Select the application pool you want to change to run under an automatically generated application pool identity.
Windows 2008 R2, IIS 7.5 이상은 디폴트 값이
ApplicationPoolIdentity로 설정되어 있으며 해당 값은 최고 보안수준을 자랑하므로 양호함
보안적으로 우수한 수준
1. ApplicationPoolIdentity (Windows 2008 R2, IIS 7.5 이상 기본 값으로 설정됨)
2. LocalService
3. NetworkService (Windows 2008 이하, IIS 6.0, 7.0에서 기본 값으로 설정됨)
4. LocalSystem
기본적으로 IIS 6 나 IIS 7 의 작업자 프로세스는 NETWORKSERVICE 계정으로 실행되며, NETWORKSERVICE 계정은 내장 윈도우 신원입니다. 이 계정에는 비밀번호가 필요없으며 비교적 낮은 수준의 사용자 권한만 부여되어 있습니다. 보안적인 측면에서 볼 때, 낮은 수준의 사용자 권한을 가진 계정으로 서비스를 실행하는 것은 매우 좋은 습관입니다. 그러면, 악의적인 사용자가 소프트웨어의 버그를 이용하여 전체 시스템 권한을 획득하는 것을 미연에 방지할 수 있기 때문입니다.
그럼에도 불구하고 이 방식의 가장 큰 문제점은, NETWORKSERVICE 계정으로 실행되는 서비스가 역시 같은 계정으로 실행되는 다른 서비스들에 여전히 영향을 미칠 수 있다는 점입니다. 기본적으로 IIS 작업자 프로세스에서는 서드-파티 코드들이 (클래식 ASP, ASP.NET, PHP 코드 등) 실행되므로, IIS 작업자 프로세스는 다른 윈도우 시스템 서비스들과 격리되어야하며 별도의 신원으로 실행되는 것이 바람직합니다. 이를 위해서, 윈도우 운영 체제 수준에서 "가상 계정" 이라는 이름의 새로운 기능을 제공하여 IIS 로 하여금 각각의 응용 프로그램 풀들을 위한 자신만의 신원 계정을 생성할 수 있도록 지원해줍니다
=> 그래서 7.5부터 ApplicationPoolIdentity가 새로 추가됨
ApplicationPoolIdentity - 기본적으로 응용 프로그램 풀 ID 계정이 선택됩니다. 응용 프로그램 풀 ID 계정은 응용 프로그램 풀을 시작할 때 동적으로 만들어지므로, 응용 프로그램에 대한 최고의 보안을 제공합니다.
(IIS 7.5 이상부터 제공)
LocalService - Local Service 계정은 Users 그룹의 구성원이고 Network Service 계정과 동일한 사용자 권한이 있지만 로컬 컴퓨터로만 제한됩니다. 응용 프로그램 풀의 작업자 프로세스가 해당 프로세스가 실행되는 웹 서버 외부에 액세스할 필요가 없는 경우에 이 계정을 사용합니다. 로컬 컴퓨터에서 권한이 없는 사용자 역할을 하고 모든 원격 서버에 익명 자격 증명을 제시하는 계정입니다.
- Local Service 계정은 각각의 시스템에서 실행되는 서비스 계정을 위한 사용자 계정으로 다른 사용자 계정을 변경시키거나 시스템을 셧다운시키거나, 기타 관리 권한을 조작할 수 있는 권한을 가지고 있지 않습니다.
(기본적으로 Alerter, Plug and Play, Remote Registry Service, Smart Card, SSDP Discovery, TCP/IP NetBIOS Helper Service, Telnet, Uninterruptible Power Supply, WebClient 서비스들은 Local Service 계정을 사용합니다.)
LocalSystem - Local System 계정은 모든 사용자 권한을 갖고 있으며 웹 서버에서 Administrators 그룹에 속합니다. 로컬 시스템 계정을 사용하면 웹 서버에 보안상 심각한 문제가 발생할 수 있으므로 가능한 한 사용하지 않아야 합니다.
고급 권한 수준을 가진 계정
(수많은 시스템 서비스들과 서비스 애플리케이션들은 높은 특권 레벨을 가진 계정하에서 실행될 필요가 있으며, 따라서 대부분의 서비스들은 Administrator나 Domain Admin 권한을 가진 사용자 계정이나 전지 전능한 권한을 가진 Local System 계정하에서 수행됩니다. 만일 어떤 서비스가 버퍼 넘침(buffer overflow)과 같은 보안 취약성을 가지고 있다면 침입자는 서버를 조작하여 서비스 계정이 침입자에게 무한의 권력을 부여하게 만들 수 있습니다.)
NetworkService - 네트워크 서비스 계정은 Users 그룹의 구성원이고 응용 프로그램을 실행하는 데 필요한 사용자 권한이며, 컴퓨터 계정의 자격 증명을 사용하여 Active Directory 기반 네트워크 전체에서 상호 작용할 수 있습니다.
- Network Service 계정은 복수의 시스템에서 실행되어야 할 필요가 있을 때 사용하는 도메인 사용자 계정이다.
(기본적으로 DHCP Client, Distributed Transaction Coordinator, DNS Client, License Logging Service, Performance Logs and Alerts, Remote Procedure Call(RPC) Locator 서비스들은 Network Service 계정을 사용합니다.)