公司啟動了新的資安規定,取消了DHCP,要求所有Client PC一律使用固定IP,且依公司所配發的名稱為電腦命名。
辦公室桌上的XPC SB81P是2003年底買的,跟著我流浪過三家公司,OS也一直沿用至今,沒再重灌過。這下被要求改名,沒法預先攤出需要更動的設定有哪些,只有先更名,再用打地鼠的方式,等問題自己冒出來,遇到一個解一個。
IP跟機器名稱改好重開機後,第一步就是試試機器上的各個功能是否正常。為了減少衝擊,我特別在lmhosts及host兩個檔案裡,將新的IP Mapping回我的舊電腦名稱,這樣本機的程式即使Sql Connection String或UNC指的還是舊Machine Name,可以完全不用更動,繼續運作。
不過,當我用IE開啟本機的WSS個人Portal時,第一關來了,IIS Web起不來,所有的Web處於停止狀態,要去啟動時,出現了 The format of the specified network name is invalid
“的錯誤訊息,然後系統事件簿中出現了
HTTP Error Event 15005
Unable to bind to the underlying transport for 10.0.15.91:80. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.¡@ The data field contains the error number.
W3SVC Error Event 1004
Cannot register the URL prefix 'http://*:80/' for site '1'. The site has been deactivated.¡@ The data field contains the error number.
幸好,這兩個訊息非常明確,Google了一下就找到答案。這才想去前陣子為了Try SubVersion,裝了Apache HTTPD,所以指定了HKEY_LOCAL_MACHINE\Service\CurrentControlSet\Services\HTTP\Parameters\ListenOnlyList,讓出一個IP的80 Port給Apache用。ListenOnlyList的IP還是舊的,造成了Web無法啟動。修改Registry,再net stop http /y, net start w3svc一下,Web就可以啟動了。(注意要重啟HTTP,光IISRESET是沒有用的!)
Web Server OK了,此時第二關出現了。連上本機WSS時,出現大大的Server Application Unavailable訊息。幸好,Event Log中可以找到明確的錯誤:
W3SVC Warning Event 1057
The identity of application pool 'WSSPool' is invalid, so the World Wide Web Publishing Service can not create a worker process to serve the application pool.!@ Therefore, the application pool has been disabled.
W3SVC Error Event 1059
A failure was encountered while launching the process serving application pool 'WSSPool'. The application pool has been disabled.

原來是IIS Application Pools中開了一個WSS專用的App Pool,其中指定了MachineName\WSSAccount作為執行身份,現在電腦名稱改了,它沒跟著自動更新,就只有出錯的份了。改了Identity,WSS就OK了,SQL Connection的部分完全不需要改,看來是lmhosts發生功效!
晚上回到家,用VPN連回公司,第三關來了! 要用Terminal Service連上XPC時,卻發現無法連通,用ping、net use驗證了一下,機器活著,RPC是通的,看來是Windows 2003的內建防火牆作祟。之前設定過只有特定IP網段才能連上Terminal Service,這下IP改了,鎖定的網段卻沒調整,當然不通。不過,只有RPC可通,要如何解決這個問題呢?
雖然是睡一覺明天上班就可以解決的小事,但利用有限功能取得主機操作權的挑戰,實在太有駭客攻門的味道了,讓我的駭客基因蠢蠢欲動,頓時精神百倍!! 不過由於RPC可通,我又有Administrators權限,事實上並非難事。Google了一下,前後試了幾個方法:
1.       netsh可以修改firewall設定,但我測試的結果似乎只能修改本機firewall,連結遠端主機時,無法使用firewall這個Command。
2.       如果遠端不可用netsh firewall,那麼telnet進去再執行總行了吧? 開啟電腦管理的MMC,再連至XPC(因為RPC可通),啟動了Telnet Server,卻發現Port 23被防火牆擋下來,第二波攻勢無功而返。
3.       再Google了一下,發現了一個好工具-sc.exe,可以控制遠端機器上的Service,利用sc \\MachineName stop SharedAccess,就可停用防火牆。Bingo! Terminal Service可用了。參考資料
這三隻地鼠應該只是先鋒部隊,後面幾週應該還有得打,就等遇到再說吧!


[Updated 2006-07-27 17:35]
又發現地鼠一隻... Scheduled Task中設定的Identity用的是本機帳號,前方會跟著機器名稱,機器更名後記得也要改,另外以此類推: COM+ Application、Window Service裡也可能有漏網之魚。


Comments

Be the first to post a comment

Post a comment


41 - 15 =