Protect Windows Computer LAB using Toolwiz Time Freeze and Cygwin

Toolwiz Time Freeze เป็น open source software freeware ติดตั้งเพิ่มใน Windows 10 สำหรับจัดการเครื่องคอมพิวเตอร์ในห้องบริการ ซึ่งจะทำให้เมื่อ restart เครื่อง จะกลับคืนสู่สภาพเหมือนครั้งที่ติดตั้งเสร็จไว้ให้บริการในตอนแรก Toolwiz Time Freeze ไม่ได้ให้ซอฟต์แวร์ควบคุมรวมศูนย์กลางแบบโปรแกรมอื่นประเภทเดียวกันนี้ เราจะต้องทำการเดินไปปลด Lock ที่หน้าเครื่อง Windows ทีละเครื่องเอง แต่อย่างไรก็ตาม Toolwiz Time Freeze ก็ให้คำสั่งรันแบบ command line มาด้วย

http://www.toolwiz.com/lead/toolwiz_time_freeze.php

ผมจึงลองเสนอไอเดีย วิธีใช้ linux ubuntu ในการควบคุมไม่ต้องเดินไปทำหน้าเครื่อง นั่นคือ ใช้คำสั่ง ssh ในการรัน ToolwizTimeFreeze.exe ด้วย option /freeze หรือ /freezealways หรือ unfreeze

หลักการคร่าว ๆ
ซอฟต์แวร์ที่เครื่องคอมพิวเตอร์ที่จะให้บริการ
1.ติดตั้ง Windows 10
2.login เข้าใช้งานด้วยบัญชีผู้ใช้ (user) สิทธิเทียบเท่า Administrator
3.ติดตั้ง Cygwin for Windows จะได้ Linux emulator โดยเลือกติดตั้ง service sshd ทำงานอัตโนมัติเมื่อเปิดเครื่อง Windows
4.ติดตั้ง Toolwiz Time Freeze ตั้ง Lock พร้อมตั้งค่า password ป้องกันการเปิดเข้าโปรแกรม

ซอฟต์แวร์ที่เครื่องของ admin ผู้ดูแล
1.ติดตั้ง Ubuntu server หรือ Desktop เพิ่ม 1 เครื่อง เพื่อที่จะสร้าง ssh key ด้วยคำสั่ง sshkeygen จะได้ key file ชื่อ id_rsa.pub และ id_rsa.key อยู่ในไดเรกทอรี .ssh
2.ทำขั้นตอนส่ง id_rsa.pub ไปใส่เพิ่มต่อท้ายไฟล์ authorized_keys ของ user ที่ติดตั้ง Cygwin for Windows 10
3.ตอนนี้ เราจะสามารถ ssh user@ip (IP ของ Windows 10) ได้แล้วโดยไม่มีการถาม password ทดสอบดู

เมื่อต้องการปลด Lock (Unfreeze) Windows 10 ก็ใช้คำสั่งนี้ได้
คำสั่งเขียนต่อกันเป็นบรรทัดเดียว

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip  "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /unfreeze /usepass=$password" > /dev/null 2>&1 &

โดยให้แทนที่ $user ด้วย ชื่อบัญชีผู้ใช้ที่ติดตั้ง Cygwin ให้แทนที่ $ip ด้วยไอพีแอดเดรสของ Windows 10 และให้แทนที่ $password ด้วย password ของโปรแกรม Toolwiz Time Freeze

เมื่อรันคำสั่งนี้แล้ว Windows 10 จะ restart เมื่อตรวจสอบดูจะพบว่า Toolwiz Time Freeze อยู่ในสถานะ unprotect

เมื่อต้องการ Protect Windows 10 (Freeze) ก็ใช้คำสั่ง 3 คำสั่งนี้ ต้องทำตามลำดับ คำสั่งเขียนต่อกันเป็นบรรทัดเดียว

คำสั่งที่ 1/3

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /freeze /usepass=$password" > /dev/null 2>&1 &

คำสั่งที่ 2/3

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "/cygdrive/c/Program\ Files/Toolwiz\ Time\ Freeze\ 2017/ToolwizTimeFreeze.exe /freezealways /usepass=$password" > /dev/null 2>&1 &

คำสั่งที่ 3/3

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@$ip "shutdown -r -f -t 0" > /dev/null 2>&1 &

เมื่อรันคำสั่งนี้แล้ว Windows 10 จะ restart เมื่อตรวจสอบดูจะพบว่า Toolwiz Time Freeze อยู่ในสถานะ protect

ดังนั้น หากเรานำคำสั่งเหล่านี้มาเรียงเข้าเป็น shell script หรือ scripting language ที่ call คำสั่ง ssh ได้ ก็จะทำให้เราสั่ง Lock และ ปลด Lock เครื่องจำนวนมากได้อย่างง่ายขึ้น

การ Lock หรือ Unlock ด้วย script จะมี process stopped ของ ssh ที่ไปสั่ง Toolwiz ให้ลบ process ด้วยวิธีนี้

ps a | grep Toolwiz | awk '{print $1}' | xargs kill -9 > /dev/null 2>&1

หมายเหตุ (ข้างล่างนี้คือตัวอย่าง)

1.คำสั่งที่แนะนำ อ้างถึง path ที่ใช้ในการติดตั้งโปรแกรมแบบ default คือ

c:\Program Files\Toolwiz Time Freeze 2017

2.การตั้งค่าในโปรแกรม Toolwiz Time Freeze

Download จาก ftp server โดยใช้ไฟล์นี้ Setup_TimeFreeze.exe

ขั้นตอน installation จะมีตัวเลือกที่เป็นค่า default
Use disk caching for the Time Freeze Engine (MB.): 5120 (ตัวเลขนี้คงต้องทดสอบกันเอาเอง)
[ ] Enable Time Freeze on your system partition (C:) every time:
[/] Disable Time Freeze while in Windows Safe-mode.
[ ] Enable Password Protection

ขั้นตอนตั้งค่า จะมีตัวเลือกที่ผมได้ทดลองใช้
แท็บ Toolwiz Time Freeze
In Time Freeze mode, your system will be protected from any changes. ให้คลิกปุ่ม Start Time Freeze
[/] Enable Time Freeze automatically when Windows starts.
[/] Enable Folder Exclusion when Time Freeze is ON
และเลือกบาง folder ให้เก็บไฟล์ได้ เช่น c:\mywallpaper

แท็บ Setting and Help
[/] Enable Password Protection for the control
[ ] Hide the tray icon
[ ] Show toolbar on your Desktop

3.การตั้งค่า Cygwin for Windows ให้มี service sshd

ขั้นตอนติดตั้งโปรแกรม Cygwin
login ด้วย user ชื่อ Administrator หรือ login ด้วย user ที่มีสิทธิเทียบเท่า Administrator ก็ได้
ติดตั้ง cygwin ให้คลิกขวาที่ Link ข้างล่างนี้และเลือก Save as เพื่อ download ไว้ แต่ไม่ต้องสั่งรัน
ไฟล์สำหรับ Windows 64 bit http://cygwin.com/setup-x86_64.exe
แล้วออกไปที่ Windows CMD แบบ Run as Administrator
ให้ทำคำสั่ง ณ ตำแหน่งโฟลเดอร์ที่ download ไฟล์ เช่น Downloads ดังนี้

cd %HOMEPATH%/Downloads 
setup-x86_64.exe -q -s http://mirrors.psu.ac.th/cygwin -P openssh,curl,wget,dialog,vim 

หรือ

cd %HOMEPATH%/Downloads 
setup-x86_64.exe -q -s http://cygwin.mirror.constant.com/ -P openssh,curl,wget,dialog,vim 

รอนานสักนิด เมื่อเสร็จจะมีข้อความ Ending cygwin install ให้กด Enter

ขั้นตอนติดตั้ง script เพื่อจัดการเรื่องควบคุมเครื่อง
เปิดโปรแกรม Cygwin Terminal แบบ Run as Administrator เพราะว่าจะมีการเข้าไปแก้ registry

การตั้งค่า cygwin เพื่อจัดการเรื่องควบคุมเครื่อง ทำดังนี้

wget -N ftp://ftp.psu.ac.th/pub/psu12-sritrang/cygwin/cygwin-config-sshd.sh
bash -o igncr cygwin-config-sshd.sh

script ติดตั้งจะถามยืนยันว่าจะติดตั้ง ให้กด y และ Enter
จะเริ่มต้นด้วย
(1)การติดตั้ง user ชื่อ cyg_server ให้ตั้ง password
(2)program จะ run ไปเรือย ๆ จนเสร็จ (จะมีแวะระหว่างทาง ให้ใส่ password = ให้ใส่ตัวเดียวกับข้อ (1) (การติดตั้ง user ชื่อ cyg_server) และจะมีถาม reenter = ใส่ซ้ำอีกครั้งให้เหมือนกัน) Cygwin3.0.7(14พ.ค.62)ไม่มีหยุดถาม password แล้ว
(3)program จะมาหยุดที่คำถาม Cygwin3.0.7(14พ.ค.62)ไม่มีหยุดถามแล้ว
Warning: Registering the Cygwin LSA authentication package requires administrator privileges! You also have to reboot the machine to activate the change.
Are you sure you want to continue? (yes/no)
ให้ตอบ yes
(4)เมื่อเสร็จจะมีข้อความ cygwin-config-sshd.sh finished เมื่อเสร็จจะออกสู่ prompt

การตรวจสอบ cygwin มี sshd พร้อมให้บริการให้ทำดังนี้
ให้ reboot Windows หลังจากติดตั้ง cygwin เพื่อให้มีการ start service sshd ขึ้นมาก่อน
ให้ login ด้วย user สิทธิ Administrator
เปิด program cygwin64 terminal โดยคลิกขวาเลือก Run as Administrator
พิมพ์คำสั่ง ssh 127.0.0.1 ผลลัพธ์จะต้องมีคำถามให้ตอบ Yes และ ถาม password

ในกรณี cygwin มีปัญหา ให้ทำดังนี้
ให้ login ด้วย user สิทธิ Administrator
เปิด program cygwin64 terminal โดยคลิกขวาเลือก Run as Administrator
รัน script cygwin-uninstall.sh ดังนี้
bash -o igncr cygwin-uninstall.sh
ออก (exit) จาก cygwin terminal
แล้วเข้า Windows Explorer ลบ c:\cygwin64 ทิ้ง
ต่อไปก็ย้อนไปทำการติดตั้ง (reinstall) cygwin ใหม่ จนเสร็จ

References:

6 comments for “Protect Windows Computer LAB using Toolwiz Time Freeze and Cygwin

  1. สมชาย ศรียาเทพ
    May 22, 2019 at 3:36 pm

    ในกรณีการใช้ dynamic ip จะแก้ปัญหายังไงครับ

    • วิบูลย์ วราสิทธิชัย
      May 22, 2019 at 3:53 pm

      การใช้ dynamic ip จาก dhcp server ของ network switch ส่วนมาก IP จะเหมือนเดิมนะ

  2. สมชาย ศรียาเทพ
    June 21, 2019 at 10:24 am

    ชื่อบัญชีผู้ใช้ (@user) หมายถึงใครครับ

    • วิบูลย์ วราสิทธิชัย
      June 21, 2019 at 10:52 am

      user แรกที่ใช้ในการติดตั้ง Windows และติดตั้ง Cygwin ด้วย user นี้ หาก enable Administrator ในการติดตั้งทุกอย่าง user ก็คือ Administrator

  3. สมชาย ศรียาเทพ
    June 21, 2019 at 3:59 pm

    วิธีนี้มีการทดลองใช้จริงหรือยังครับ

  4. วิบูลย์ วราสิทธิชัย
    June 21, 2019 at 4:09 pm

    Toolwiz time freeze ใช้งานอยู่ที่คณะวิทยาการจัดการ
    ส่วน script ที่นำเสนอ แล้วแต่ใครจะนำไปต่อยอด

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.