Gateway

คู่มือปฏิบัติการสำหรับการเปิดให้เข้าถึง Gateway

คู่มือปฏิบัติการนี้แปลงคำแนะนำในภาพรวมจาก ความปลอดภัย ให้เป็น รายการตรวจสอบสำหรับผู้ดูแลระบบเกี่ยวกับการเข้าถึงจากระยะไกลและการเปิดรับข้อความ

เลือกรูปแบบการเปิดให้เข้าถึง

เลือกรูปแบบที่จำกัดที่สุดซึ่งยังตอบโจทย์เวิร์กโฟลว์

รูปแบบ แนะนำเมื่อ มาตรการควบคุมที่จำเป็น
Loopback + อุโมงค์ SSH การใช้งานส่วนบุคคล การเข้าถึงของผู้ดูแลระบบ การดีบัก คงค่า gateway.bind: "loopback" และสร้างอุโมงค์ไปยัง 127.0.0.1:18789
Loopback + Tailscale Serve การเข้าถึง Control UI/WebSocket ส่วนบุคคลผ่าน tailnet คง Gateway ให้เข้าถึงได้ผ่าน loopback เท่านั้น ส่วนเฮดเดอร์ข้อมูลประจำตัว Tailscale ใช้ยืนยันตัวตนเฉพาะพื้นผิว WebSocket ของ Control UI ไม่ใช่เส้นทางการยืนยันตัวตนอื่น
การผูกกับ Tailnet/LAN เครือข่ายส่วนตัวเฉพาะที่มีอุปกรณ์ซึ่งทราบแน่ชัด การยืนยันตัวตนของ Gateway รายการอนุญาตของไฟร์วอลล์ และไม่มีการส่งต่อพอร์ตสาธารณะ
รีเวิร์สพร็อกซีที่เชื่อถือได้ SSO/OIDC ขององค์กรอยู่หน้า Gateway การยืนยันตัวตนแบบ trusted-proxy, trustedProxies ที่เคร่งครัด, กฎเขียนทับ/ลบเฮดเดอร์ และการระบุผู้ใช้ที่อนุญาตอย่างชัดเจน
อินเทอร์เน็ตสาธารณะ การติดตั้งใช้งานที่พบไม่บ่อยและมีความเสี่ยงสูง พร็อกซีที่รับรู้ข้อมูลประจำตัว, TLS, การจำกัดอัตรา, รายการอนุญาตที่เคร่งครัด และเซสชันที่ไม่ใช่เซสชันหลักซึ่งทำงานในแซนด์บ็อกซ์

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

รายการข้อมูลก่อนเริ่มดำเนินการ

บันทึกข้อมูลต่อไปนี้ก่อนเปลี่ยนนโยบายการผูกเครือข่าย พร็อกซี Tailscale หรือช่องทาง:

  • โฮสต์ของ Gateway ผู้ใช้ระบบปฏิบัติการ และไดเรกทอรีสถานะ (ค่าเริ่มต้นคือ ~/.openclaw)
  • URL ของ Gateway และโหมดการผูกเครือข่าย (gateway.bind; พอร์ตเริ่มต้นคือ 18789)
  • โหมดการยืนยันตัวตน แหล่งที่มาของโทเค็น/รหัสผ่าน หรือแหล่งข้อมูลประจำตัวจากพร็อกซีที่เชื่อถือได้
  • ช่องทางที่เปิดใช้งานทั้งหมด และแต่ละช่องทางรับข้อความส่วนตัว กลุ่ม หรือ Webhook หรือไม่
  • เอเจนต์ที่ผู้ส่งซึ่งไม่ได้อยู่ในเครื่องสามารถเข้าถึงได้
  • โปรไฟล์เครื่องมือ โหมดแซนด์บ็อกซ์ และนโยบายเครื่องมือที่มีสิทธิ์ระดับสูงสำหรับเอเจนต์แต่ละตัวที่เข้าถึงได้
  • ข้อมูลประจำตัวภายนอกที่เอเจนต์เหล่านั้นใช้งานได้
  • ตำแหน่งสำรองข้อมูลสำหรับ ~/.openclaw/openclaw.json และข้อมูลประจำตัว

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

การตรวจสอบพื้นฐาน

เรียกใช้คำสั่งต่อไปนี้ก่อนเปิดให้เข้าถึง:

bash
openclaw doctoropenclaw security auditopenclaw security audit --deepopenclaw health

แก้ไขผลการตรวจสอบระดับวิกฤตก่อน ยอมรับคำเตือนเฉพาะเมื่อเป็นสิ่งที่ตั้งใจไว้และ มีเอกสารกำกับสำหรับการติดตั้งใช้งานนั้น ดู การตรวจสอบในการตรวจสอบความปลอดภัย เพื่อดูความหมายของแต่ละ checkId และคีย์สำหรับการแก้ไข

สำหรับการตรวจสอบ CLI จากระยะไกล ให้ส่งข้อมูลประจำตัวอย่างชัดเจน:

bash
openclaw gateway probe --url ws://127.0.0.1:18789 --token "$OPENCLAW_GATEWAY_TOKEN"

อย่าคาดว่าข้อมูลประจำตัวในค่ากำหนดภายในเครื่องจะมีผลกับ URL ระยะไกลที่ระบุไว้อย่างชัดเจน

เกณฑ์พื้นฐานขั้นต่ำที่ปลอดภัย

ใช้โครงสร้างนี้เป็นจุดเริ่มต้นสำหรับการติดตั้งใช้งานที่เปิดให้เข้าถึง:

json5
{  gateway: {    bind: "loopback",    auth: {      mode: "token",      token: "replace-with-a-long-random-token",    },  },  session: {    dmScope: "per-channel-peer",  },  agents: {    defaults: {      sandbox: { mode: "non-main" },    },  },  tools: {    profile: "messaging",    exec: { security: "deny", ask: "always" },    elevated: { enabled: false },  },}

ขยายมาตรการควบคุมครั้งละหนึ่งรายการ: เพิ่มรายการอนุญาตเฉพาะช่องทางก่อนเปิดใช้ เครื่องมือที่สามารถเขียนข้อมูลได้ หรือเปิดใช้รีเวิร์สพร็อกซีก่อนรับทราฟฟิก Control UI จากระยะไกล

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

การเปิดรับข้อความส่วนตัวและกลุ่ม

ช่องทางรับส่งข้อความเป็นพื้นผิวรับอินพุตที่ไม่น่าเชื่อถือ ก่อนอนุญาตข้อความส่วนตัวหรือ กลุ่ม:

  • เลือก dmPolicy: "pairing" หรือรายการ allowFrom ที่เคร่งครัด แทน dmPolicy: "open"
  • อย่าใช้รายการอนุญาต "*" ร่วมกับการเข้าถึงเครื่องมือแบบกว้าง
  • กำหนดให้ต้องกล่าวถึงในกลุ่ม เว้นแต่ห้องนั้นจะได้รับการควบคุมอย่างเข้มงวด
  • ตั้งค่า session.dmScope: "per-channel-peer" (หรือ "per-account-channel-peer" สำหรับ ช่องทางหลายบัญชี) เมื่อมีหลายคนที่สามารถส่งข้อความส่วนตัวถึงบอตได้ เพื่อไม่ให้เซสชันข้อความส่วนตัว ใช้บริบทร่วมกัน
  • กำหนดเส้นทางช่องทางที่ใช้ร่วมกันไปยังเอเจนต์ที่มีเครื่องมือขั้นต่ำและไม่มี ข้อมูลประจำตัวส่วนบุคคล

การจับคู่เป็นการอนุมัติให้ผู้ส่งเรียกใช้บอตได้ แต่ไม่ได้ทำให้ผู้ส่งรายนั้นเป็น ขอบเขตความปลอดภัยของโฮสต์ที่แยกจากกัน

การตรวจสอบรีเวิร์สพร็อกซี

สำหรับพร็อกซีที่รับรู้ข้อมูลประจำตัว:

  • พร็อกซีต้องยืนยันตัวตนผู้ใช้ก่อนส่งต่อไปยัง Gateway
  • ไฟร์วอลล์หรือนโยบายเครือข่ายต้องบล็อกการเข้าถึงพอร์ตของ Gateway โดยตรง
  • gateway.trustedProxies ต้องระบุเฉพาะ IP ต้นทางของพร็อกซี
  • พร็อกซีต้องลบหรือเขียนทับเฮดเดอร์ข้อมูลประจำตัวและเฮดเดอร์การส่งต่อ ที่ไคลเอนต์ส่งมา
  • ตั้งค่า gateway.auth.trustedProxy.allowUsers เมื่อพร็อกซีให้บริการมากกว่าหนึ่ง กลุ่มผู้ใช้
  • ใช้ gateway.auth.trustedProxy.allowLoopback เฉพาะกับพร็อกซีที่อยู่บนโฮสต์เดียวกัน ซึ่งเชื่อถือกระบวนการภายในเครื่องและพร็อกซีเป็นผู้ควบคุมเฮดเดอร์ข้อมูลประจำตัว

เรียกใช้ openclaw security audit --deep หลังเปลี่ยนแปลงพร็อกซี ผลการตรวจสอบ พร็อกซีที่เชื่อถือได้มีความสำคัญสูง เนื่องจากพร็อกซีจะกลายเป็นขอบเขต การยืนยันตัวตน

การทบทวนเครื่องมือและแซนด์บ็อกซ์

ก่อนเปิดให้ผู้ส่งจากระยะไกลเข้าถึงเอเจนต์:

  • ยืนยันว่าเซสชันใดทำงานบนโฮสต์และเซสชันใดทำงานในแซนด์บ็อกซ์
  • ปฏิเสธหรือกำหนดให้ต้องอนุมัติการเรียกใช้คำสั่งบนโฮสต์
  • ปิดใช้เครื่องมือที่มีสิทธิ์ระดับสูงไว้ เว้นแต่ผู้ส่งที่เฉพาะเจาะจงและเชื่อถือได้จำเป็นต้องใช้
  • หลีกเลี่ยงเครื่องมือเบราว์เซอร์ แคนวาส Node Cron Gateway และการสร้างเซสชัน สำหรับพื้นผิวรับส่งข้อความ แบบเปิดหรือกึ่งเปิด
  • จำกัดขอบเขตไดเรกทอรีที่เมานต์ให้แคบ หลีกเลี่ยงพาธข้อมูลประจำตัว โฮม Docker socket และพาธ ของระบบ
  • ใช้ Gateway ผู้ใช้ระบบปฏิบัติการ หรือโฮสต์แยกกัน สำหรับขอบเขตความเชื่อถือ ที่แตกต่างกันอย่างมีนัยสำคัญ

หากผู้ใช้ระยะไกลไม่ได้รับความเชื่อถืออย่างสมบูรณ์ การแยกต้องมาจากการติดตั้งใช้งาน ที่แยกกัน ไม่ใช่อาศัยเพียงพรอมต์หรือป้ายกำกับเซสชัน

การตรวจสอบหลังการเปลี่ยนแปลง

หลังการเปลี่ยนแปลงการเปิดให้เข้าถึงแต่ละครั้ง:

  1. เรียกใช้ openclaw security audit --deep อีกครั้ง
  2. ยืนยันว่าการเชื่อมต่อที่ได้รับอนุญาตสำเร็จ
  3. ยืนยันว่าผู้ส่งหรือเซสชันเบราว์เซอร์ที่ไม่ได้รับอนุญาตถูกปฏิเสธ
  4. ยืนยันว่าบันทึกปกปิดข้อมูลลับ
  5. ยืนยันว่าการกำหนดเส้นทางข้อความส่วนตัว/กลุ่มเข้าถึงเฉพาะเอเจนต์ที่ตั้งใจไว้
  6. ยืนยันว่าเครื่องมือที่มีผลกระทบสูงขอการอนุมัติหรือถูกปฏิเสธ
  7. จัดทำเอกสารคำเตือนคงเหลือที่ยอมรับไว้

อย่าดำเนินการเปลี่ยนแปลงการเปิดให้เข้าถึงรายการถัดไปจนกว่าจะเข้าใจ รายการปัจจุบันอย่างชัดเจน

แผนย้อนกลับ

หาก Gateway อาจถูกเปิดให้เข้าถึงมากเกินไป:

json5
{  gateway: {    bind: "loopback",  },  channels: {    whatsapp: { dmPolicy: "disabled" },    telegram: { dmPolicy: "disabled" },    discord: { dmPolicy: "disabled" },    slack: { dmPolicy: "disabled" },  },  tools: {    exec: { security: "deny", ask: "always" },    elevated: { enabled: false },  },}

จากนั้น:

  1. หยุดการส่งต่อแบบสาธารณะ Tailscale Funnel หรือเส้นทางรีเวิร์สพร็อกซี
  2. หมุนเวียนโทเค็น/รหัสผ่านของ Gateway และข้อมูลประจำตัวของการผสานรวมที่ได้รับผลกระทบ
  3. ลบ "*" และผู้ส่งที่ไม่คาดคิดออกจากรายการอนุญาต
  4. ตรวจสอบบันทึกการตรวจสอบล่าสุด ประวัติการเรียกใช้ การเรียกใช้เครื่องมือ และการเปลี่ยนแปลงค่ากำหนด
  5. เรียกใช้ openclaw security audit --deep อีกครั้ง
  6. เปิดให้เข้าถึงอีกครั้งด้วยรูปแบบที่จำกัดที่สุดซึ่งยังตอบโจทย์เวิร์กโฟลว์

รายการตรวจสอบสำหรับการทบทวน

  • Gateway ยังคงเข้าถึงได้ผ่าน loopback เท่านั้น เว้นแต่จะมีเหตุผลที่จัดทำเป็นเอกสาร
  • การเข้าถึงที่ไม่ใช่ loopback มีการยืนยันตัวตน ไฟร์วอลล์ และไม่มีเส้นทางสาธารณะโดยตรง
  • การติดตั้งใช้งานพร็อกซีที่เชื่อถือได้กำหนด IP ของพร็อกซีและการควบคุมเฮดเดอร์อย่างเคร่งครัด
  • ข้อความส่วนตัวใช้การจับคู่หรือรายการอนุญาต ไม่ใช่การเข้าถึงแบบเปิดโดยค่าเริ่มต้น
  • กลุ่มกำหนดให้ต้องกล่าวถึงหรือมีรายการอนุญาตอย่างชัดเจน
  • ช่องทางที่ใช้ร่วมกันไม่สามารถเข้าถึงข้อมูลประจำตัวส่วนบุคคล
  • เซสชันที่ไม่ใช่เซสชันหลักทำงานในโหมดแซนด์บ็อกซ์
  • การเรียกใช้คำสั่งบนโฮสต์และเครื่องมือที่มีสิทธิ์ระดับสูงถูกปฏิเสธหรืออยู่ภายใต้การอนุมัติ
  • บันทึกปกปิดข้อมูลลับ
  • ผลการตรวจสอบระดับวิกฤตได้รับการแก้ไขแล้ว
  • ขั้นตอนการย้อนกลับได้รับการทดสอบและจัดทำเป็นเอกสารแล้ว
Was this useful?
On this page

On this page