Day: December 20, 2018

  • 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: