אבטחה

רשימת בדיקה להתקנת שרת Antimatter: מה לחשוף, הגבלות והגדרות פרטיות לבדיקה, השירותים החיצוניים שהשרת מתקשר אליהם, ואופן הדיווח על בעיית אבטחה.

מה לחשוף

פורטשירותחשיפה
443/tcp, 443/udp, 80/tcpפרוקסי HTTPS (Caddy או nginx)ציבורי: כך הגולשים מגיעים ל-Antimatter.
8443/udp ו-8443/tcpמדיה לשיחותציבורי, אם משתמשים משתמשים בשיחות מחוץ לרשת שלך.
8065/tcpשרת ה-Web של Antimatterלפרוקסי בלבד: פרסמו אותו על 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpמדידותרשת פרטית בלבד, כאשר מופעל. אין התחברות.
8074/tcp ו-udpGossip של קלאסטרבין צמדי הקלאסטר בלבד.
5432, 9000, 8080, 8066PostgreSQL, אחסון קבצים, שירות GIF, פרוקסי דחיפהלעולם לא. קבצי ה-compose שומרים אותם על רשתות פנימיות בלי פורט מפורסם.

קובץ ה-compose של האתר מפעיל גם כל קונטיינר עם no-new-privileges, מפעיל את Antimatter כמשתמש ללא הרשאות על镜像 distroless, ומפעיל את שירות GIF עם מערכת קבצים בלבד לקריאה. המסד הנתונים, האחסון ושירות GIF נמצאים על רשת בלי גישה לאינטרנט.

רשימת בדיקה לאחר התקנה

  1. צרו חשבון מנהל ראשון לפני שמישהו אחר יכול להגיע לשרת (התקנה).
  2. השגיחו Antimatter רק דרך HTTPS, והגדירו את כתובת האתר לכתובת https:// (דומיין ו-HTTPS).
  3. השאירו את .env, config.json ומפתחות TLS קריאים על ידי root (או משתמש השרת) בלבד: chmod 600 .env.
  4. קבעו谁能 יצור חשבונות, השאירו את הפעלת שרת פתוח כבוי אלא אם הקהילה ציבורית, והפעילו את דרישת אימות כתובת דוא״ל ברגע שהדוא״ל עובד (התחברות וחשבונות).
  5. הפעילו אימות רב-גורמי, והטילו אותו לפחות על חשבונות המנהלים, או השתמשו בזה של ספק הזהות שלכם.
  6. בדקו את החיבורים החיצוניים להלן, ובפרט שרת STUN ששיחות משתמשות בו כברירת מחדל.
  7. לפני הוספת חיבורי מודלים, הגדירו את מפתח ההצפנה של AI (AM_AI_ENCRYPTION_KEY) ושמרו עותק נפרד מגיבויי הבסיס (AI).
  8. בצעו גיבוי ובדקו שחזור (גיבויים ושדרוגים).
  9. שמרו על עדכניות של התמונות או החבילות: תיקוני אבטחה מגיעים עם גרסאות חדשות.

הגבלת קצב

השרת יכול להגביל את מספר בקשות ה-API שכל לקוח שולח. ההגדרה כבויה כברירת מחדל. בקונסולת מערכת › סביבה › הגבלת קצב:

הגדרהמפתחברירת מחדל
הפעלת הגבלת קצבRateLimitSettings.Enableכבוי
מספר שאילתות מקסימלי לשנייהRateLimitSettings.PerSec10
גודל Burst מקסימליRateLimitSettings.MaxBurst100
גודל מאגר זיכרוןRateLimitSettings.MemoryStoreSize10000 לקוחות נעקבים
מגוון הגבלת קצב לפי כתובת רחוקהRateLimitSettings.VaryByRemoteAddrדלוק
מגוון הגבלת קצב לפי משתמשRateLimitSettings.VaryByUserכבוי
מגוון הגבלת קצב לפי HTTP headerRateLimitSettings.VaryByHeaderריק

מאחורי פרוקסי, הגבלות לפי כתובת עובדות רק אם השרת יודע את כתובת כל לקוח (ServiceSettings.TrustedProxyIPHeader ו-ServiceSettings.TrustedProxyIPs, ראו כתובות לקוחות מאחורי פרוקסי). אחרת, כל הבקשות נראות כאילו הן מגיעות מהפרוקסי, וכולם משתפים הגבלה אחת. הדבר נכון גם לגבי סינון IP ולגבי הכתובות ביומני הביקורת.

ניסיונות התחברות מוגבלים בנפרד: מספר ניסיונות התחברות מקסימלי (10) נעלאת חשבון לאחר מספר כשלונות זה.

סינון IP

קונסולת מערכת › הגדרות האתר › סינון כתובות IP מגביל גישה לשרת לפי כתובת IP, עם כללי אישור ודחייה (כתובת או טווח CIDR לכל אחד). כאשר הפעלת סינון IP מופעל, אנשים שכתובתם תואמת לכלל דחייה, או שאין להם כלל אישור כאשר קיימים כללי אישור, לא יכולים להגיע לשרת. העמוד דוחה כללים שיחסמו את כתובתכם. מאחורי פרוקסי, הגדירו תחילה כתובות לקוח (כתובות לקוח מאחורי פרוקסי): אחרת כל הבקשה נראית כאילו מגיעה מהפרוקסי.

העלאות ושיתוף קבצים

הגדרהמיקוםברירת מחדל
גודל קובץ מקסימלי (FileSettings.MaxFileSize)סביבה › אחסון קבצים100 MB. יש לשמור את הגבלת גודל הבקשה של הפרוקסי לפחות בגודל זה.
גודל מטען מרבי (בתים) (ServiceSettings.MaximumPayloadSizeBytes)סביבה › שרת אינטרנט300000: בקשת ה-API הגדולה ביותר שאינה העלאת קבצים
אפשרות שיתוף קבצים (FileSettings.EnableFileAttachments)תצורת האתר › שיתוף קבצים והורדותדלוק
אפשרות העלאת קבצים במובייל, אפשרות הורדת קבצים במכשירים ניידיםתצורת האתר › שיתוף קבצים והורדותדלוק
הפעלת קישורי קבצים ציבוריים (FileSettings.EnablePublicLink)תצורת האתר › קישורים ציבורייםכבוי: כאשר מופעל, אנשים יכולים לשתף קובץ עם קישור שפועל ללא התחברות
הפעלת SVGs (ServiceSettings.EnableSVGs)תצורת האתר › פוסטיםכבוי בשרת חדש: כאשר מופעל, תמונות 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. השרת וכל אדם המצטרף לשיחה שולחים בקשה, המציגה לשרת STUN את כתובת ה-IP ואת הפורט שלו.שרת STUN הציבורי של Cloudflare, stun.cloudflare.comפעיל, כל עוד אפליקציית השיחות מופעלת. כדי לשנות זאת, ראו שיחות.
תצוגות מקדימות לקישורים: השרת מוריד את העמודים המצוינים בהודעות (הפעלת תצוגות מקדימות לקישורי אתרים, ServiceSettings.EnableLinkPreviews)האתרים אליהם משתמשים מקשריםפעיל. ניתן לכבות עם AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false.
התראות דחוף לאפליקציה המוביילפרוקסי ההתראות שלך (התראות דחוף)כבוי עד שאתה מגדיר את הכתובת שלו
שוק האפליקציות הרחוק (PluginSettings.EnableRemoteMarketplace)כתובת (URL) של שוק התוספים שגדרתכבוי, ואין כתובת
דואלשרת SMTP שלךהשרת ברירת המחדל הוא localhost
חיבורי מודלים (כתיבה מחדש, סיכומים, תרגום, קריאה בקול ואפליקציות), חיבורי המודלים של מנהלי הקהילהספקי ה־AI שנוספו בקונסולת מערכת › AI › חיבורי מודלים או בהגדרות של קהילה (AI)אין, עד שמישהו יוסיף
התחברות מאוחדת (SSO), שירותי ה־AI של אפליקציית Agents, תמלול וקול, תרגום, Webhooks יוצאים, ואפליקציות כמו Mail, Calendar, GitHub, GitLab או Jiraהשירותים שאתה מציבכבויים עד שאתה מציב אותם

ברירת המחדל, השרת מסרב להתחבר לכתובות פרטיות ולכתובות loopback עבור אלה (תצוגות מקדימות, Webhooks, אפליקציות, חיבורי מודלים של קהילות), כך שהודעה או אינטגרציה לא יכולות לשמש להגעה לרשת הפנימית שלך. יש לרשום את המארחים הפנימיים אליהם מותר להגיע באפשרות חיבורים פנימיים לא אמורים אל (ServiceSettings.AllowedUntrustedInternalConnections, בקונסולת מערכת › סביבה › מפתח); קובץ ה־compose של האתר מרשם שם את gifs.

דיווח על פגיעות

יש לדווח על בעיות אבטחה בסתר, כמתואר במדיניות האבטחה של Antimatter, ולא בטיקים ציבוריים.