ความปลอดภัย & PowerShell: การจัดการสคริปต์
ความปลอดภัยด้านไอทีเป็นปัญหาหนึ่งที่ครอบงำธุรกิจจริงๆ ถูกต้องแล้ว เนื่องจากการโจมตีโครงสร้างพื้นฐานแสดงให้เห็นมากขึ้นเรื่อยๆ สคริปต์ที่ควบคุมงานจำนวนมากก็เป็นเป้าหมายการโจมตียอดนิยมเช่นกัน แต่จะเพิ่มความปลอดภัยในสภาพแวดล้อม PowerShell ได้อย่างไร บทความต่อไปนี้แสดงวิธีแก้ปัญหาสำหรับบางแง่มุม
สิ่งที่ PowerShell มอบให้
PowerShell มีฟังก์ชัน “มาตรฐาน” บางอย่างอยู่แล้วเพื่อเพิ่มความปลอดภัยและป้องกันผู้โจมตีจากการโจมตีที่เป็นอันตราย เช่น นโยบายการดำเนินการ ฟังก์ชันการบันทึกและการตรวจสอบ และลายเซ็นดิจิทัล พวกเขาเป็นการเริ่มต้นที่ดี
นโยบายการดำเนินการ
ด้วย PowerShell การรักษาความปลอดภัยเริ่มต้นด้วยนโยบายการดำเนินการ นโยบายการดำเนินการระบุเงื่อนไขที่ต้องสร้างเพื่อให้ PowerShell เรียกใช้สคริปต์ ที่นี่คุณสามารถกำหนดระดับต่างๆ ได้ เช่น สคริปต์ในเครื่องสามารถทำงานได้โดยไม่ต้องลงนาม ในขณะที่สคริปต์ที่ดาวน์โหลดจะต้องลงนาม คุณสมบัตินี้มีประโยชน์ในการป้องกันสคริปต์ไม่ให้ทำงานโดยไม่ตั้งใจ อย่างไรก็ตามแฮกเกอร์ไม่ประทับใจ
เคล็ดลับ: หากคุณใช้นโยบายการดำเนินการ ให้ควบคุมนโยบายดังกล่าวผ่านนโยบายกลุ่ม สิ่งเหล่านี้จะอยู่เหนือการอนุญาตในท้องถิ่นเสมอ ดังนั้นจึงมีประสิทธิภาพมากกว่าในการต่อสู้กับการประหารชีวิตที่ไม่ต้องการ
ตรวจสอบนโยบายที่ตั้งไว้ด้วย "Get-ExecutionPolicy -list" หากตั้งค่าเป็น RemoteSigned หมายความว่าสคริปต์ภายในเครื่องจะถูกเรียกใช้งานเสมอ โดยจะดาวน์โหลดสคริปต์ที่มีลายเซ็นเท่านั้น หากตอนนี้สคริปต์ถูกตั้งค่าเป็น "ปลดล็อค" และเปิดให้ใช้งานในเครื่อง แสดงว่าอุปสรรคก็ผ่านพ้นไปแล้ว
การบันทึกและการตรวจสอบ
การบันทึกและการตรวจสอบจะรวมอยู่ใน PowerShell ด้วย ที่นี่คุณสามารถตรวจสอบให้แน่ใจว่าการทำงานของสคริปต์สามารถตรวจสอบย้อนกลับได้ผ่านทางบันทึกเหตุการณ์ของ Windows อย่างไรก็ตาม คุณควรดำเนินการนี้ผ่านนโยบายกลุ่ม เนื่องจากสามารถตรวจสอบย้อนกลับได้ผ่านการรวมศูนย์เท่านั้น
ลายเซ็นดิจิทัล
เราได้กล่าวถึงลายเซ็นดิจิทัลในแนวทางการดำเนินการแล้ว และพบว่าลายเซ็นดังกล่าวมีความสำคัญอย่างมาก มันตอบคำถามสองข้อ: ใครเป็นผู้สร้างสคริปต์ (การรับรองความถูกต้อง)? และสคริปต์มีการเปลี่ยนแปลงอีกครั้งหลังจากการลงนาม (ความซื่อสัตย์) หรือไม่? วิธีที่ดีที่สุดคือซื้อใบรับรองจากผู้ให้บริการอย่างเป็นทางการ เนื่องจากถือว่ามีความปลอดภัยเป็นพิเศษ คุณยังสามารถใช้ New-SelfSignedCertificate เพื่อสร้างใบรับรองของคุณเองและใช้ในสคริปต์ได้
หลังจากการเปลี่ยนแปลงสคริปต์ทุกครั้ง จะต้องลงนามใหม่
ภาษาที่มีข้อจำกัด
PowerShell สามารถใช้ในโหมดภาษาต่างๆ หนึ่งในนั้นคือภาษาที่ถูกจำกัด มีการใช้งานอย่างกว้างขวางเมื่อเร็วๆ นี้ แต่จำเป็นต้องมีการรวมศูนย์ หากคุณต้องการจำกัดความสามารถของภาษาและคำสั่งของ PowerShell
เนื่องจากการตั้งค่าถูกรีเซ็ตเป็น FullLanguage สำหรับแต่ละเซสชันใหม่ การรวมศูนย์จึงทำได้ด้วยโซลูชันเช่น Applocker หรือ Device Guard เท่านั้น
ข้อมูลรับรอง
ข้อมูลประจำตัวที่จำเป็นในการเรียกใช้สคริปต์ PowerShell เป็นหัวข้อที่น่าตื่นเต้นและในขณะเดียวกันก็เป็นหนึ่งในความท้าทายที่ยิ่งใหญ่ที่สุด
ข้อมูลประจำตัวของ PowerShell ประกอบด้วยชื่อผู้ใช้และรหัสผ่าน และไม่มีการสูญเสียข้อมูลใด ๆ ในสคริปต์ การป้อนข้อมูลรับรองด้วยตนเองโดยผู้ใช้นั้นปลอดภัย แต่แน่นอนว่าจะป้องกันการทำงานของสคริปต์โดยอัตโนมัติ วิธีหนึ่งในการแก้ไขปัญหานี้คือการเข้ารหัสข้อมูลรหัสผ่าน ซึ่งสคริปต์ PowerShell จะอ่านขณะรันไทม์ อย่างไรก็ตาม สิ่งนี้ใช้ได้กับเครื่องที่ทำการเข้ารหัสเท่านั้น หากไฟล์รหัสผ่านถูกคัดลอกไปยังคอมพิวเตอร์เครื่องอื่น ไฟล์นั้นจะไม่สามารถใช้ที่นั่นได้อีกต่อไป ด้วยวิธีนี้ แม้แต่การมอบหมายที่ปลอดภัยก็ไม่สามารถนำมาใช้ได้
JEA - การดูแลระบบที่เพียงพอ
เป้าหมายของ JEA คือการมอบสิทธิ์ที่จำเป็นแก่ผู้ใช้ในการดำเนินการบางอย่างเท่านั้น ตัวอย่างจะเป็นการสร้างผู้ใช้ใน Active Directory (AD) โดยที่ผู้ใช้ยังคงได้รับสิทธิ์อื่นๆ ใน AD
JEA จัดเตรียมแพลตฟอร์มการควบคุมการเข้าถึงตามบทบาท (RBAC) สำหรับ PowerShell เนื่องจากมีการใช้ไวท์ลิสต์ที่นี่ จึงจำเป็นต้องทราบการดำเนินการทั้งหมดที่ผู้ใช้ควรทำได้ ดังนั้น การบำรุงรักษาแนวทางที่เหมาะสมจึงมีความซับซ้อนตามไปด้วย และยังคงต้องใช้ความรู้ PowerShell ของผู้ใช้
ScriptRunner เพิ่มความปลอดภัยอย่างมากได้อย่างไร
PowerShell จึงมาพร้อมกับ "ฟังก์ชันพื้นฐาน" บางอย่างเพื่อให้สามารถจัดการสคริปต์ได้อย่างปลอดภัย ในทางกลับกัน ปัญหาจำนวนหนึ่งที่เกิดขึ้นระหว่างการใช้งาน PowerShell ในทางปฏิบัติยังไม่ได้รับการแก้ไข คุณลักษณะด้านความปลอดภัยขั้นสูงของ ScriptRunner มีอธิบายไว้ด้านล่าง
การรวมศูนย์ของสคริปต์
ด้วย ScriptRunner สคริปต์ PowerShell ทั้งหมดจะถูกจัดเก็บและจัดโครงสร้างจากส่วนกลาง สิ่งนี้สร้างข้อกำหนดเบื้องต้นสำหรับการพัฒนาและการใช้ในทีม
นอกจากนี้ยังมั่นใจได้ว่าผู้เข้าร่วมทุกคนจะทำงานกับเวอร์ชันสคริปต์ปัจจุบันอยู่เสมอ การเข้าถึงสคริปต์ถูกควบคุมด้วยความช่วยเหลือของการควบคุมสิทธิ์ การใช้ ScriptRunner Add-In สำหรับ PowerShell ISE ทำให้สามารถแก้ไขสคริปต์ในพื้นที่เก็บข้อมูลส่วนกลางและเช็คอินและเช็คเอาท์ได้ สามารถใช้งานร่วมกับ Git, TFS และระบบการจัดการซอร์สโค้ดอื่น ๆ ได้เช่นกัน
การจัดการข้อมูลประจำตัวที่ปลอดภัย
ข้อมูลรับรองจำเป็นในการเรียกใช้สคริปต์ PowerShell ส่วนใหญ่ ด้วย ScriptRunner ข้อมูลนี้จะถูกจัดเก็บไว้ที่ส่วนกลางและปลอดภัย Windows Credential Store บนเซิร์ฟเวอร์ ScriptRunner พร้อมใช้งานสำหรับสิ่งนี้ และรองรับ Password Server Connectors จาก CyberArk, Pleasant และ Thycotic วิธีนี้ช่วยให้คุณจัดการข้อมูลรับรองทั้งหมดในพื้นที่เก็บข้อมูลส่วนกลาง ซึ่งช่วยให้การดูแลระบบง่ายขึ้นอย่างมาก โดยเฉพาะอย่างยิ่งเมื่อใช้อินสแตนซ์ ScriptRunner หลายรายการ
ไม่มีสิทธิ์พิเศษสำหรับผู้ใช้
ScriptRunner ควบคุมสิทธิ์ในการเรียกใช้สคริปต์ PowerShell จากบัญชีบริการส่วนกลาง ซึ่งหมายความว่าสำหรับแต่ละเป้าหมายที่เรียกว่า (Exchange, Active Directory, Azure, Office365, VMware ฯลฯ) จะใช้บัญชีบริการที่เหมาะสม
ผู้ใช้ (เช่น จากทีมช่วยเหลือ) ที่ควรจะสามารถเริ่มสคริปต์ได้ จึงไม่จำเป็นต้องมีการอนุญาตพิเศษในเป้าหมายที่เกี่ยวข้อง
การแยกนี้ทำให้สามารถมอบหมายงานให้กับผู้ใช้ที่เป็นผู้ใช้โดเมนมาตรฐานได้อย่างปลอดภัย
การดำเนินการที่ปลอดภัยและการตรวจสอบจากส่วนกลาง
ScriptRunner นำเสนอความเป็นไปได้ทั้งหมดสำหรับการดำเนินการที่ปลอดภัยของสคริปต์ PowerShell: ตั้งแต่การดำเนินการในเครื่องไปจนถึงการดำเนินการระยะไกลของ PowerShell และโหมดการดำเนินการพิเศษเช่น JEA มีตัวเลือกมากมายให้เลือก การดำเนินการนั้นสามารถทำได้สามวิธี:
- การดำเนินการด้วยตนเองโดยผู้ใช้
- การดำเนินการที่ควบคุมด้วยเวลา
- การดำเนินการอัตโนมัติที่ถูกกระตุ้นโดยระบบของบุคคลที่สาม เช่น ระบบการตรวจสอบหรือเวิร์กโฟลว์
ติดตามกิจกรรมทั้งหมดได้ผ่านแดชบอร์ดกลาง ข้อมูลสำคัญยังมีอยู่ใน Windows EventLog และผ่านทาง Windows Performance Counter
การมอบหมายที่ปลอดภัย
ฟังก์ชันที่อธิบายไว้จนถึงขณะนี้ช่วยให้พนักงานมอบหมายงานแต่ละงานได้อย่างปลอดภัยและง่ายดาย ปลอดภัย เนื่องจากผู้ใช้ไม่จำเป็นต้องมีการอนุญาตพิเศษใดๆ เพื่อดำเนินงานต่างๆ เรียบง่าย เนื่องจากพนักงานไม่จำเป็นต้องมีความรู้ด้าน PowerShell และดำเนินการผ่านอินเทอร์เฟซเว็บที่สะดวกสบาย รูปแบบการป้อนข้อมูลที่จำเป็นจะถูกสร้างขึ้นแบบไดนามิกจากสคริปต์ PowerShell ที่เกี่ยวข้อง ซึ่งหมายความว่าไม่จำเป็นต้องพัฒนาส่วนติดต่อผู้ใช้เลย
ผลลัพธ์ที่ได้คือโซลูชันที่ปลอดภัยสำหรับวงจร PowerShell ทั้งหมด ตั้งแต่การพัฒนาสคริปต์ร่วมกันไปจนถึงการใช้งานโดยทีมฝ่ายช่วยเหลือและผู้ใช้ปลายทาง
เนื้อหาที่เกี่ยวข้อง
- สคริปต์ PowerShell ทำงานอย่างไรใน ScriptRunner | ScriptRunner
- การสัมมนาผ่านเว็บ: PowerShell Security

