เปิด Remote Connect ไปที่ Docker Daemon และปลอดภัย EP 1 :: Concept

เห็นข่าว พบเครื่องที่ใช้ Docker จำนวนมากมีการตั้งค่าไม่ปลอดภัย อาจถูกแฮกฝังมัลแวร์ขุดเงินดิจิทัล แล้วทำจุดไฟให้เขียนเรื่องนี้ โดยปกติถ้าติดตั้ง Docker โดยที่ไม่ได้ปรับแต่งอะไรเพิ่ม จะไม่สามารถเชื่อมจากจากภายนอกเข้ามาบริหารจัดการ container ได้ docker daemon จะเปิดเฉพาะ IPC socket (inter-process communication socket) ทำให้ docker client สามารถเชื่อมต่อได้จาก localhost เท่านั้น แต่ถ้าเผลอเปิด remote connecti​on โดยไม่คำนึงถึงความปลอดภัย ก็จะให้เกิดปัญหาตามข่าวด้านบนได้

รูปที่ 1 ผลจากการเรียกใช้คำสั่ง docker เพื่อสั่งให้ dockerd.example.com ทำงาน

รูปที่ 1 ทางขวาแสดงให้เห็นว่า dockerd.example.com เปิดให้เชื่อมต่อได้โดยไม่มีการกำหนดการรักษาความปลอดภัยแต่อยากได้ และทางซ้ายแสดงให้เห็นว่า สามารถเรียกใช้คำสั่ง docker ให้สร้าง container จาก image ที่ชื่อว่า nginx ได้

หลักวิธีการเปิด Remote Connection ให้ปลอดภัย

รูปที่ 2

docker ใช้วิธีการ Mutual Authentication แบบ Certificate based ปรับปรุงความปลอดภัยในการสื่อสารระหว่าง docker daemon กับ docker client

  1. สร้าง Key และ Certificate สำหรับ Certificate Authority (CA)
  2. สร้าง Key และ Certificate 2 ชุดสำหรับ docker daemon และ docker client โดยที่ Certificate ทั้ง 2 ชุดต้องถูก Sign โดย CA ที่สร้างในข้อ 1
  3. นำ คู่ Key และ Certificate ที่สร้างสำหรับ docker daemon และ Certficate ของ CA ไปเก็บไว้ที่ server
  4. นำ คู่ Key และ Certificate ที่สร้างสำหรับ docker client และ Certficate ของ CA ไปเก็บไว้ที่ client
  5. แก้ไขคำสั่งในการเริ่มทำงานของ docker daemon เพื่อกำหนดให้เกิดรับการเชื่อมต่อจากภายนอก, ระบุให้ใช้ TLS (Transport Layer Security) ในการเชื่อมต่อ และ ตรวจสอบ การเชื่อม

to be continue EP2 :: configuration