امنیت
یک چکلیست برای امنسازی سرور 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/tcp | Metrics | فقط شبکه خصوصی، اگر فعال باشد. بدون ورود. |
| 8074/tcp and udp | گپ خوشه | فقط بین گرههای خوشه. |
| 5432, 9000, 8080, 8066 | PostgreSQL، ذخیرهسازی فایل، سرویس GIF، پروکسی push | هرگز. فایلهای compose آنها را روی شبکههای داخلی بدون پورت منتشرشده نگه میدارند. |
فایل compose سایت همچنین هر کانتینری را با no-new-privileges اجرا میکند، Antimatter را بهعنوان یک کاربر غیر-جداگانه روی یک تصویر distroless اجرا میکند، و سرویس GIF را با یک سیستم فایل فقط-خواندنی اجرا میکند. پایگاه داده، ذخیرهسازی و سرویس GIF روی یک شبکه بدون دسترسی به اینترنت قرار دارند.
چکلیست پس از نصب
- حساب مدیر اول را قبل از اینکه هر کس دیگری بتواند به سرور دسترسی پیدا کند، ایجاد کنید (نصب).
- Antimatter را فقط از طریق HTTPS ارائه دهید و آدرس سایت را به آدرس
https://تنظیم کنید (دامنه و HTTPS). .env،config.jsonو کلیدهای TLS را فقط برای root (یا کاربر سرور) خوانا نگه دارید:chmod 600 .env.- تعیین کنید چه کسانی میتوانند حساب کاربری بسازند، مگر اینکه جامعه عمومی باشد، فعال کردن Open Server را غیرفعال نگه دارید و پس از اطمینان از عملکرد ایمیل، نیاز به تایید ایمیل را فعال کنید (ورود به سیستم و حسابها).
- احراز هویت چندعاملی را فعال کنید و حداقل برای حسابهای مدیران آن را اجباری کنید، یا از ارائهدهنده هویت خود استفاده کنید.
- اتصالات خارجی زیر را بررسی کنید، بهویژه سرور STUN که مکالمه بهطور پیشفرض از آن استفاده میکند.
- پیش از افزودن اتصالات مدل، کلید رمزنگاری هوش مصنوعی (
AM_AI_ENCRYPTION_KEY) را تنظیم کنید و یک نسخه از آن را جدا از پشتیبانهای پایگاه داده نگه دارید (هوش مصنوعی). - پشتیبانگیری کنید و یک بازیابی را آزمایش کنید (پشتیبانگیری و ارتقاء).
- تصاویر یا بستهها را بهروز نگه دارید؛ اصلاحات امنیتی با نسخههای جدید ارائه میشوند.
محدودسازی نرخ
سرور میتواند تعداد درخواستهای API که هر کلاینت ارسال میکند را محدود کند. این گزینه بهطور پیشفرض غیرفعال است. در کنسول سیستم › محیط › محدود کردن نرخ:
| تنظیم | کلید | مقدار پیشفرض |
|---|---|---|
| فعال کردن محدودیت نرخ | RateLimitSettings.Enable | خاموش |
| حداکثر درخواست در ثانیه | RateLimitSettings.PerSec | 10 |
| حداکثر اندازه انفجار | RateLimitSettings.MaxBurst | 100 |
| اندازه فروشگاه حافظه | RateLimitSettings.MemoryStoreSize | 10000 کلاینت ردیابی میشود |
| تغییر محدودیت نرخ بر اساس آدرس راه دور | RateLimitSettings.VaryByRemoteAddr | روشن |
| تغییر محدودیت نرخ بر اساس کاربر | RateLimitSettings.VaryByUser | خاموش |
| تغییر محدودیت نرخ بر اساس هدر HTTP | RateLimitSettings.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 یا OpenSearch | on: 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 توضیح داده شده است، نه در تیکتهای عمومی.