امنیت

یک چک‌لیست برای امن‌سازی سرور Antimatter: چه چیزهایی را در دسترس قرار دهید، محدودیت‌ها و تنظیمات حریم خصوصی‌ای که باید بررسی کنید، سرویس‌های خارجی که سرور با آن‌ها در ارتباط است، و نحوه گزارش‌دهن یک مشکل امنیتی.

چه چیزهایی را در دسترس قرار دهید

پورتسرویسدسترسی
443/tcp, 443/udp, 80/tcpپروکسی HTTPS شما (Caddy یا nginx)عمومی: این راهی است که افراد به Antimatter دسترسی پیدا می‌کنند.
8443/udp and 8443/tcpرسانه مکالمهعمومی، اگر افراد از خارج شبکه شما از مکالمه استفاده کنند.
8065/tcpسرور وب Antimatterفقط برای پروکسی: آن را روی 127.0.0.1 منتشر کنید (HTTP_PORT=127.0.0.1:8065).
8067/tcpMetricsفقط شبکه خصوصی، اگر فعال باشد. بدون ورود.
8074/tcp and udpگپ خوشهفقط بین گره‌های خوشه.
5432, 9000, 8080, 8066PostgreSQL، ذخیره‌سازی فایل، سرویس GIF، پروکسی pushهرگز. فایل‌های 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. تعیین کنید چه کسانی می‌توانند حساب کاربری بسازند، مگر اینکه جامعه عمومی باشد، فعال کردن Open Server را غیرفعال نگه دارید و پس از اطمینان از عملکرد ایمیل، نیاز به تایید ایمیل را فعال کنید (ورود به سیستم و حساب‌ها).
  5. احراز هویت چندعاملی را فعال کنید و حداقل برای حساب‌های مدیران آن را اجباری کنید، یا از ارائه‌دهنده هویت خود استفاده کنید.
  6. اتصالات خارجی زیر را بررسی کنید، به‌ویژه سرور STUN که مکالمه به‌طور پیش‌فرض از آن استفاده می‌کند.
  7. پیش از افزودن اتصالات مدل، کلید رمزنگاری هوش مصنوعی (AM_AI_ENCRYPTION_KEY) را تنظیم کنید و یک نسخه از آن را جدا از پشتیبان‌های پایگاه داده نگه دارید (هوش مصنوعی).
  8. پشتیبان‌گیری کنید و یک بازیابی را آزمایش کنید (پشتیبان‌گیری و ارتقاء).
  9. تصاویر یا بسته‌ها را به‌روز نگه دارید؛ اصلاحات امنیتی با نسخه‌های جدید ارائه می‌شوند.

محدودسازی نرخ

سرور می‌تواند تعداد درخواست‌های API که هر کلاینت ارسال می‌کند را محدود کند. این گزینه به‌طور پیش‌فرض غیرفعال است. در کنسول سیستم › محیط › محدود کردن نرخ:

تنظیمکلیدمقدار پیش‌فرض
فعال کردن محدودیت نرخRateLimitSettings.Enableخاموش
حداکثر درخواست در ثانیهRateLimitSettings.PerSec10
حداکثر اندازه انفجارRateLimitSettings.MaxBurst100
اندازه فروشگاه حافظهRateLimitSettings.MemoryStoreSize10000 کلاینت ردیابی می‌شود
تغییر محدودیت نرخ بر اساس آدرس راه دورRateLimitSettings.VaryByRemoteAddrروشن
تغییر محدودیت نرخ بر اساس کاربرRateLimitSettings.VaryByUserخاموش
تغییر محدودیت نرخ بر اساس هدر HTTPRateLimitSettings.VaryByHeaderخالی

در پشت یک پروکسی، محدودسازی بر اساس آدرس فقط در صورتی کار می‌کند که سرور آدرس هر کلاینت را بداند (ServiceSettings.TrustedProxyIPHeader و ServiceSettings.TrustedProxyIPs، به آدرس‌های کلاینت پشت پروکسی مراجعه کنید). در غیر این صورت، به نظر می‌رسد همه درخواست‌ها از پروکسی می‌آیند و همه یک محدودیت مشترک دارند. همین موضوع برای فیلتر IP و آدرس‌های در لاگ‌های ممیزی نیز صدق می‌کند.

تلاش‌های ورود به سیستم به‌طور جداگانه محدود می‌شوند: حداکثر تلاش برای ورود به سیستم (۱۰) پس از این تعداد رمز عبور اشتباه، حساب را قفل می‌کند.

فیلتر IP

کنسول سیستم › پیکربندی سایت › فیلتر IP دسترسی به سرور را بر اساس آدرس IP محدود می‌کند و دارای قوانین اجازه و رد است (هر کدام یک آدرس یا یک محدوده CIDR). با فعال بودن فعال کردن فیلتر IP، افرادی که آدرس آن‌ها با یک قانون رد مطابقت دارد، یا در صورت وجود قوانین اجازه، با هیچ قانون اجازه‌ای مطابقت ندارد، نمی‌توانند به سرور دسترسی پیدا کنند. این صفحه قوانینی که آدرس خود شما را مسدود می‌کنند را رد می‌کند. در پشت یک پروکسی، ابتدا آدرس‌های کلاینت را تنظیم کنید (آدرس‌های کلاینت پشت پروکسی): در غیر این صورت، به نظر می‌رسد همه درخواست‌ها از سمت پروکسی می‌آیند.

بارگذاری و اشتراک‌گذاری فایل

تنظیممحل اجرامقدار پیش‌فرض
حداکثر اندازه فایل (FileSettings.MaxFileSize)محیط › ذخیره‌سازی فایل100 مگابایت. محدودیت اندازه درخواست پروکسی را حداقل به این مقدار تنظیم کنید.
حجم حداکثری Payload (بایت) (ServiceSettings.MaximumPayloadSizeBytes)محیط › سرور وب300000: بزرگ‌ترین درخواست API غیر از بارگذاری فایل
اجازه اشتراک گذاری فایل (FileSettings.EnableFileAttachments)پیکربندی سایت › اشتراک‌گذاری و دانلود فایلروشن
اجازه آپلود فایل در موبایل، اجازه دانلود فایل در موبایلپیکربندی سایت › اشتراک‌گذاری و دانلود فایلروشن
فعال کردن پیوندهای فایل عمومی (FileSettings.EnablePublicLink)پیکربندی سایت › لینک‌های عمومیغیرفعال: در صورت فعال بودن، افراد می‌توانند فایلی را با لینکی به اشتراک بگذارند که بدون ورود به سیستم کار می‌کند
SVG ها را فعال کنید (ServiceSettings.EnableSVGs)پیکربندی سایت › پست‌هادر سرور جدید غیرفعال است: در صورت فعال بودن، تصاویر SVG به‌صورت درون‌خطی نمایش داده می‌شوند
فعال‌سازی جستجوی فایل (ServiceSettings.EnableFileSearch)پیکربندی سایت › اشتراک‌گذاری و دانلود فایلon: off جستجوی فایل را از تب «فایل‌ها» در نتایج جستجو، هم در وب‌اپ کلاسیک و هم در Fusion، مخفی می‌کند
فعال‌سازی فهرست‌بندی فایل (ElasticsearchSettings.EnableFileIndexing)محیط › Elasticsearch، با تنظیم Elasticsearch یا OpenSearchon: off فهرست‌بندی فایل‌های جدید یا تغییر یافته را متوقف می‌کند، اما فایل‌های فهرست‌بندی شده قبلی همچنان قابل جستجو هستند

Antimatter بارگذاری‌ها را برای بدافزار اسکن نمی‌کند.

تنظیمات حریم خصوصی

در کنسول سیستم › پیکربندی سایت › کاربران و تیم ها:

تنظیمکلیدمقدار پیش‌فرضعملکرد
نمایش آدرس ایمیلPrivacySettings.ShowEmailAddressروشنخاموش، نشانی‌های ایمیل اعضا از همه پنهان می‌شوند، به‌جز مدیران. روی سرورهای عمومی آن را خاموش نگه دارید.
نمایش نام کاملPrivacySettings.ShowFullNameروشنخاموش، نام‌های کامل پنهان می‌شوند و به‌جای آن نام‌های کاربری نمایش داده می‌شوند.
فعال‌سازی نادیده‌گرفتن، مسدودسازی و درخواست پیامPrivacySettings.EnableUserBlockingروشنبه توضیحات زیر مراجعه کنید.
فعال کردن کاربران برای باز کردن کانال های پیام مستقیم باTeamSettings.RestrictDirectMessageهر کاربری روی سرور Antimatterیا هر یک از اعضای تیم: فقط افرادی که یک جامعه مشترک دارند.

نادیده‌گرفتن، مسدودسازی و درخواست‌های پیام

با فعال بودن فعال‌سازی نادیده‌گرفتن، مسدودسازی و درخواست پیام (پیش‌فرض)، افراد می‌توانند یکدیگر را نادیده بگیرند یا مسدود کنند و تعیین کنند که پیام‌های مستقیم از افراد ناشناس به صورت عادی دریافت شوند، به عنوان درخواست پیام در انتظار بمانند، یا به طور کامل رد شوند (فردی که پیامش رد شده است نمی‌تواند پیام مستقیم یا گروهی با آن‌ها شروع کند یا در پیامی که هنوز پذیرفته نشده است بنویسد); این انتخاب می‌تواند برای هر جامعه متفاوت باشد و محدودکننده‌ترین تنظیم در جوامع مشترک بین افراد اعمال می‌شود. این حالت برای جوامع عمومی مناسب است. در محیط کاری که همکاران باید همیشه بتوانند با یکدیگر ارتباط برقرار کنند، آن را غیرفعال کنید (AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): هیچ‌یک از این گزینه‌های پیام مستقیم اعمال نمی‌شوند، اما لیست‌ها و انتخاب‌هایی که افراد انجام داده‌اند حفظ می‌شوند و در صورت فعال کردن مجدد، دوباره اعمال خواهند شد. جزئیات پروفایلی که افراد هر جامعه می‌بینند، در هر دو حالت اعمال می‌شود؛ مدیران سیستم و خود فرد همیشه همه چیز را می‌بینند.

نشست‌ها و توکن‌ها

  • مدت نشست‌ها و مهلت بی‌حرکتی: به ورود و حساب‌ها مراجعه کنید. نشست‌های کوتاه‌تر به این معناست که یک لپ‌تاپ یا تلفن گم‌شده برای مدت کمتری وارد سیستم باقی می‌ماند.
  • فعال کردن رمزهای دسترسی شخصی (ServiceSettings.EnableUserAccessTokens، غیرفعال) به افراد اجازه می‌دهد توکن‌های API ایجاد کنند؛ حداکثر مدت اعتبار توکن دسترسی شخصی (روز) این مدت را محدود می‌کند. هر دو در کنسول سیستم › ادغام ها › مدیریت یکپارچه سازی قرار دارند.
  • برای خروج هم‌زمان همه کاربران، مثلاً پس از یک نقض امنیتی مشکوک: لغو همه جلسات در کنسول سیستم › مدیریت کاربر › کاربران.
  • در رابط کاربری Antimatter، افراد هنگام اتصال به حساب خود از ورود جدید به حسابشان آگاه می‌شوند و می‌توانند خودشان آن را قطع کنند (به کجا وارد شده‌اید مراجعه کنید). به مدیران سیستم از ورود سایر افراد اطلاع داده نمی‌شود.

اتصال به سرویس‌های خارجی

Antimatter با هیچ سرویسی که توسط Mattermost, Inc. اجرا شود، ارتباط برقرار نمی‌کند. هیچ داده‌ای برای تحلیل، گزارش خطا یا بررسی به‌روزرسانی‌های امنیتی ارسال نمی‌شود و هیچ اعلان محصولی دریافت نمی‌شود. پیکربندی‌هایی که از Mattermost منتقل شده‌اند و هنوز نام یکی از سرویس‌های Mattermost (سرویس‌های اعلان push، بازار اپلیکیشن‌ها، اعلان‌ها یا سرور STUN برای مکالمات) را ذکر می‌کنند، باعث نمی‌شوند سرور با آن‌ها ارتباط برقرار کند: آن نشانی‌ها نادیده گرفته می‌شوند.

سرور و اپلیکیشن‌ها فقط برای ویژگی‌هایی که به آن‌ها نیاز دارند و به سرویس‌هایی که شما پیکربندی می‌کنید، با سرویس‌های خارجی دیگر ارتباط برقرار می‌کنند:

قابلیتاتصالاتبه‌طور پیش‌فرض
مکالمات: یافتن نشانی‌های عمومی با STUN. سرور و هر فردی که به مکالمه می‌پیوندد یک درخواست ارسال می‌کند که نشانی IP و پورت او را به سرور STUN نشان می‌دهد.سرور STUN عمومی Cloudflare، stun.cloudflare.comروشن، در حالی که برنامه مکالمه فعال است. برای تغییر آن، به مکالمه مراجعه کنید.
پیش‌نمایش لینک‌ها: سرور صفحاتی را که در پیام‌ها به آن‌ها لینک داده شده دریافت می‌کند (فعال کردن پیش نمایش لینک وب سایت، ServiceSettings.EnableLinkPreviews)وب‌سایت‌هایی که افراد به آن‌ها پیوند می‌دهندروشن. برای خاموش کردن از AM_SERVICESETTINGS_ENABLELINKPREVIEWS=false استفاده کنید.
اعلان‌های push به اپلیکیشن موبایلپروکسی پوش اختصاصی شما (اعلان‌های پوش)خاموش تا زمانی که آدرس آن را تنظیم کنید
بازارچه برنامه‌های از راه دور (PluginSettings.EnableRemoteMarketplace)URL بازار که شما تنظیم کرده‌ایدخاموش، و بدون آدرس
ایمیلسرور SMTP شماسرور پیش‌فرض localhost است
اتصالات مدل (بازنویسی، خلاصه‌سازی، ترجمه، خواندن با صدای بلند، عوامل و برنامه‌ها)، اتصالات مدل خود مدیران جامعهارائه‌دهندگان هوش مصنوعی اضافه شده در کنسول سیستم › هوش مصنوعی › اتصالات مدل یا در تنظیمات یک جامعه (هوش مصنوعی)تا زمانی که کسی یکی را اضافه نکند، هیچ‌کدام
ورود یکپارچه، خدمات هوش مصنوعی برنامه چت هوش مصنوعی، تبدیل گفتار به نوشتار و ترجمه، وب‌هوک‌های خروجی، و برنامه‌هایی مانند Mail، تقویم، GitHub، GitLab یا Jiraسرویس‌هایی که پیکربندی می‌کنیدخاموش تا زمانی که پیکربندی کنید

به‌طور پیش‌فرض، سرور از اتصال به آدرس‌های خصوصی و حلقوی (loopback) برای این موارد (پیش‌نمایش پیوندها، وب‌هوک‌ها، برنامه‌ها، اتصالات مدل جامعه) خودداری می‌کند، بنابراین نمی‌توان از یک پیام یا یک یکپارچه‌سازی برای دسترسی به شبکه داخلی شما استفاده کرد. میزبان‌های داخلی که مجاز به دسترسی هستند را در اتصالات داخلی غیرقابل اعتماد را مجاز کنید (ServiceSettings.AllowedUntrustedInternalConnections، در کنسول سیستم › محیط › توسعه دهنده) فهرست کنید؛ فایل compose سایت، gifs را در آنجا فهرست می‌کند.

گزارش آسیب‌پذیری

مشکلات امنیتی را به‌صورت خصوصی گزارش دهید، همان‌طور که در سیاست امنیتی Antimatter توضیح داده شده است، نه در تیکت‌های عمومی.