WindowsServerで停止できるサービス

# はじめに
- 自社で開発しているサービスに使用している言語がC#中心であったことから、とにかくWindows Serverを構築することが多く、その中で**例えばXboxなど明らかにサーバ用途としては不要なサービス**を止めた方がリソース節約できるよな、ってことで裏で活動してました。
- 幸い、MSさんオフィシャルで止められるサービスを記載したドキュメントがあったので、それをもとに構築する際に停止していたサービスをつらつらっと記載します。
WindowsServer2019で停止できるサービス一覧を記載しました。
    - ただし、**残念なことにWIndows Server2016で更新が止まって**いますので、以降のOSは自己判断でお願いします。幸い今のところ特に問題にはなっていないです。

https://docs.microsoft.com/ja-jp/windows-server/security/windows-services/security-guidelines-for-disabling-system-services-in-windows-server

# WindowsServer2012 R2/WindowsServer2016無効化可能サービス
## 対象サービス名
- 数が非常に多いですが、羅列していきます
```
Diagnostic Policy Service
Diagnostic Service Host
Diagnostic System Host
Distributed Transaction Coordinator
Extensible Authentication Protocol
Function Discovery Provider Host
Function Discovery Resource Publication
IKE and AuthIP IPsec Keying Modules
Interactive Services Detection
IPsec Policy Agent
KtmRm for Distributed Transaction Coordinator
Portable Device Enumerator Service
Problem Reports and Solutions Control Panel Support
```
## 無効化コマンド
```
cmd /c 'sc config "DPS" start= disabled'
cmd /c 'sc config "WdiServiceHost" start= disabled'
cmd /c 'sc config "WdiSystemHost" start= disabled'
cmd /c 'sc config "MSDTC" start= disabled'
cmd /c 'sc config "Eaphost" start= disabled'
cmd /c 'sc config "fdPHost" start= disabled'
cmd /c 'sc config "FDResPub" start= disabled'
cmd /c 'sc config "IKEEXT" start= disabled'
cmd /c 'sc config "UI0Detect" start= disabled'
cmd /c 'sc config "PolicyAgent" start= disabled'
cmd /c 'sc config "KtmRm" start= disabled'
cmd /c 'sc config "WPDBusEnum" start= disabled'
cmd /c 'sc config "wercplsupport" start= disabled'
```

# WindowsServer2019無効化可能サービス(デフォルトで無効になっているサービスも含む)
## 注意点
- WindowsServer2016をベースにこちらでカスタムしていますので、使用に関しては自己責任でお願いします

## 対象サービス名
- 数が非常に多いですが、羅列していきます

```
Diagnostic Policy Service
Diagnostic Service Host
Diagnostic System Host
Distributed Transaction Coordinator
Extensible Authentication Protocol
Function Discovery Provider Host
Function Discovery Resource Publication
IKE and AuthIP IPsec Keying Modules
IPsec Policy Agent
KtmRm for Distributed Transaction Coordinator
Portable Device Enumerator Service
Problem Reports and Solutions Control Panel Support
ActiveX Installer (AxInstSV)
タイム ゾーンの自動更新機能
Bluetooth Support Service
Computer Browser
Downloaded Maps Manager
Geolocation Service
Internet Connection Sharing (ICS)
Link-Layer Topology Discovery Mapper
Microsoft Account Sign-in Assistant
Microsoft App-V Client
Net.Tcp Port Sharing Service
Network Connection Broker
Offline Files
Phone Service
Print Spooler
Printer Extensions and Notifications
Program Compatibility Assistant Service
Quality Windows Audio Video Experience
Routing and Remote Access
Sensor Data Service
Sensor Monitoring Service
Sensor Service
Shell Hardware Detection
Smart Card
Smart Card Device Enumeration Service
SSDP Discovery
Still Image Acquisition Events
Touch Keyboard and Handwriting Panel Service
UPnP Device Host
ユーザー エクスペリエンス仮想化サービス
WalletService
Windows Audio
Windows Audio Endpoint Builder
Windows カメラ フレーム サーバー
Windows Image Acquisition (WIA)
Windows Insider サービス
Windows モバイル ホットスポット サービス
Windows プッシュ通知システム サービス
Windows Search
```

## 無効化コマンド
```
cmd /c 'sc config "DPS" start= disabled'
cmd /c 'sc config "WdiServiceHost" start= disabled'
cmd /c 'sc config "WdiSystemHost" start= disabled'
cmd /c 'sc config "MSDTC" start= disabled'
cmd /c 'sc config "Eaphost" start= disabled'
cmd /c 'sc config "fdPHost" start= disabled'
cmd /c 'sc config "FDResPub" start= disabled'
cmd /c 'sc config "IKEEXT" start= disabled'
cmd /c 'sc config "PolicyAgent" start= disabled'
cmd /c 'sc config "KtmRm" start= disabled'
cmd /c 'sc config "WPDBusEnum" start= disabled'
cmd /c 'sc config "wercplsupport" start= disabled'
cmd /c 'sc config "AxInstSV" start= disabled'
cmd /c 'sc config "tzautoupdate" start= disabled'
cmd /c 'sc config "bthserv" start= disabled'
cmd /c 'sc config "MapsBroker" start= disabled'
cmd /c 'sc config "lfsvc" start= disabled'
cmd /c 'sc config "SharedAccess" start= disabled'
cmd /c 'sc config "lltdsvc" start= disabled'
cmd /c 'sc config "AppVClient" start= disabled'
cmd /c 'sc config "NetTcpPortSharing" start= disabled'
cmd /c 'sc config "CscService" start= disabled'
cmd /c 'sc config "PhoneSvc" start= disabled'
cmd /c 'sc config "wlidsvc" start= disabled'
cmd /c 'sc config "NcbService" start= disabled'
cmd /c 'sc config "PhoneSvc" start= disabled'
cmd /c 'sc config "Spooler" start= disabled'
cmd /c 'sc config "PrintNotify" start= disabled'
cmd /c 'sc config "PcaSvc" start= disabled'
cmd /c 'sc config "QWAVE" start= disabled'
cmd /c 'sc config "RemoteAccess" start= disabled'
cmd /c 'sc config "SensorDataService" start= disabled'
cmd /c 'sc config "SensrSvc" start= disabled'
cmd /c 'sc config "SensorService" start= disabled'
cmd /c 'sc config "ShellHWDetection" start= disabled'
cmd /c 'sc config "SCardSvr" start= disabled'
cmd /c 'sc config "ScDeviceEnum" start= disabled'
cmd /c 'sc config "SSDPSRV" start= disabled'
cmd /c 'sc config "WiaRpc" start= disabled'
cmd /c 'sc config "TabletInputService" start= disabled'
cmd /c 'sc config "upnphost" start= disabled'
cmd /c 'sc config "UevAgentService" start= disabled'
cmd /c 'sc config "WalletService" start= disabled'
cmd /c 'sc config "Audiosrv" start= disabled'
cmd /c 'sc config "AudioEndpointBuilder" start= disabled'
cmd /c 'sc config "FrameServer" start= disabled'
cmd /c 'sc config "stisvc" start= disabled'
cmd /c 'sc config "wisvc" start= disabled'
cmd /c 'sc config "icssvc" start= disabled'
cmd /c 'sc config "WpnService" start= disabled'
cmd /c 'sc config "WSearch" start= disabled'
```

# まとめ
- ひと昔前に世間を騒がせた`PrintNightmare`(Print Spoolerの脆弱性を利用した攻撃)に関して、この対応を実施していたため未然に被害を防ぐことができました
リソース面のメリットに加え、セキュリティの観点からも、不必要なサービスを止めておくと恩恵がありそうです

https://www.trendmicro.com/ja_jp/research/21/i/method-of-an-attack-that-exploits-the-PrintNightmare-vulnerability.html