vpncli -s กับ GUI: การเข้าสู่ระบบ Cisco Secure Client
vpncli -s อ่านไฟล์คำตอบที่เตรียมไว้ ส่วน GUI อ่านคน เปรียบเทียบว่าเมื่อไรสคริปต์คุ้มค่า ไฟล์ต้องมีอะไร และจะพิสูจน์อย่างไร
Cisco Secure Client ให้วิธีตอบคำถามการเข้าสู่ระบบชุดเดียวกันสองวิธี คือมีคนพิมพ์ใน vpnui.exe หรือสคริปต์ป้อนคำตอบให้ vpncli.exe ผ่านอินพุตมาตรฐานด้วย -s วิธีที่สองทำให้การเชื่อมต่อตามกำหนดเวลาเป็นไปได้โดยไม่ต้องอ่านหน้าจอ GUI และยังเปลี่ยนการเข้าสู่ระบบให้เป็นไฟล์ที่ต้องป้องกันเหมือนข้อมูลรับรอง การจะเลือกวิธีไหนขึ้นอยู่กับว่ามีคนอยู่ที่เครื่องหรือไม่ และรหัสผ่านเปลี่ยนบ่อยแค่ไหน ทั้งสองวิธีไม่ได้เปลี่ยนสิ่งที่เกตเวย์ถาม มีแต่เปลี่ยนว่าใครเป็นคนตอบ
ทั้งสองเส้นทางจบลงที่อุโมงค์เดียวกัน ดังนั้นการเปรียบเทียบจึงเป็นเรื่องการดำเนินงาน ไม่ใช่โปรโตคอล
สองวิธีในการตอบคำถามชุดเดียวกัน
เส้นทาง GUI เป็นแบบโต้ตอบโดยการออกแบบ ไคลเอนต์ถาม มีคนตอบ และเซสชันจะอยู่ได้ตราบเท่าที่คนนั้นปล่อยไว้ มันเป็นทางเลือกที่ถูกต้องบนแล็ปท็อปที่มีคนใช้งาน เพราะคำถามปรับตามวิธีพิสูจน์ตัวตนของเกตเวย์ และไม่มีใครต้องเก็บรหัสผ่านเป็นข้อความธรรมดาบนดิสก์
เส้นทางสคริปต์เหมาะกับคีออสก์ เครื่องในห้องแล็บ หรืองานตามกำหนดเวลาที่ไม่มีใครพิมพ์ การแลกเปลี่ยนชัดเจน คุณยอมรับไฟล์ข้อมูลรับรองบนดิสก์เพื่อแลกกับการเชื่อมต่อแบบไม่มีคนเฝ้า หากเกตเวย์มีวิธีพิสูจน์ตัวตนด้วยใบรับรองหรือ SAML การแลกเปลี่ยนนั้นมักไม่คุ้ม เพราะไฟล์มีอยู่เพียงเพื่อตอบคำถามที่วิธีที่แข็งแกร่งกว่าจะหลีกเลี่ยง
อย่าใช้ทั้งสองวิธีบนเครื่องเดียวกันพร้อมกัน บรรทัดคำสั่งกับไคลเอนต์แบบกราฟิกแย่งสถานะเซสชันเดียวกัน และนั่นคือปัญหาของหัวข้อถัดไป
ไฟล์คำตอบต้องมีอะไรบ้าง
ไคลเอนต์ถามตามลำดับ เกตเวย์ บางครั้งเป็นการเลือกกลุ่ม ชื่อผู้ใช้ รหัสผ่าน และการยืนยันแบนเนอร์ใด ๆ ไฟล์ที่ตอบครบทั้งหมดมีลักษณะเช่นนี้ โดยใส่ค่าจริงลงไป
connect vpn.example.com
MyGroup
alice
correct-horse-battery
yวิธีที่เชื่อถือได้ในการสร้างไฟล์นั้นคือเชื่อมต่อด้วยมือหนึ่งครั้ง จดทุกบรรทัดที่พิมพ์และทุกครั้งที่กด Enter แล้วทำซ้ำลำดับเดิมให้แม่นยำ การติดตั้งที่เก็บกลุ่มและชื่อผู้ใช้ไว้ในโปรไฟล์อาจต้องมีบรรทัดว่างตรงตำแหน่งที่คำถามเหล่านั้นไม่ปรากฏอีก และบรรทัดสุดท้ายยังต้องมีขึ้นบรรทัดใหม่ของตัวเอง ไฟล์ที่ขาดไปหนึ่งบรรทัดมักค้างที่คำถามสุดท้ายแทนที่จะล้มเหลวพร้อมข้อผิดพลาดที่ชัดเจน จึงมักถูกโทษว่าเป็นปัญหาเครือข่าย เปรียบเทียบไฟล์กับบันทึกของคุณสองครั้ง ครั้งหนึ่งดูลำดับ อีกครั้งดูบรรทัดว่าง
เก็บไฟล์ไว้นอกโฟลเดอร์ที่ซิงก์ใด ๆ และให้บัญชีที่รันงานอ่านได้เท่านั้น รหัสผ่านนั้นเป็นข้อความธรรมดา ไฟล์จึงเป็นข้อมูลรับรอง ไม่มีที่เก็บ ไม่มีดิสก์ที่แชร์ ไม่มีไฟล์แนบในตั๋ว และไคลเอนต์จะไม่เตือนคุณเรื่องใด ๆ เหล่านี้
ทำไม GUI ต้องปิดก่อน
เริ่มสคริปต์ด้วยการสิ้นสุดโพรเซส GUI แล้วเรียกใช้ CLI จากโฟลเดอร์การติดตั้งของมันเอง เพราะทั้งโฟลเดอร์ทำงานและเวอร์ชันไคลเอนต์มีความสำคัญ ตัวอย่างตัวห่อ:
@echo off
taskkill /IM vpnui.exe /F >nul 2>&1
cd /d "%PROGRAMFILES(x86)%\Cisco\Cisco Secure Client"
vpncli.exe -s < C:\secure\login.txtรหัสออกไม่ใช่สัญญาณความสำเร็จที่เชื่อถือได้ในที่นี้ ไคลเอนต์พิมพ์ความคืบหน้าและเก็บอุโมงค์ไว้ในโพรเซสแยก ดังนั้นอ่านผลลัพธ์หาบรรทัดสถานะการเชื่อมต่อ แล้วจึงเริ่มงานที่ขึ้นกับ VPN
หากข้ามการปิด GUI สคริปต์อาจดูเหมือนทำงานอยู่ทั้งที่เซสชันเดิมยังอยู่ในสถานะที่ผู้ใช้ทิ้งไว้ ความล้มเหลวนั้นดูเหมือนเกิดเป็นครั้งคราว และนั่นคือบั๊กชนิดที่อยู่รอดได้หลังการเดาเป็นสัปดาห์
ยืนยันเซสชัน อย่าเดาเอา
หลังสคริปต์กลับมา ให้ตรวจสอบสิ่งที่อยู่เฉพาะภายในอุโมงค์ เช่นโฮสต์ภายใน หรือคำต่อท้าย DNS ที่มีเพียงตัวแก้ไขขององค์กรตอบ อ่านบรรทัดสถานะการเชื่อมต่อในผลลัพธ์ไคลเอนต์ด้วย และถือว่าอย่างอื่นคือความล้มเหลวไม่ใช่ความสำเร็จที่ช้า การรันไฟล์ซ้ำขณะมีเซสชันอยู่แล้วอาจทำให้ไคลเอนต์ตั้งค่าไม่สมบูรณ์ ดังนั้นควรตัดการเชื่อมต่อก่อนหรือข้ามการเข้าสู่ระบบเมื่อมีเซสชันอยู่
จากนั้นตัดสินใจว่าใครรับผิดชอบการเชื่อมต่อใหม่ ลูปที่ปิงที่อยู่ภายในและรันการเข้าสู่ระบบซ้ำสามารถทำให้คีออสก์ออนไลน์ได้หลายเดือน และยังอาจล็อกบัญชีเมื่อรหัสผ่านเปลี่ยนครั้งแรก จำกัดจำนวนครั้ง แจ้งเตือนเมื่อเกิน และให้ทีมข้อมูลระบุตัวตนเปลี่ยนไฟล์แทนที่จะปล่อยให้รหัสผ่านเก่าพยายามซ้ำจนถูกล็อก
vpnclient.exe รุ่นเก่าไม่ใช่เครื่องมือเดียวกัน
ระบบอัตโนมัติเดียวกันปรากฏภายใต้ชื่อเก่ากว่า และทั้งสองใช้แทนกันไม่ได้ ไคลเอนต์ Cisco IPsec ที่เลิกใช้แล้วใช้ vpnclient.exe พร้อมอาร์กิวเมนต์ในบรรทัด เช่น คำกริยา connect ชื่อโปรไฟล์ ผู้ใช้ และรหัสผ่านในบรรทัดคำสั่งเดียว ขณะที่ vpncli.exe คาดหวังลำดับคำถามบนอินพุตมาตรฐานด้วย -s ดังนั้นการคัดลอกสคริปต์ฟอรัมเก่าไปยังเครื่องปัจจุบันจึงได้คำสั่งที่รันได้ ไม่ทำอะไรให้เห็น และถูกโทษว่าเป็นความผิดของเกตเวย์
ก่อนแก้ไขอาร์กิวเมนต์ใด ๆ ตรวจสอบว่าไคลเอนต์ไหนติดตั้งอยู่และสคริปต์เรียกตัวไหนจริง ๆ ความต่างของชื่อเล็กพอที่จะมองข้ามในงานตามกำหนดเวลา และเป็นสิ่งแรกที่ต้องตรวจเมื่อสคริปต์ที่สืบทอดมาเลิกทำงานหลังการอัปเกรด