الأمان

قائمة تحقق لتعزيز أمان خادم Antimatter: ما يجب كشفه، الحدود وإعدادات الخصوصية التي يجب مراجعتها، الخدمات الخارجية التي يتواصل معها الخادم، وكيفية الإبلاغ عن مشكلة أمنية.

ما يجب كشفه

المنفذالخدمةالاستخدام
443/tcp, 443/udp, 80/tcpوكيل HTTPS الخاص بك (Caddy أو nginx)عام: هذا هو الطريقة التي يصل بها المستخدمون إلى Antimatter.
8443/udp و 8443/tcpوسائط المكالماتعام، إذا كان المستخدمون يستخدمون المكالمات من خارج شبكتك.
8065/tcpخادم الويب الخاص بـ Antimatterللمنصة فقط: انشره على 127.0.0.1 (HTTP_PORT=127.0.0.1:8065).
8067/tcpالمقاييسلشبكة خاصة فقط، عند التفعيل. لا يتطلب تسجيل دخول.
8074/tcp و udpالتواصل بين عقد العنقودبين عقد العنقود فقط.
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. قبل إضافة اتصالات النماذج، اضبط مفتاح تشفير الذكاء الاصطناعي (AM_AI_ENCRYPTION_KEY) واحتفظ بنسخة منه منفصلة عن نسخ احتياطية لقاعدة البيانات (الذكاء الاصطناعي).
  8. أنشئ نسخًا احتياطية، و اختبر استعادة (النسخ الاحتياطي والتحديثات).
  9. حافظ على تحديث الصور أو الحزم: تصل إصلاحات الأمان مع الإصدارات الجديدة.

تحديد المعدل

يمكن للخادم تحديد عدد طلبات واجهة برمجة التطبيقات (API) التي يمكن لكل عميل إرسالها. تكون هذه الميزة معطّلة افتراضيًا. في وحدة التحكم بالنظام › البيئة › تحديد معدل الطلبات:

الإعدادالمفتاحالافتراضي
تفعيل تحديد المعدلRateLimitSettings.Enableمعطّل
الحد الأقصى للاستعلامات في الثانيةRateLimitSettings.PerSec10
الحد الأقصى لحجم الاندفاعRateLimitSettings.MaxBurst100
حجم مخزن الذاكرةRateLimitSettings.MemoryStoreSizeتتبع 10000 عميل
تغيير حد المعدل حسب العنوان البعيدRateLimitSettings.VaryByRemoteAddrمفعّل
تغيير حد المعدل حسب المستخدمRateLimitSettings.VaryByUserمعطّل
تغيير حد المعدل حسب ترويسة HTTPRateLimitSettings.VaryByHeaderفارغ

عند العمل خلف وكيل (proxy)، لا تعمل الحدود المبنية على العنوان فقط إلا إذا كان الخادم يعرف عنوان كل عميل (ServiceSettings.TrustedProxyIPHeader وServiceSettings.TrustedProxyIPs، انظر عناوين العملاء خلف الوكيل). وإلا، يبدو أن كل الطلبات تأتي من الوكيل، فيشارك الجميع حدًا واحدًا. ينطبق الأمر نفسه على تصفية عناوين IP وعلى العناوين في سجلات التدقيق.

تُقيَّد محاولات تسجيل الدخول بشكل منفصل: الحد الأقصى لعدد محاولات تسجيل الدخول (10) يقفل الحساب بعد هذا العدد من كلمات المرور الخاطئة.

تصفية عناوين IP

يحدد وحدة التحكم بالنظام › إعدادات الموقع › تصفية عناوين IP الوصول إلى الخادم حسب عنوان IP، مع قواعد للسماح والرفض (عنوان واحد أو نطاق CIDR لكل قاعدة). عند تفعيل تفعيل تصفية IP، لا يستطيع الوصول إلى الخادم الأشخاص الذين يطابق عنوانهم قاعدة رفض، أو لا يطابقون أي قاعدة سماح في حال وجود قواعد سماح. ترفض الصفحة القواعد التي من شأنها حظر عنوانك الخاص. عند العمل خلف وكيل (proxy)، اضبط عناوين العملاء أولًا (عناوين العملاء خلف وكيل): وإلا بدا وكأن جميع الطلبات تأتي من الوكيل.

الرفع ومشاركة الملفات

الإعدادالموقعالافتراضي
الحد الأقصى لحجم الملف (FileSettings.MaxFileSize)البيئة › تخزين الملفات100 ميغابايت. حافظ على حد حجم طلبات الوكيل مساويًا لهذا الحد على الأقل.
الحد الأقصى لحجم الحمولة (بايت) (ServiceSettings.MaximumPayloadSizeBytes)البيئة › خادم الويب300000: أكبر طلب لواجهة برمجة التطبيقات باستثناء رفع الملفات
السماح بمشاركة الملفات (FileSettings.EnableFileAttachments)تكوين الموقع › مشاركة الملفات والتنزيلمفعّل
السماح برفع الملفات على الجوال، السماح بتنزيل الملفات على الهاتف المحمولتكوين الموقع › مشاركة الملفات والتنزيلمفعّل
تفعيل الروابط العامة للملفات (FileSettings.EnablePublicLink)تكوين الموقع › الروابط العامةمعطّل: عند التفعيل، يمكن للأشخاص مشاركة ملف عبر رابط يعمل دون تسجيل الدخول
تفعيل ملفات SVG (ServiceSettings.EnableSVGs)تكوين الموقع › المنشوراتمعطّل على الخادم الجديد: عند التفعيل، تُعرض صور SVG مضمنة
تفعيل البحث في الملفات (ServiceSettings.EnableFileSearch)تكوين الموقع › مشاركة الملفات والتنزيلتشغيل: يؤدي إيقافه إلى إخفاء البحث في الملفات من تبويب الملفات في نتائج البحث، في كل من تطبيق الويب الكلاسيكي وFusion
تفعيل فهرسة الملفات (ElasticsearchSettings.EnableFileIndexing)البيئة › Elasticsearch، مع إعداد Elasticsearch أو OpenSearchتشغيل: يؤدي إيقافه إلى التوقف عن فهرسة الملفات الجديدة أو المعدلة، لكن الملفات المفهرسة سابقاً تبقى قابلة للبحث

لا يفحص Antimatter الملفات المرفوعة بحثًا عن البرامج الخبيثة.

إعدادات الخصوصية

في وحدة التحكم بالنظام › إعدادات الموقع › المستخدمون والفِرَق:

الإعدادالمفتاحالافتراضيوظيفته
إظهار عنوان البريد الإلكترونيPrivacySettings.ShowEmailAddressمفعّلعند إيقافه، تُخفى عناوين البريد الإلكتروني للأعضاء عن الجميع ما عدا المديرين. يُنصح بإيقافه على الخوادم العامة.
إظهار الاسم الكاملPrivacySettings.ShowFullNameمفعّلعند إيقافه، تُخفى الأسماء الكاملة وتُعرض أسماء المستخدمين بدلاً منها.
تفعيل التجاهل والحظر وطلبات الرسائلPrivacySettings.EnableUserBlockingمفعّلانظر أدناه.
تفعيل إمكانية فتح المستخدمين لقنوات رسائل مباشرة معTeamSettings.RestrictDirectMessageأي مستخدم على خادم Antimatterأو أي عضو في الفريق: الأشخاص الذين يتشاركون مجتمعاً فقط.

التجاهل، الحظر وطلبات الرسائل

عند تفعيل تفعيل التجاهل والحظر وطلبات الرسائل (وهو الخيار الافتراضي)، يمكن للأشخاص تجاهل بعضهم البعض وحظر بعضهم البعض، واختيار ما إذا كانت الرسائل المباشرة من أشخاص لا يعرفونهم تصل بشكل طبيعي، أو تنتظر كطلبات رسائل، أو تُرفض تماماً (لا يمكن للشخص المرفوض بدء رسالة مباشرة أو جماعية معهم، أو الكتابة في رسالة لم يتم قبولها بعد). يمكن أن يختلف كل خيار لكل مجتمع، ويسود الخيار الأكثر تقييداً من بين المجتمعات المشتركة بين الأشخاص. يناسب هذا المجتمعات العامة. في مكان العمل حيث يجب أن يتمكن الزملاء دائماً من الوصول إلى بعضهم البعض، قم بإيقافه (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): لن يتم فرض أي من خيارات الرسائل المباشرة بعد الآن، لكن القوائم والخيارات التي اختارها الأشخاص تبقى محفوظة، وتُطبَّق مرة أخرى إذا أعدت تفعيله. يتم فرض تفاصيل الملف الشخصي التي يراها الأشخاص في كل مجتمع في كلتا الحالتين؛ يرى مسؤولو النظام والشخص نفسه كل التفاصيل دائماً.

الجلسات والرموز

  • مدة الجلسة ووقت انتهاء الخمول: انظر تسجيل الدخول والحسابات. الجلسات الأقصر تعني أن جهازاً محمولاً أو هاتفاً مفقوداً سيبقى مسجلاً الدخول لفترة أقل.
  • يسمح تفعيل رموز الوصول الشخصية (ServiceSettings.EnableUserAccessTokens، معطّل) للأشخاص بإنشاء رموز API؛ ويحدد الحد الأقصى لصلاحية رمز الوصول الشخصي (أيام) مدة صلاحيتها. كلاهما موجود في وحدة التحكم بالنظام › التكاملات › إدارة التكاملات.
  • لتسجيل خروج جميع المستخدمين دفعة واحدة، على سبيل المثال بعد اشتباه في خرق أمني: إلغاء جميع الجلسات في وحدة التحكم بالنظام › إدارة المستخدمين › المستخدمون.
  • في واجهة Antimatter، يتم تنبيه الأشخاص عند تسجيل دخول جديد إلى حساباتهم الخاصة أثناء اتصالهم، ويمكنهم قطع الاتصال بأنفسهم (انظر أماكن تسجيل دخولك). لا يتم إخطار مسؤولي النظام بتسجيلات دخول الآخرين.

الاتصالات مع الخدمات الخارجية

لا يتواصل 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
اتصالات النماذج (إعادة الصياغة، الملخصات، الترجمة، القراءة بصوت عالٍ، الوكلاء والتطبيقات)، واتصالات النماذج الخاصة بمشرفي المجتمعاتمقدمو خدمات الذكاء الاصطناعي المضافون في وحدة التحكم بالنظام › الذكاء الاصطناعي › اتصالات النماذج أو في إعدادات المجتمع (الذكاء الاصطناعي)لا شيء حتى يضيف أحدهم اتصالاً
تسجيل الدخول أحادي الجلسة، وخدمات الذكاء الاصطناعي لتطبيق الدردشة بالذكاء الاصطناعي، وتحويل الكلام إلى نص والترجمة، وخطافات الويب الصادرة، والتطبيقات مثل البريد الإلكتروني والتقويم وGitHub وGitLab أو Jiraالخدمات التي تقوم بتكوينهامعطّل حتى تقوم بتكوينها

افتراضياً، يرفض الخادم الاتصال بالعناوين الخاصة وعناوين الحلقة الراجعة (loopback) لهذه الخدمات (معاينة الروابط، خطافات الويب، التطبيقات، اتصالات نماذج المجتمعات)، بحيث لا يمكن استخدام رسالة أو تكامل للوصول إلى شبكتك الداخلية. حدد المضيفين الداخليين الذين يمكن الوصول إليهم في السماح باتصالات داخلية غير موثوقة إلى (ServiceSettings.AllowedUntrustedInternalConnections، في وحدة التحكم بالنظام › البيئة › المطور)؛ حيث يدرج ملف التكوين (compose) الخاص بالموقع gifs هناك.

الإبلاغ عن ثغرة أمنية

أبلغ عن المشكلات الأمنية بشكل خاص، كما هو موضح في سياسة أمان Antimatter، وليس في المشكلات العامة.