ความปลอดภัย
รายการตรวจสอบเพื่อเสริมความมั่นคงปลอดภัยของเซิร์ฟเวอร์ Antimatter: สิ่งที่ควรเปิด, ข้อจำกัดและการตั้งค่าความเป็นส่วนตัวที่ต้องตรวจสอบ, บริการภายนอกที่เซิร์ฟเวอร์ติดต่อ และวิธีรายงานปัญหาความปลอดภัย
สิ่งที่ต้องเปิด
| พอร์ต | บริการ | การเปิด |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | HTTPS proxy ของคุณ (Caddy หรือ nginx) | สาธารณะ: นี่คือวิธีที่ผู้คนเข้าถึง Antimatter |
| 8443/udp และ 8443/tcp | สื่อสำหรับโทร | สาธารณะ หากผู้คนใช้การโทรจากภายนอกเครือข่ายของคุณ |
| 8065/tcp | เซิร์ฟเวอร์เว็บของ Antimatter | เฉพาะไปยัง proxy: เผยแพร่ที่ 127.0.0.1 (HTTP_PORT=127.0.0.1:8065) |
| 8067/tcp | ตัวชี้วัด | เฉพาะเครือข่ายส่วนตัว เมื่อเปิดใช้งาน ไม่ต้องเข้าสู่ระบบ |
| 8074/tcp และ udp | Cluster gossip | เฉพาะระหว่างโหนดในคลัสเตอร์ |
| 5432, 9000, 8080, 8066 | PostgreSQL, ที่เก็บไฟล์, บริการ GIF, push proxy | ห้ามเปิดเด็ดขาด ไฟล์ compose จะเก็บไว้ในเครือข่ายภายในโดยไม่มีพอร์ตที่เผยแพร่ |
ไฟล์ compose ของเว็บไซต์ยังรันทุกคอนเทนเนอร์ด้วย no-new-privileges, รัน Antimatter ด้วยผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบบนอิมเมจแบบ distroless และรันบริการ GIF ด้วยระบบไฟล์แบบอ่านอย่างเดียว ฐานข้อมูล ที่เก็บข้อมูล และบริการ GIF อยู่บนเครือข่ายที่ไม่มีอินเทอร์เน็ต
รายการตรวจสอบหลังติดตั้ง
- สร้างบัญชีผู้ดูแลระบบคนแรกก่อนที่ใครจะเข้าถึงเซิร์ฟเวอร์ได้ (การติดตั้ง)
- ให้บริการ Antimatter ผ่าน HTTPS เท่านั้น และตั้งค่า URL ของเว็บไซต์เป็นที่อยู่
https://(โดเมนและ HTTPS) - เก็บ
.env,config.jsonและคีย์ TLS ให้ root (หรือผู้ใช้ของเซิร์ฟเวอร์) เท่านั้นที่อ่านได้:chmod 600 .env - กำหนดว่าใครสามารถสร้างบัญชีได้ ปิด เปิดเซิรฟ์เวอร์สาธารณะ เว้นแต่ชุมชนจะเป็นสาธารณะ และเปิด กำหนดให้ต้องยืนยันอีเมล เมื่อระบบอีเมลทำงานแล้ว (การเข้าสู่ระบบและบัญชี)
- เปิดใช้การยืนยันตัวตนสองขั้นตอน และบังคับใช้สำหรับบัญชีผู้ดูแลระบบอย่างน้อย หรือใช้ของผู้ให้บริการตัวตนของคุณ
- ตรวจสอบการเชื่อมต่อภายนอกด้านล่าง โดยเฉพาะเซิร์ฟเวอร์ STUN ที่การโทรใช้โดยค่าเริ่มต้น
- ก่อนเพิ่มการเชื่อมต่อโมเดล ให้ตั้งคีย์การเข้ารหัส AI (
AM_AI_ENCRYPTION_KEY) และเก็บสำเนาแยกจากสำรองข้อมูลฐานข้อมูล (AI) - สำรองข้อมูล และทดสอบการกู้คืน (การสำรองข้อมูลและการอัปเกรด)
- อัปเดตรูปภาพหรือแพ็กเกจให้ทันสมัย: การแก้ไขความปลอดภัยจะมาถึงพร้อมกับเวอร์ชันใหม่
การจำกัดอัตรา
เซิร์ฟเวอร์สามารถจำกัดจำนวนคำขอ API ที่แต่ละไคลเอนต์ทำได้ ซึ่งปิดอยู่โดยค่าเริ่มต้น ใน คอนโซลระบบ › สภาพแวดล้อม › การจำกัดอัตรา:
| การตั้งค่า | คีย์ | ค่าเริ่มต้น |
|---|---|---|
| เปิด Rate Limiting | RateLimitSettings.Enable | ปิด |
| จำนวนคำขอสูงสุดต่อวินาที (Maximum Queries per Second) | RateLimitSettings.PerSec | 10 |
| ขนาด Burst สูงสุด | RateLimitSettings.MaxBurst | 100 |
| ขนาด Memory Store | RateLimitSettings.MemoryStoreSize | ติดตามไคลเอนต์ 10,000 ตัว |
| ปรับการจำกัดอัตราตามที่อยู่ระยะไกล | RateLimitSettings.VaryByRemoteAddr | เปิด |
| ปรับการจำกัดอัตราตามผู้ใช้ | RateLimitSettings.VaryByUser | ปิด |
| ปรับการจำกัดอัตราตาม HTTP header | RateLimitSettings.VaryByHeader | ว่าง |
เมื่ออยู่หลังพร็อกซี การจำกัดตามที่อยู่จะทำงานได้เฉพาะเมื่อเซิร์ฟเวอร์ทราบที่อยู่ของไคลเอนต์แต่ละตัว (ServiceSettings.TrustedProxyIPHeader และ ServiceSettings.TrustedProxyIPs ดู ที่อยู่ไคลเอนต์ที่อยู่หลังพร็อกซี) มิฉะนั้น คำขอทั้งหมดจะดูเหมือนมาจากพร็อกซี และทุกคนจะแชร์ขีดจำกัดเดียวกัน สิ่งเดียวกันนี้ใช้กับการกรอง IP และที่อยู่ในบันทึกการตรวจสอบ (audit logs) ด้วย
การพยายามเข้าสู่ระบบถูกจำกัดแยกต่างหาก: จำนวนครั้งสูงสุดในการเข้าสู่ระบบ (10) จะล็อกบัญชีหลังจากพาสเวิร์ดไม่ถูกต้องหลายครั้ง
การกรอง IP
คอนโซลระบบ › การตั้งค่าไซต์ › การกรอง IP จำกัดการเข้าถึงเซิร์ฟเวอร์ตามที่อยู่ IP ด้วยกฎอนุญาตและปฏิเสธ (แต่ละกฎเป็นที่อยู่หรือช่วง CIDR) เมื่อเปิด เปิดการกรอง IP ผู้คนที่มีที่อยู่ตรงกับกฎปฏิเสธ หรือไม่มีกฎอนุญาตเมื่อมีกฎอนุญาตอยู่ จะไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้ หน้านี้จะปฏิเสธกฎที่จะบล็อกที่อยู่ของคุณเอง หากอยู่หลังพร็อกซี ให้ตั้งค่าที่อยู่ไคลเอนต์ก่อน (ที่อยู่ไคลเอนต์หลังพร็อกซี): มิฉะนั้นคำขอทั้งหมดจะดูเหมือนมาจากพร็อกซี
การอัปโหลดและการแชร์ไฟล์
| การตั้งค่า | ตำแหน่ง | ค่าเริ่มต้น |
|---|---|---|
ขนาดไฟล์สูงสุด (FileSettings.MaxFileSize) | Environment › File Storage | 100 MB. ให้อัตราส่วนขนาดคำขอของพร็อกซีอย่างน้อยเท่านี้ |
ขนาด Payload ที่มากที่สุด (ไบต์) (ServiceSettings.MaximumPayloadSizeBytes) | Environment › Web Server | 300000: คำขอ API ที่ใหญ่ที่สุดที่ไม่ใช่การอัปโหลดไฟล์ |
อนุญาตให้อัปโหลดไฟล์ (FileSettings.EnableFileAttachments) | Site Configuration › File Sharing and Downloads | เปิด |
| อนุญาตให้อัปโหลดไฟล์บนมือถือ, อนุญาตให้อัปโหลดไฟล์บนโมบาย | Site Configuration › File Sharing and Downloads | เปิด |
เปิดใช้ลิงก์ไฟล์สาธารณะ (FileSettings.EnablePublicLink) | Site Configuration › Public Links | ปิด: เมื่อเปิด ผู้คนสามารถแชร์ไฟล์ด้วยลิงก์ที่ใช้งานได้โดยไม่ต้องเข้าสู่ระบบ |
เปิดใช้งาน SVG (ServiceSettings.EnableSVGs) | Site Configuration › Posts | ปิดในเซิร์ฟเวอร์ใหม่: เมื่อเปิด รูปภาพ SVG จะแสดงแบบอินไลน์ |
Antimatter ไม่สแกนการอัปโหลดเพื่อหาโปรแกรมประสงค์ร้าย
การตั้งค่าความเป็นส่วนตัว
ใน คอนโซลระบบ › การตั้งค่าไซต์ › ผู้ใช้งานและทีม:
| การตั้งค่า | คีย์ | ค่าเริ่มต้น | สิ่งที่ทำ |
|---|---|---|---|
| แสดงข้อมูลอีเมล | PrivacySettings.ShowEmailAddress | เปิด | ปิด: ที่อยู่อีเมลของสมาชิกรู้จักเฉพาะผู้ดูลำดับระบบเท่านั้้น |
| แสดงชื่อ-นามสกุล | PrivacySettings.ShowFullName | เปิด | ปิด: ชื่อเต็มจะถูกซ่อน และแสดงชื่อผู้ใชแทน |
| เปิดใช้งานการเพิกเฉย การบล็อก และคำขอข้อความ | PrivacySettings.EnableUserBlocking | เปิด | ดูด้านล่าง |
| เปิดให้ผู้ใช้เปิดข้อความส่วนตัวกับ | TeamSettings.RestrictDirectMessage | ผู้ใชทุกคนในเซิร์ฟเวอร์ Antimatter | หรือ สมาชิกรายใดก็ตามในทีม: เฉพาะผู้คนที่ใช้ชุมชนร่วมกัน |
การเพิกเฉย การบล็อก และการขอร้องข้อมความ
เมื่อกำหนด เปิดใช้งานการเพิกเฉย การบล็อก และคำขอร้องข้อความ ไว้ (ค่าเริ่มต้น) ผู้ใช้สามารถเพิกเฉยและบล็อกกันและกันได้ และเลือกให้รับข้อความส่วนตัวจากคนท่ีไม่รู้จักเป็นคำขอร้องข้อความ ท่ีจะไม่แจ้งเตือนจนกว่าจะยอมรับ เหมาะสำหรักชุมชนสาธารณะ ในพื้่นท่ีทำงานท่ีผู้ร่วมงานต้องสามารถติดต่อถึงกันได้เสมอ ให้ปิดการทำงาน (กำหนด AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): ระบบจะไม่บังคับใช้ฟีเจอร์เหล่านี้อีกต่อไป แต่รายการและตัวเลือกท่ีผู้ใช้เคยทำไว้จะยังคงอยู่ และจะกลับมาใช้ได้อีกครั้งเมื่อกำหนดเปิดใหม้
เซสชันและโทเคน
- ความยาวของเซสชันและไทม์เอาต์เมื่อไม่มีการใช้งาน: ดู การลงชื่อเข้าใช้และบัญชี เซสชันที่สั้นลงหมายความว่าแล็ปท็อปหรือโทรศัพท์ที่หายไปจะยังคงลงชื่อเข้าใช้ได้น้อยกว่า
- เปิดใช้งานโทเคนการเข้าถึงส่วนตัว (
ServiceSettings.EnableUserAccessTokens, ปิด) อนุญาตให้ผู้ใช้สร้างโทเคน API; อายุการใช้งานสูงสุดของโทเคนการเข้าถึงส่วนบุคคล (วัน) ใช้เพื่อจำกัดอายุการใช้งาน ทั้งสองตัวอยู่ใน คอนโซลระบบ › อินทิเกรชัน › การจัดการอินทิเกรชัน - เพื่อออกจากระบบพร้อมกันสำหรับทุกคน ตัวอย่างเช่น หลังจากระบุว่ามีการละเมิดความปลอดภัย: เพิกถอนเซสชันทั้่งหมด ใน คอนโซลระบบ › การจัดการผ้้ใช้ › ผู้ใช้งาน
การเชื่อมต่อไปยังบริการภายนอก
Antimatter ไม่ติดต่อบริการใด ๆ ที่ดำเนินการโดย Mattermost, Inc. ไม่มีการส่งข้อมูลโทรเมตริก รายงานการล่ม หรือการตรวจสอบการอัปเดตความปลอดภัย และไม่ได้ดึงข้อมูลประกาศผลิตภัณฑ์ การตั้งค่าที่นำมาจาก Mattermost ซึ่งยังระบุชื่อหนึ่งของบริการของ Mattermost (บริการพุช, ตลาดแอป, ประกาศ หรือเซิร์ฟเวอร์ STUN สำหรบการโทร) ไม่ทำให้เซิร์ฟเวอร์ติดต่อพวกเขา: ที่อยู่เหล่านั้นจะถูกเพิกเฉย
เซิร์ฟเวอร์และแอปเชื่อมต่อไปยังบริการภายนอกอื่น ๆ เฉพาะสำหรบฟีเจอร์ที่ต้องการ และไปยังบริการที่คุณตั้งค่า:
| ฟีเจอร์ | การติดต่อ | โดยค่าเริ่มต้น |
|---|---|---|
| การโทร: การค้นหาที่อยู่สาธารณะด้วย STUN เซิร์ฟเวอร์และแต่ละคนที่เข้าร่วมการโทรจะส่งคำขอ ซึ่งแสดงที่อยู่ IP และพอร์ตของเซิร์ฟเวอร์ STUN | เซิร์ฟเวอร์ STUN สาธารณะของ Cloudflare, stun.cloudflare.com | เปิดใช้งานอยู่ ขณะแอปการโทรเปิดใช้งานอยู่ หากต้องการเปลี่ยน ให้ดูที่ การโทร |
ตัวอย่างลิงก์: เซิร์ฟเวอร์จะดึงหน้าเว็บที่แนบในข้อความ (เปิดใช้งานตัวอย่างลิงก์เว็บไซต์, ServiceSettings.EnableLinkPreviews) | เว็บไซต์ที่ผู้คนแนบไว้ | เปิดใช้งานอยู่ ปิดด้วย AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false |
| การแจงเตือนผาน push สู่แอปบนโทรศัพท | พร็อกซีการแจ้งเตือนแบบพุชของคุณเอง (การแจ้งเตือนแบบพุช) | ปิดอยู่ จนกว่าคุณจะตั้งค่าที่อยู่ |
ตลาดแอประยะไกล (PluginSettings.EnableRemoteMarketplace) | URL ของ Marketplace ที่คุณตั้งค่าไว้ | ปิดอยู่ และไม่มีที่อยู่ |
| อีเมล | เซิร์ฟเวอร์ SMTP ของคุณ | เซิร์ฟเวอร์เริ่มต้นคือ localhost |
| การเชื่อมต่อโมเดล (การเขียนใหม่, สรุป, การแปล, การอ่านออกเสียง และแอปพลิเคชัน), การเชื่อมต่อโมเดลของผู้ดูแลชุมชน | ผู้ให้บริการ AI ที่เพิ่มใน คอนโซลระบบ › AI › การเชื่อมต่อโมเดล หรือในการตั้งค่าของชุมชน (AI) | ไม่มี จนกว่าจะมีผู้ใดเพิ่ม |
| การเข้าสู่ระบบแบบ Single sign-on, บริการ AI ของแอปพลิเคชัน Agents, การแปลงเสียงเป็นข้อความและการแปล, เว็บฮุคขาออก และแอปพลิเคชันเช่น Mail, Calendar, GitHub, GitLab หรือ Jira | บริการที่คุณตั้งค่า | ปิดอยู่ จนกว่าคุณจะตั้งค่า |
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะปฏิเสธการเชื่อมต่อไปยังที่อยู่ส่วนตัวและ loopback对于这些 (ลิงก์ตัวอย่าง, เว็บฮุค, แอปพลิเคชัน, การเชื่อมต่อโมเดลของชุมชน) เพื่อให้ข้อความหรืออินทิเกรชันไม่สามารถถูกใช้เพื่อเข้าถึงเครือข่ายภายในของคุณได้ ระบุโฮสต์ภายในที่อนุญาตให้เข้าถึงได้ใน อนุญาติการเช่ือมต่อนภายในท่ีไม่ไว้วางใจถิง (ServiceSettings.AllowedUntrustedInternalConnections, ใน คอนโซลระบบ › สภาพแวดล้อม › นักพัฒนา); ไฟล์ compose ของไซต์ระบุ gifs ไว้ที่นั่น
การรายงานช่องโหว่
รายงานปัญหาความปลอดภัยเป็นการส่วนตัว ตามที่อธิบายไว้ใน นโยบายความปลอดภัยของ Antimatter แทนที่จะรายงานในปัญหาสาธารณะ