Windows系統服務面面觀(上)
作者: 賴榮樞
http://www.goodman-lai.idv.tw
系統服務位居NT家族作業系統的重要角色,這類的程式通常沒有使用者操作介面,大多在幕後默默執行,因此使用者可能會忽略了這類程式的存在;絕大多數伺服端軟體都是以這種方式執行,並藉由TCP/IP(即適當的協定和通訊埠)與用戶端或其他伺服端通訊,而這也更為凸顯了系統服務的重要性。
系統服務的確影響Windows甚鉅,您可能在討論系統安全的書籍讀過類似這樣的話:「為了Windows系統安全,應該關閉不必要的系統服務」;或許您也曾經在說明Windows系統效能的文件看過類似的說明:「為了提高Windows執行效能,您可以關閉不必要的系統服務」。
系統服務能不能關閉、該不該關閉,端視您的電腦需不需要系統服務所提供的功能,也就是說,不同角色、身處不同環境的電腦,所需要的系統服務也就不同;例如網域伺服器所需要的系統服務,與檔案伺服器就有些為差異。因此本文希望能列舉、說明常用的系統服務,以作為使用者調校Windows的參考資料。
何謂系統服務
常用的系統服務
未完待續
Service這個字在Windows世界出現的相當頻繁,相對的,中譯的「服務」也經常可見於中文的Windows世界。因此在正式說明本文之前,必須先對本文意欲探討的「系統服務」作個清楚的說明。
本文指稱的「系統服務」,是指由SCM(service control manager,服務控制管理員)所執行、控制的程式。這種程式通常稱為Windows Services,也因源起於Windows NT,因此之前稱為NT Services,而且只有NT血緣的Windows才支援這種類型的程式(Windows 2000/XP/2003都支援,但Windows 95/98/Me則不支援)。
系統服務是由Windows系統的SCM控制,使用者可以利用圖形操作介面或命令列,透過SCM控制系統服務的啟動、暫停、繼續執行、結束;例如系統管理工具的「服務」(services.msc),就是經常用來操控系統服務的MMC(Microsoft Management Console)工具,而Net指令搭配Start、Stop、Pause、Continue,則可以從命令列環境操控系統服務。系統服務是由SCM啟動,執行之初必須向SCM註冊,而SCM則會以登錄資料庫維護系統服務的相關資訊(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services)。
系統服務可以在任何使用者登入系統之前,就從系統開機時自動執行,就算開機之後沒有使用者登入Windows系統,系統也可以自動執行系統服務。也就是因為系統服務不需要使用者登入系統亦能執行,因此需要在背景持續執行、且與系統層級功能有關的軟體,通常就會實作成系統服務。
系統服務程式通常會有三個名稱(以Windows Time為例):一個是程式執行檔的檔案名稱,例如Svchost.exe;第二個是用來顯示,因此也稱為「顯示名稱」或friendly name(例如Windows Time);第三個通常是用在命令列操控,也稱為「服務名稱」或system name(以此例為W32Time)。一般來說,一支系統服務程式可能內附了好幾個系統服務,而因為系統服務程式在執行之初需要向系統的SCM註冊,因此SCM能瞭解程式裡的細節,所以若是以GUI管理工具設定系統服務的選項,管理工具能透過SCM顯示、設定各個系統服務;但若要以命令列指令操控,就需要指定系統服務的「服務名稱」。
系統服務有三種啟動類型:
自動(Automatic):系統服務會隨電腦啟動而自動執行。
手動(Manual):系統服務「不」會隨電腦啟動而自動執行,但可以由使用者或其他程式啟動執行。
已停用(Disabled):系統服務無法被啟動。
只要系統服務不是設定成「已停用」,都可以由使用者或其他程式調整其執行狀態,包括啟動(Start)、停止(Stop,也就是結束)或繼續(Resume)、暫停(Pause,尚未結束,還留在記憶體)。
要注意的是,系統服務是一種程式的規格,因此其他的廠商也可以利用這種規格來實作自家的軟體。再者,不同版本Windows所內建的系統服務也會有所不同。
每個系統服務也都有其登入的身份,而不同的身份可能會有不同的執行權。此外,系統服務也會互相依存;例如假設A和B相互依存,若停用A,那麼B也無法啟動。如果系統服務的登入身份權限不足,或者停用了執行其他系統服務需要的系統服務,都會影響系統服務的正常執行,而如果系統服務的執行出了問題,通常都必須利用事件檢視器觀閱錯誤訊息。
以下我將簡要說明常用的Windows系統服務(版本則以Windows Server 2003為主,也會穿插若干Windows XP的系統服務),這些說明能作為您是否要停用系統服務的參考。括號裡的是系統服務的服務名稱(SCM對服務名稱是不分大小寫),而我也會列出伺服端系統服務所使用的協定以及通訊埠。此外,以下所列舉的系統服務包含了Windows內建(例如Alerter)、額外安裝了Windows內建的功能才會出現(例如Microsoft POP3 Service),或者額外安裝了伺服器軟體才會出現(例如MSSQLSERVER),而且有些系統服務適用於用戶端電腦,有些是伺服端專屬,有些則是兩者都有。
Alerter(Alerter):這個系統服務與Messenger(不是微軟的即時通訊軟體)類似,因此一起說明。這兩個可算是古老的系統服務了,它們使用相同的方式提供簡易的網路訊息傳遞功能,例如Messenger可以讓Net Send指令將文字訊息傳到另一部電腦(不過Net Send及Net Name等指令已沒有作用),而Alerter的原始目的是讓系統管理員將系統管理的警示傳給其他電腦。但是這兩個系統服務的功能太陽春,而且有安全疑慮,因此許多版本的Windows Service Pack都會停用這兩個系統服務,而且Windows Server 2003預設也已停用兩個系統服務(您也應該停用)。
Application Layer Gateway Service(ALG):網際網路連線共用(ICS)和Windows防火牆需要這個系統服務,Windows Server 2003的預設啟動類型是手動。這個系統服務不只能讓網路協定通過Windows防火牆,還能讓網路協定於ICS之後運作;ALG會開啟通訊埠並更改封包裡的通訊埠、IP位址等資料。ALG是以外掛的方式協助特定的網路協定與Windows防火牆和ICS共同運作,也就是說,各種網路協定就可能需要不同的ALG外掛。
Application Management(AppMgmt):Windows 2000開始提供的軟體安裝服務需要這個系統服務(例如透過網路將軟體「指派」、「發行」給用戶端,或者從用戶端將軟體移除)。Windows Server 2003的預設啟動類型是手動。
ASP.NET State Service(aspnet_state):這個系統服務會儲存階段(session)資料,讓ASP.NET可以利用socket作行程外(out-of-process)的通訊。系統預設並不會安裝這個系統服務,除非您為網站伺服器安裝了ASP.NET。
Automatic Updates(Wuauserv):用在「自動更新」的系統服務,讓電腦能夠自動連上微軟的網站檢查、下載、安裝修補程式;不建議將此系統服務設為停用。
Background Intelligent Transfer Service(BITS):這個系統服務能利用HTTP 1.1在網路閒置時於背景傳送資料,Windows Update會用到這項系統服務。不建議設為停用。
Certificate Services(CertSvc):這個系統服務是用來發行、管理數位憑證,並且是以RPC和DCOM與用戶端通訊;諸如S/MIME(Secure/Multipurpose Internet Mail Extensions)、SSL(Secure Sockets Layer)、EFS(Encrypting File System)、IPSec(IP Security)、智慧卡等眾多的應用登需要數位憑證。
協定
通訊埠
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
ClipBook(ClipSrv):讓Windows能透過網路共享剪貼簿資料的系統服務。因為有安全疑慮,因此應該停用。Windows Server 2003預設已停用。停用這項系統服務只是不能共用遠端電腦的剪貼簿資料,並不會影響本機電腦的應用程式彼此透過剪貼簿共用資料。
Cluster Service(ClusSvc):如果想讓伺服器具備叢集功能,就不能停用這項系統服務。Web版的Windows Server 2003並不支援叢集功能。
協定
通訊埠
Cluster Services(UDP)
3343
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
COM+ Event System(EventSystem):與COM+有關的系統服務,能自動將COM元件相關的事件傳送給元件的訂閱者(subscriber,相對於提供COM元件功能的發行者,publisher)。建議不應停用這項系統服務,可設為手動。
COM+ System Application(COMSysApp):這項系統服務掌管COM+的服務,並且管理COM+應用程式的設定。如果停用這項系統服務,COM+應用程式就無法執行,而且也無法管理系統的COM+或OLE機制。
Computer Browser(Brower):與Server、Workstation等系統服務共同提供Windows網路功能。Windows Server 2003預設為自動。
Cryptographic Services(CryptSvc):這項系統服務提供了金鑰管理的功能,是由類別目錄資料庫服務、受保護的根目錄服務、金鑰服務等三項服務所構成。
DHCP Server及DHCP Client(DHCPServer/Dhcp):用在DHCP協定的系統服務。
協定
通訊埠
DHCP Server(UDP)
67
MADCAP(UDP)
2535
Distributed File System(Dfs):分散式檔案系統伺服端所需要的系統服務,Windows Server 2003預設是自動。
協定
通訊埠
NetBIOS Datagram Service(UDP)
138
NetBIOS Session Service(TCP)
139
LDAP Server(TCP)
389
LDAP Server(UDP)
389
SMB(TCP)
445
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
Distributed Link Tracking Server及Distributed Link Tracking Client(TrkSvr/TrkWks):用來追蹤網域裡分散式檔案的移動情形。
協定
通訊埠
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
Distributed Transaction Coordinator(MSDTC):這是個用來協調分散式環境「交易」、管理相關資源的系統服務。分散式環境裡的訊息、資料庫、檔案系統大多以「交易」的方式進行傳遞,MSDTC可以擔任交易時的協調工作,例如COM+、MSMQ或SQL Server都需要這項系統服務。Windows Server 2003預設是自動啟用這項系統服務。
協定
通訊埠
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
DNS Server及DNS Client(DNS/Dnscache):非常重要的網路系統服務,是用來提供網路名稱服務(Domain Name Service)。
協定
通訊埠
DNS(UDP)
53
DNS(TCP)
53
Error Reporting Service(ERSvc):用來將系統的錯誤回報給微軟的系統服務,預設都是自動。
Event Log(Eventlog):記錄由系統及程式所產生的事件訊息,並可由『事件檢視器』關閱所記錄的事件訊息。預設都是自動。
協定
通訊埠
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
Fax Service(Fax):提供用戶端傳真功能的系統服務。
協定
通訊埠
NetBIOS Session Service(TCP)
139
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
SMB(TCP)
445
File Replication(NtFrs):這項系統服務讓Windows 2000/2003網域控制器能夠複製SYSVOL資料夾的內容。
協定
通訊埠
RPC(TCP)
135
TCP
1024到65534之間的隨機通訊埠
File Server for Macintosh(MacFile):麥金塔電腦能夠透過網路,存取執行這項系統服務的伺服器。
協定
通訊埠
File Server for Macintosh(TCP)
548
FTP Publishing Service(MSFTPSVC):這項系統服務可以讓電腦具備FTP伺服器的功能,IIS的FTP功能就是使用這項系統服務。
協定
通訊埠
FTP control(TCP)
21
FTP default data(TCP)
20
TCP
1024到65534之間的隨機通訊埠
Help and Support(helpsvc):Windows的『說明及支援』需要這項系統服務才能運作。
本文列舉了常用的Windows系統服務(而且將重點放在伺服端),而Windows的系統服務當然不只本文所列,在下一篇的文章,我們將繼續說明其他的系統服務,並且也會說明不同角色的伺服器,所需要的最小、最基本的系統服務。
參考資料
Windows System Programming 3/e中文版(碁峰出版,Johnson M. Hart著,賴榮樞譯)
Service overview and network port requirements for the Windows Server system