เปิด Remote Connect ไปที่ Docker Daemon และปลอดภัย EP 1 :: Concept
เห็นข่าว พบเครื่องที่ใช้ Docker จำนวนมากมีการตั้งค่าไม่ปลอดภัย อาจถูกแฮกฝังมัลแวร์ขุดเงินดิจิทัล แล้วทำจุดไฟให้เขียนเรื่องนี้ โดยปกติถ้าติดตั้ง Docker โดยที่ไม่ได้ปรับแต่งอะไรเพิ่ม จะไม่สามารถเชื่อมจากจากภายนอกเข้ามาบริหารจัดการ container ได้ docker daemon จะเปิดเฉพาะ IPC socket (inter-process communication socket) ทำให้ docker client สามารถเชื่อมต่อได้จาก localhost เท่านั้น แต่ถ้าเผลอเปิด remote connection โดยไม่คำนึงถึงความปลอดภัย ก็จะให้เกิดปัญหาตามข่าวด้านบนได้
รูปที่ 1 ทางขวาแสดงให้เห็นว่า dockerd.example.com เปิดให้เชื่อมต่อได้โดยไม่มีการกำหนดการรักษาความปลอดภัยแต่อยากได้ และทางซ้ายแสดงให้เห็นว่า สามารถเรียกใช้คำสั่ง docker ให้สร้าง container จาก image ที่ชื่อว่า nginx ได้
หลักวิธีการเปิด Remote Connection ให้ปลอดภัย
docker ใช้วิธีการ Mutual Authentication แบบ Certificate based ปรับปรุงความปลอดภัยในการสื่อสารระหว่าง docker daemon กับ docker client
- สร้าง Key และ Certificate สำหรับ Certificate Authority (CA)
- สร้าง Key และ Certificate 2 ชุดสำหรับ docker daemon และ docker client โดยที่ Certificate ทั้ง 2 ชุดต้องถูก Sign โดย CA ที่สร้างในข้อ 1
- นำ คู่ Key และ Certificate ที่สร้างสำหรับ docker daemon และ Certficate ของ CA ไปเก็บไว้ที่ server
- นำ คู่ Key และ Certificate ที่สร้างสำหรับ docker client และ Certficate ของ CA ไปเก็บไว้ที่ client
- แก้ไขคำสั่งในการเริ่มทำงานของ docker daemon เพื่อกำหนดให้เกิดรับการเชื่อมต่อจากภายนอก, ระบุให้ใช้ TLS (Transport Layer Security) ในการเชื่อมต่อ และ ตรวจสอบ การเชื่อม