สำรวจความปลอดภัย (ที่ขาดหายไป) ของการติดตั้ง Docker และ Kubernetes ทั่วไป

สำรวจความปลอดภัย (ที่ขาดหายไป) ของการติดตั้ง Docker และ Kubernetes ทั่วไป
ฉันทำงานด้านไอทีมามากกว่า 20 ปี แต่ฉันไม่เคยสนใจเรื่องคอนเทนเนอร์เลย ตามทฤษฎีแล้ว ฉันเข้าใจว่าพวกมันมีโครงสร้างอย่างไรและทำงานอย่างไร แต่เนื่องจากฉันไม่เคยพบพวกเขาในทางปฏิบัติ ฉันจึงไม่แน่ใจว่าเกียร์ใต้ฝากระโปรงของพวกเขาหมุนและหมุนได้อย่างไร

นอกจากนี้ฉันไม่รู้ว่าความปลอดภัยของพวกเขาเป็นอย่างไร แต่ขอย้ำอีกครั้งว่า ทฤษฎีนี้ฟังดูดี และเพลงเก่าๆ “เมื่อความปลอดภัยเพิ่มขึ้น การใช้งานก็ลดลง” ติดอยู่ในหัวของฉัน ดังนั้นฉันจึงคิดว่าเนื่องจากทุกอย่างทำได้ง่ายมากด้วยคอนเทนเนอร์ ดังนั้นความปลอดภัยจึงต่ำกว่ามาตรฐาน เมื่อปรากฎว่าฉันพูดถูก

เพื่อเริ่มต้นอย่างรวดเร็ว ฉันสมัครเรียนหลักสูตรต่างๆ หมวกสีดำ ประจำปี 2020 หัวข้อ "จากเศษผ้าสู่ความมั่งคั่ง: การเจาะและการปกป้องสภาพแวดล้อม Docker Swarm และ Kubernetes'

หลักสูตรนี้สอนโดย Sheila A. Berta และ Sol Ozzan โดยเริ่มต้นด้วยการอธิบายวิธีการทำงานของคอนเทนเนอร์ Docker และการเดินทางที่คอนเทนเนอร์ใช้เมื่อปรับใช้กับ Kubernetes ชั้นเรียนนี้เป็นชั้นเรียนแบบลงมือปฏิบัติจริง โดยนักเรียนต้องติดตั้ง Docker และ microk8s บนเครื่องก่อนเริ่มชั้นเรียน ซึ่งเป็นวิธีที่ยอดเยี่ยมในการดูว่าเครื่องมือโต้ตอบกันอย่างไร ค้นหาจุดอ่อน และที่สำคัญที่สุดคือพยายามบล็อกพวกมัน

น่าเสียดายที่แม้ว่าหลักสูตรต่างๆ สัญญาว่าจะกลายเป็น "เจ้าชาย" หลังจากผ่านไปสองวัน แต่ฉันรู้สึกว่าทุกอย่างเพิ่งเริ่มต้น และฉันยังมีอีกมากที่ต้องเรียนรู้

สำรวจความปลอดภัย (ที่ขาดหายไป) ของการติดตั้ง Docker และ Kubernetes ทั่วไป

ก่อนที่จะดำดิ่งลงสู่การสังเกตอันสูงส่งของฉัน สิ่งสำคัญคือต้องอธิบายว่าคอนเทนเนอร์คืออะไร ในโลกของการพัฒนา เป็นเรื่องปกติที่โค้ดที่เขียนบนเครื่องส่วนบุคคลของคุณจะทำงานได้อย่างสมบูรณ์ แต่เมื่อคุณพยายามเรียกใช้บนเซิร์ฟเวอร์ที่ไหนสักแห่ง มันก็ไม่ทำงาน คอนเทนเนอร์พยายามแก้ไขปัญหานี้ด้วยการจัดหาเครื่องจักรที่มีในตัวเองซึ่งคุณสามารถย้ายจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งได้อย่างง่ายดาย โดยรู้ว่าพวกเขาจะทำงานอยู่เสมอ ตามชื่อเลย พวกมันประกอบด้วยโค้ด ไลบรารี และซอฟต์แวร์อื่น ๆ ที่จำเป็นในการทำงานให้สำเร็จ ในทางกลับกัน Kubernetes คือ แพลตฟอร์มการประสานสำหรับคอนเทนเนอร์. โดยหลักการแล้ว สามารถใช้ในการจัดการคอนเทนเนอร์ต่างๆ หลายร้อยหรือหลายพันตู้ได้อย่างราบรื่น

ด้านล่างนี้คือสิ่งที่ฉันค้นพบบางส่วนจากมุมมองของทีมสีแดงและสีน้ำเงิน

ทีมสีแดง

เนื้อหาคอนเทนเนอร์ส่วนใหญ่ทำงานเป็นรูท: ซึ่งหมายความว่าหากคอนเทนเนอร์ถูกบุกรุก คุณจะสามารถเข้าถึงคอนเทนเนอร์ได้อย่างเต็มที่ ทำให้ขั้นตอนต่อไปง่ายขึ้นมาก

การติดตั้ง docker.sock ภายในคอนเทนเนอร์เป็นสิ่งที่อันตราย: หากคุณมีรูทภายในคอนเทนเนอร์และติดตั้ง Docker ไว้ในคอนเทนเนอร์ที่มีซ็อกเก็ต Docker (/var/run/docker.sock) คุณมีศักยภาพที่จะสำรวจคลัสเตอร์ทั้งหมด รวมถึงการเข้าถึงคอนเทนเนอร์อื่น ๆ การเข้าถึงดังกล่าวไม่สามารถป้องกันได้โดยการแยกเครือข่ายหรือวิธีการอื่น

ตัวแปรสภาพแวดล้อมมักจะมีข้อมูลที่เป็นความลับ: ในกรณีส่วนใหญ่ ผู้คนจะส่งรหัสผ่านไปยังคอนเทนเนอร์โดยใช้ตัวแปรสภาพแวดล้อมปกติ ดังนั้นหากคุณมีสิทธิ์เข้าถึงบัญชี คุณสามารถสอดแนมตัวแปรสภาพแวดล้อมเหล่านี้เพื่อขยายอำนาจของคุณในภายหลัง

Docker API สามารถให้ข้อมูลได้มากมาย: เมื่อกำหนดค่า Docker API ตามค่าเริ่มต้นแล้ว จะทำงานโดยไม่ได้รับอนุญาตและสามารถสร้างข้อมูลได้มากมาย เมื่อใช้ Shodan คุณสามารถค้นหารายการพอร์ตที่เปิดอยู่ จากนั้นรับข้อมูลโดยละเอียดเกี่ยวกับคลัสเตอร์ และดำเนินการจับภาพแบบเต็มต่อไป TrendMicro เขียนเกี่ยวกับเรื่องนี้ บทความที่น่าสนใจที่สุด.

ทีมสีฟ้า

อย่ารันเนื้อหาคอนเทนเนอร์ในฐานะรูท: แม้ว่าการรันในฐานะรูทจะง่ายกว่า แต่คุณก็ไม่ควรทำ ให้เรียกใช้แอปพลิเคชันที่มีสิทธิ์รีเซ็ตโดยแสดง uid แทน โดยใช้ตัวเลือก --user เมื่อเรียกใช้จาก CLI หรือโดยระบุ USER ใน Dockerfile

ไม่อนุญาตให้ติดตั้งซอฟต์แวร์ในคอนเทนเนอร์: เกือบทุกการโจมตีเริ่มต้นด้วยการปลูกอะไรบางอย่าง ตั้งแต่ nmap ถึง ifconfig ไปจนถึง Docker (ภายในคอนเทนเนอร์) การติดตั้งทุกอย่างในคอนเทนเนอร์ถือเป็นเรื่องปกติ ด้วยเหตุผลเดียวกัน คุณควรบล็อกพอร์ตที่ไม่ได้ใช้ทั้งหมดเสมอ นอกจากนี้ยังช่วยป้องกันไม่ให้คำสั่งควบคุมถูกส่งเมื่อเครื่องของคุณติดไวรัส นอกจากการป้องกันการติดตั้งโปรแกรมแล้ว ยังควรตรวจสอบให้แน่ใจว่าจำนวนแอปพลิเคชันขั้นต่ำที่จำเป็นในการทำงานให้สำเร็จนั้นได้รับการติดตั้งในคอนเทนเนอร์ด้วย

ปกป้อง docker.sock: จะต้องได้รับการป้องกันเนื่องจากมีการประมวลผลการสื่อสารระหว่างคอนเทนเนอร์และคลัสเตอร์ผ่านซ็อกเก็ตนี้ เนื่องจากฉันไม่ต้องการลงรายละเอียดในบทความนี้อ่าน บันทึกจากนักเทียบท่าอะไรจะเกิดขึ้นได้ และจะบล็อกมันทั้งหมดได้อย่างไร

ใช้ความลับของนักเทียบท่าแทนตัวแปรสภาพแวดล้อม: มีความลับอยู่ ตั้งแต่ประมาณปี 2017. แม้ว่าสิ่งนี้จะไม่ปลอดภัย แต่ก็ยังดีกว่าตัวแปรสภาพแวดล้อมในการส่งข้อมูลลับไปยังคอนเทนเนอร์

หากบทความนี้ทำให้คุณสนใจคอนเทนเนอร์ คุณสามารถติดตั้ง Docker หรือ microk8s (Kubernetes เวอร์ชันเล็ก) ได้อย่างง่ายดาย ที่นี่ มีคำแนะนำในการติดตั้ง Docker สำหรับ Linux และ MacOS และ ที่นี่ — คำแนะนำในการติดตั้ง microk8s สำหรับ Windows, Linux และ MacOS

หลังจากติดตั้งแล้วคุณสามารถไปได้ นี่คือคู่มือเริ่มต้นใช้งานฉบับย่อ จาก Docker ตัวเลือกที่คล้ายกัน ที่นำเสนอ และสำหรับ microk8s

หากคุณต้องการหรือจำเป็นต้องเรียนหลักสูตรที่ครอบคลุมเกี่ยวกับ Docker ซึ่งวิทยากรภาคปฏิบัติจะตรวจสอบเครื่องมือทั้งหมดตั้งแต่บทคัดย่อพื้นฐานไปจนถึงพารามิเตอร์เครือข่าย ความแตกต่างของการทำงานกับระบบปฏิบัติการและภาษาการเขียนโปรแกรมต่างๆ จากนั้นลอง "หลักสูตรวิดีโอนักเทียบท่า" คุณจะคุ้นเคยกับเทคโนโลยีและเข้าใจว่าจะใช้ Docker ได้ที่ไหนและอย่างไรดีที่สุด และในเวลาเดียวกัน ให้รับกรณีปฏิบัติที่ดีที่สุด - การเรียนรู้อย่างปลอดภัยและได้รับการสนับสนุนจากผู้ฝึกหัดจากเรื่องราวเกี่ยวกับคราดจะดีกว่าการเรียนรู้จากคราดด้วยด้ามจับที่มีหนามแหลมเป็นการส่วนตัว

ที่มา: will.com

เพิ่มความคิดเห็น