الأمان
قائمة تحقق لتعزيز أمان خادم 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, 8066 | PostgreSQL، تخزين الملفات، خدمة GIF، وكيل الدفع | أبدًا. تحافظ ملفات compose عليها على شبكات داخلية بدون منفذ منشور. |
تشغّل ملف compose الخاص بالموقع أيضًا كل حاوية مع no-new-privileges، وتشغّل Antimatter كمستخدم غير مخصص على صورة distroless، وتشغّل خدمة GIF بنظام ملفات للقراءة فقط. قاعدة البيانات والتخزين وخدمة GIF موجودة على شبكة بدون اتصال بالإنترنت.
قائمة تحقق بعد التثبيت
- أنشئ حساب المسؤول الأول قبل أن يتمكن أي شخص آخر من الوصول إلى الخادم (التثبيت).
- قدّم Antimatter عبر HTTPS فقط، و اضبط عنوان الموقع على عنوان
https://(النطاق و HTTPS). - اجعل
.envوconfig.jsonومفاتيح TLS قابلة للقراءة بواسطة root (أو مستخدم الخادم) فقط:chmod 600 .env. - حدّد من يمكنه إنشاء الحسابات، واترك تفعيل الخادم المفتوح معطّلًا ما لم تكن المجموعة عامة، ثم فعّل إلزامية التحقق من البريد الإلكتروني بمجرد بدء عمل البريد (تسجيل الدخول والحسابات).
- فعّل المصادقة متعددة العوامل، و اجعلها إلزامية لحسابات المديرين على الأقل، أو استخدم مصادقة مزود الهوية الخاص بك.
- راجع الاتصالات الخارجية أدناه، و خاصة خادم STUN الذي تستخدمه المكالمات افتراضيًا.
- قبل إضافة اتصالات النماذج، اضبط مفتاح تشفير الذكاء الاصطناعي (
AM_AI_ENCRYPTION_KEY) واحتفظ بنسخة منه منفصلة عن نسخ احتياطية لقاعدة البيانات (الذكاء الاصطناعي). - أنشئ نسخًا احتياطية، و اختبر استعادة (النسخ الاحتياطي والتحديثات).
- حافظ على تحديث الصور أو الحزم: تصل إصلاحات الأمان مع الإصدارات الجديدة.
تحديد المعدل
يمكن للخادم تحديد عدد طلبات واجهة برمجة التطبيقات (API) التي يمكن لكل عميل إرسالها. تكون هذه الميزة معطّلة افتراضيًا. في وحدة التحكم بالنظام › البيئة › تحديد معدل الطلبات:
| الإعداد | المفتاح | الافتراضي |
|---|---|---|
| تفعيل تحديد المعدل | RateLimitSettings.Enable | معطّل |
| الحد الأقصى للاستعلامات في الثانية | RateLimitSettings.PerSec | 10 |
| الحد الأقصى لحجم الاندفاع | RateLimitSettings.MaxBurst | 100 |
| حجم مخزن الذاكرة | RateLimitSettings.MemoryStoreSize | تتبع 10000 عميل |
| تغيير حد المعدل حسب العنوان البعيد | RateLimitSettings.VaryByRemoteAddr | مفعّل |
| تغيير حد المعدل حسب المستخدم | RateLimitSettings.VaryByUser | معطّل |
| تغيير حد المعدل حسب ترويسة HTTP | RateLimitSettings.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، وليس في المشكلات العامة.