Windows Server มีความสามารถให้เราทำ Remote เข้าเครื่องได้ ใน mode ที่เรียกว่า Remote Desktop for Administrator ที่ช่วยให้ system administrator ทำงานได้สะดวก โดยมีข้อจำกัดว่า ให้ logon พร้อมๆ กันได้เพียง 2 connection ตอนนี้เราจะมาทำความรู้จักับเรื่อง /console และ sesion 0 ใน version ของ Windows Server 2003 มันมี option พิเศษ อันหนึ่งคือ /console ที่ช่วยให้ session remote เข้าไปอยู่ใน session พิเศษ ที่เรียกว่า session 0
รู้จักกับ MSTSC และ Query session
Windows Server มี คำสั่ง mstsc เพื่อใช้เป็น remote desktop client ไปยังเครื่อง server ปลายทาง รูปแบบคำสั่ง (syntax) ใน version 6.1 มีดังนี้
mstsc [<connection file>] [/v:<server[:port]>] [/admin] [/f[ullscreen]] [/w:<width>] [/h:<height>] [/public] | [/span] [/edit “connection file”] [/migrate] [/?]
เวลาใช้งาน ถ้าเป็น GUI ก็เรียก mstsc ไม่ต้องใส่ parameter สำหรับการทดสอบนี้ ใช้ parameter /v และ /console ซึ่งไม่ต้องแปลกใจว่า syntax ไม่มี เพราะจะเปรียบเทียบกับ mstsc ของเก่าใน Windows Server 2003 เค้ามี แต่ /console ได้ยกเลิกใน Windows Server 2008
อีกคำสั่งคือ query session จะใช้แสดง remote desktop session
การทดลองต่อไปนี้ให้สังเกตที่ช่อง ID ซึ่งหมายถึง session
ตัวอย่าง บน Windows Server 2003 [Before]
ตัวอย่าง บน Windows Server 2008 [After]
จากการทดลอง แสดงให้เห็นว่าใน
1. Windows Server 2003 มี /console ที่ทำให้ใช้ session 0 ได้ แต่ใน Windows Server 2008 ที่ session 0 ไม่สามารถใช้ได้
2. แม้ว่าจะ logon ที่ console หน้าเครื่อง จะได้ session ที่ชื่อว่า console แต่ก็ไม่ได้ session 0 เหมือนข้อ 1
Session 0 Isolation
ใน Windows Server 2003 และ version ก่อนหน้านี้ การ logon ที่ console จะได้ session 0 แล้ว service ต่างๆ ก็ run อยู่ใน session เดียวกัน ในเวลาต่อมาก็พบว่าการปล่อยให้ user ไป run งานใน session เดียวกับ service นั้น มีความเสี่ยงในเรื่อง security เนื่องจากสิทธิ (privilege) ที่ใช้ run service นั้นยิ่งใหญ่ แต่มาอยู่ใน session เดียวกับผู้ใช้งาน จึงเป็นเป้าหมายที่จะโดนโจมตีจาก malicious code ได้ง่าย ใน Windows Server 2008 ได้ จัดกาารลดความเสี่ยงโดย
1. กำหนดให้ service ใช้ session 0 และกำหนดให้เป็น non-interactive
2. กำหนดให้ user คนแรกที่ logon เข้าระบบได้ session 1 แล้วก็เรียงลำดับต่อไปเรื่อยๆ
ทำไมต้องใช้ /console
หากเราใช้คำสั่ง query session จะเห็นว่า Windows มีลำดับความสำคัญของ session ไม่เท่ากัน ในช่วงที่มี remote desktop ช่วงแรก นั้น
1. การ install application หรือ run application ต้องเรียกใช้ service ที่ run อยู่ใน session 0 หรือการแสดงผล(UI [User Interaction]) ออกไปที่ session 0
2. ต้องการให้การ remote ไปที่ server กลับไปหน้าจอเดิมทุกครั้ง หากไม่ใช้ /console ก็อาจได้ session เลขอื่นๆ แล้วเป็นจอใหม่
คิดใหม่ตาม Windows Server 2008
Windows ได้รับการปรับปรุงเรื่อง compatability ที่ยอมให้ application เก่าๆ วิธีใหม่คือ
1. การติดต่อกับ service ที่อยู่ใน session 0 ได้ ถ้ามี service ที่ใช้ UI ของ session 0 นั้น ระบบ Windows Server 2008 จะทำให้ผู้ใช้ทำงาน (interact) กับ session 0 จาก session ของผู้ใช้งานได้ ในเมื่อ session 0 ถูกทำให้เป็น non-interact กับผู้ใช้งาน ก็หมดความจำเป็นที่ต้องใช้ session 0
2. ถ้าอยากจะ remote กลับไปได้จอเดิมที่เคย logon ค้างไว้ ให้ config ระบบได้ ผ่าน policy, registry หรือจะทำผ่าน GUI ก็ได้ การทำผ่าน group policy ใน Windows Server 2008 R2 ให้ไปที่ Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections กำหนดค่าที่ Restrict Remote Desktop Services users to a single remote session
mstsc /admin ไม่ได้มาแทน /console
Parameter /admin ใช้เพื่อทำงาน admin บนเครื่อง Remote Desktop Server (ต้องเปิด enable role) แต่ถ้าเครื่องไม่ได้ enable role นั้น การใส่ /admin จะมีผลต่อไปนี้
- Disable Terminal Services client access licensing.
- Disable time zone redirection.
- Disable TS Session Broker redirection.
- Disable TS EasyPrint.
Reference
1. Changes to Remote Administration in Windows Server 2008
2. Limit users to one remote session
3. Restrict Users to a Single Session