セキュリティ
Antimatterサーバーを強化するためのチェックリスト:公開するもの、確認すべき制限とプライバシー設定、サーバーが連絡する外部サービス、セキュリティ問題の報告方法。
公開するもの
| ポート | サービス | 公開範囲 |
|---|---|---|
| 443/tcp, 443/udp, 80/tcp | HTTPSプロキシ (Caddyまたはnginx) | 公開:これがAntimatterへのアクセス経路です。 |
| 8443/udpおよび8443/tcp | 通話メディア | ネットワーク外から通話を使用する場合、公開します。 |
| 8065/tcp | AntimatterのWebサーバー | プロキシ専用: 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経由でのみ配信し、サイトURLを
https://アドレスに設定します (ドメインとHTTPS)。 .env、config.json、TLSキーはroot(またはサーバーのユーザー)のみが読み取れるようにします:chmod 600 .env。- アカウント作成を許可するユーザーを決定します。コミュニティが公開でない限り、オープンサーバーを有効にするはオフにしてください。メール機能が正常に動作するようになったら、電子メールアドレスの確認が必要をオンにします(サインインとアカウント)。
- 多要素認証を有効にし、少なくとも管理者アカウントには強制するか、アイデンティティプロバイダーのものを使用します。
- 以下の外部接続を確認し、特に通話がデフォルトで使用するSTUNサーバーを確認します。
- モデル接続を追加する前に、AI暗号化キー(
AM_AI_ENCRYPTION_KEY)を設定し、データベースのバックアップとは別の場所にコピーを保管してください(AI)。 - バックアップを作成し、リストアをテストします (バックアップとアップグレード)。
- イメージまたはパッケージを最新に保ってください。セキュリティ修正は新しいバージョンとともに提供されます。
レート制限
サーバーは、各クライアントからのAPIリクエスト数を制限できます。デフォルトでは無効です。システムコンソール › 環境 › 投稿頻度制限で設定します:
| 設定項目 | キー | デフォルト値 |
|---|---|---|
| 投稿頻度制限を有効にする | RateLimitSettings.Enable | オフ |
| 最大クエリー数(1秒当たり) | RateLimitSettings.PerSec | 10 |
| 最大バーストサイズ | RateLimitSettings.MaxBurst | 100 |
| メモリー保存サイズ | RateLimitSettings.MemoryStoreSize | 追跡対象のクライアント数: 10000 |
| リモートアドレスで投稿頻度制限を変更 | RateLimitSettings.VaryByRemoteAddr | on |
| ユーザーによって投稿頻度制限を変更 | RateLimitSettings.VaryByUser | オフ |
| HTTPヘッダーで投稿頻度制限を変更 | RateLimitSettings.VaryByHeader | 空 |
プロキシの背後では、サーバーが各クライアントのアドレスを知っている場合 (ServiceSettings.TrustedProxyIPHeader および ServiceSettings.TrustedProxyIPs、プロキシの背後のクライアントアドレスを参照) に限り、アドレスによる制限が機能します。そうでない場合、すべてのリクエストがプロキシからのものであるように見えます。そのため、全員が同じ制限を共有することになります。IP フィルタリングや監査ログ内のアドレスについても同様です。
サインイン試行は別途制限されます: 最大ログイン試行回数 (10) は、パスワードの失敗がこの回数に達した時点でアカウントをロックします。
IP フィルタリング
システムコンソール › サイト設定 › IPフィルタリングでは、IPアドレスに基づいてサーバーへのアクセスを制限できます。許可ルールと拒否ルール(それぞれアドレスまたはCIDR範囲)を使用します。IPフィルタリングの有効化をオンにすると、拒否ルールに一致するアドレスを持つユーザー、または許可ルールが存在する場合にどの許可ルールにも一致しないユーザーは、サーバーに到達できません。このページは、ご自身のアドレスをブロックしてしまうルールを拒否します。プロキシの背後にある場合は、まずクライアントアドレスを設定してください(プロキシの背後のクライアントアドレス)。そうしないと、すべてのリクエストがプロキシから来たように見えます。
アップロードとファイル共有
| 設定項目 | 設定場所 | デフォルト値 |
|---|---|---|
最大ファイルサイズ (FileSettings.MaxFileSize) | 環境 › ファイルストレージ | 100 MB。プロキシのリクエストサイズ制限はこれ以上であるようにしてください。 |
最大ペイロードサイズ (バイト) (ServiceSettings.MaximumPayloadSizeBytes) | 環境 › Web サーバー | 300000: ファイルアップロード以外の API リクエストの最大サイズ |
ファイル共有を許可する (FileSettings.EnableFileAttachments) | サイト設定 › ファイル共有とダウンロード | on |
| モバイルでのファイルアップロードを許可する、モバイルでのファイルダウンロードを許可する | サイト設定 › ファイル共有とダウンロード | on |
公開ファイルリンクを共有する(FileSettings.EnablePublicLink) | サイト設定 › 公開リンク | オフ: オンにすると、サインインせずに機能するリンクでファイルを共有できます |
SVGを有効にする(ServiceSettings.EnableSVGs) | サイト設定 › 投稿 | 新しいサーバーではオフ: オンにすると、SVG 画像がインラインで表示されます |
Antimatter は、アップロードされたファイルをマルウェアに対してスキャンしません。
プライバシー設定
システムコンソール › サイト設定 › ユーザーとチーム:
| 設定項目 | キー | デフォルト値 | 機能 |
|---|---|---|---|
| 電子メールアドレスを表示する | PrivacySettings.ShowEmailAddress | on | オフの場合、メンバーのメールアドレスは管理者以外には非表示になります。公開サーバーではオフにしてください。 |
| フルネームを表示する | PrivacySettings.ShowFullName | on | オフの場合、氏名は非表示になり、代わりにユーザー名が表示されます。 |
| 無視、ブロック、メッセージリクエストを有効にする | PrivacySettings.EnableUserBlocking | on | 以下を参照してください。 |
| ダイレクトメッセージの対象範囲 | TeamSettings.RestrictDirectMessage | Antimatterサーバー上のすべてのユーザー | またはチームのメンバーのみ:同じコミュニティに属する人のみ。 |
無視、ブロック、メッセージリクエスト
無視、ブロック、メッセージリクエストを有効にするがオン(既定値)の場合、ユーザーは互いを無視したりブロックしたりでき、見知らぬ人からのダイレクトメッセージをメッセージリクエストとして受け取るように選択できます。これらは承認されるまで通知されません。これは公開コミュニティに適しています。同僚が常に連絡できる必要がある職場では、これをオフにしてください(AM_PRIVACYSETTINGS_ENABLEUSERBLOCKING=false): これらの機能は強制されなくなります。ただし、ユーザーが作成したリストや選択は保持され、再度オンにすると再び適用されます。
セッションとトークン
- セッションの長さとアイドルタイムアウト: サインインとアカウントを参照してください。セッションを短くすると、紛失したラップトップやスマートフォンがサインインされた状態のまま放置される時間が短くなります。
- パーソナルアクセストークンを有効にする(
ServiceSettings.EnableUserAccessTokens、デフォルトはオフ)をオンにすると、ユーザーがAPIトークンを作成できます。個人アクセストークンの最大有効期間 (日)でその期間を制限します。両方ともシステムコンソール › 統合機能 › 統合機能管理にあります。 - 例えば、侵害が疑われる場合などに、すべてのユーザーを一度にサインアウトさせるには:システムコンソール › ユーザー管理 › ユーザーですべてのセッションを破棄するを実行します。
外部サービスへの接続
Antimatterは、Mattermost, Inc.が運営するサービスに一切接続しません。テレメトリ、クラッシュレポート、セキュリティ更新の確認、製品通知の取得は行いません。Mattermostから移行した設定で、Mattermostのサービス(プッシュサービス、アプリマーケットプレイス、通知、通話用のSTUNサーバー)を指定している場合でも、サーバーがそれらに接続することはありません。これらのアドレスは無視されます。
サーバーとアプリは、必要な機能のために、および設定したサービスに対してのみ、他の外部サービスに接続します:
| 機能 | 接続先 | 既定 |
|---|---|---|
| 通話: STUNによるパブリックアドレスの特定。サーバーと通話に参加する各ユーザーがリクエストを送信し、STUNサーバーにIPアドレスとポートが表示されます。 | CloudflareのパブリックSTUNサーバー、stun.cloudflare.com | オン。Calls アプリが有効な場合です。変更するには、Callsを参照してください。 |
リンクプレビュー:サーバーは、メッセージ内でリンクされたページを取得します(ウェブサイトプレビューを有効にする、ServiceSettings.EnableLinkPreviews) | ユーザーがリンクするWebサイト | オン。AM_SERVICESETTINGS_ENABLELINKPREVIEWS=falseでオフにできます。 |
| モバイルアプリへのプッシュ通知 | 独自のプッシュプロキシ(プッシュ通知) | アドレスを設定するまでオフ |
リモートアプリマーケットプレイス(PluginSettings.EnableRemoteMarketplace) | 設定したマーケットプレースURL | オフで、アドレスなし |
| メール | SMTPサーバー | デフォルトのサーバーはlocalhostです |
| モデル接続(書き直し、要約、翻訳、読み上げ、アプリ)、コミュニティ管理者自身のモデル接続 | システムコンソール › AI › モデル接続またはコミュニティの設定(AI)に追加されたAIプロバイダー | 誰かが追加するまでありません |
| シングルサインオン、AgentsアプリのAIサービス、音声認識と翻訳、アウトゴーイングWebhook、Mail、Calendar、GitHub、GitLab、Jiraなどのアプリ | 設定したサービス | 設定するまでオフ |
デフォルトでは、サーバーはこれら(リンクプレビュー、Webhook、アプリ、コミュニティのモデル接続)に対してプライベートアドレスおよびループバックアドレスへの接続を拒否します。これにより、メッセージや統合を使用して内部ネットワークにアクセスすることができません。信頼されていない内部接続を許可する(ServiceSettings.AllowedUntrustedInternalConnections、システムコンソール › 環境 › 開発者)に、接続を許可する内部ホストをリストアップしてください。サイトのcomposeファイルには、そこにgifsがリストされています。
脆弱性の報告
セキュリティの問題は公開Issueではなく、Antimatterセキュリティポリシーに説明されているように、非公開で報告してください。