Skip to content
このページは AI で翻訳されており、不正確な表現が含まれる場合があります。GitHub で改善にご協力ください。

セキュリティモデルとプライバシーの約束 ​

Gately はネットワーク境界で動作し、DNS プロバイダーのキー、証明書の秘密鍵、各種認証情報を扱います。そのため、セキュリティと透明性を最優先の設計目標としています。

プライバシーの約束 ​

  • デフォルトで外部接続ゼロ:プロジェクト側のサーバーには一切接続せず、端末情報も送信せず、リモートからの設定配信も行いません。
  • 外部アドレスを確認・変更可能:公開 IP の照会先や STUN サーバーなどのアドレスはすべて画面に表示され、変更や無効化ができます。
  • 外部ログインは自己管理:GitHub、Google、QQ、OIDC のログインには自分で取得した OAuth アプリを使い、中継サービスは一切経由しません。
  • アップグレードは自分の判断で:プログラムがバックグラウンドで自身をダウンロードしたり置き換えたりすることはありません。Linux バイナリ導入のオンラインアップグレードは管理者がクリックしたときだけ実行され、SHA-256 を照合して旧バージョンを残します。アップグレードのタイミングはあなたが決めます。

データ保護 ​

  • 設定は平文の JSON でパーミッションは 0600。監査とロールバックができます。
  • 機密フィールドは API 出力でマスクされます。
  • cloudflared のトークンは環境変数で渡されるためプロセス一覧に現れません。frp と Tailscale のトークンやキーはパーミッション 0600 で保存されます。

認証とアクセス制御 ​

  • bcrypt によるパスワードハッシュと、HMAC 署名付きのセッショントークン
  • デフォルトのパスワード gately.cn は公開されているため、使用している間は管理画面の上部で変更を促し続けます。パスワードを忘れたときや 2 段階認証アプリを紛失したときは、サーバー上で gately reset-password / gately reset-totp を実行してリセットするしかありません(設定ディレクトリの読み書きと、yes の入力による確認が必要)。リセット後はすべてのセッションが無効になり、監査ログに記録されます。詳しくは パスワードと 2 段階認証のリセット を参照してください
  • Passkey(WebAuthn)によるログイン:公開鍵のみを保存し、ユーザー検証(指紋、顔、PIN)を必須とし、署名カウンターで複製を防ぎます。ドメイン名と HTTPS(または localhost)でのアクセスが必要です
  • 2 段階認証(TOTP。RFC 6238 のテストベクターで検証済み)
  • 読み取り専用アカウント:状態と設定を閲覧できますが、変更、バックアップのダウンロード、シークレットの読み取り、ターミナルの起動はできません。パスワードのリセットや削除を行うとセッションは即座に無効になります
  • ログイン失敗のレート制限
  • ローカルのリバースプロキシ:管理画面を同じホスト上の nginx、haproxy、Gately Web サービスの背後に置いた場合、このホストのアドレスから届いた X-Real-IP / X-Forwarded-For だけを信頼します。LAN 内からのみ許可、ログイン失敗のレート制限、監査ログはこれをもとに実際の接続元を取得します。「設定 → アクセス制御」で無効にしたり、信頼するプロキシを追加したりできます
  • セキュアエントリー、LAN 内からのみ許可、管理画面の HTTPS
  • fnOS 統一ゲートウェイ:fnOS パッケージに fnOS 統一ゲートウェイ経由でアクセスする場合は fnOS がアクセスを制御し、fnOS 管理者だけが開けます。「fnOS のログイン状態で自動ログイン」は既定で無効です。有効にすると、fnOS にログイン済みの管理者は Gately の管理者として(2 段階認証を省略して)入れます。一般の fnOS ユーザーは引き続きログインが必要です。詳しくは fnOS ネイティブアプリ を参照してください
  • モジュールのオン/オフ:「設定 → 機能モジュール」で無効にしたモジュールはサービスを起動せず、管理 API も提供しないため、攻撃対象領域を減らせます
  • 複数トークンの API:各トークンには作成時に選択したモジュールの読み書き権限のみが付与され、有効期限を設定でき、最後に使われた接続元 IP が記録されます。アカウント、2 段階認証、トークン管理、さらにバックアップ、復元、再起動、システム設定のエンドポイントはログインセッションからのみ利用できます。詳しくは API トークンと OpenAPI を参照してください
  • サイトのアクセス制御:認証失敗時の自動ブロック、GeoIP による国フィルター、パスルール。詳しくは Web サービス を参照してください
  • 設定バックアップは暗号化(scrypt + AES-GCM)に対応しています。詳しくは 設定バックアップ を参照してください

監査と追跡可能性 ​

監査ログはログイン、設定変更、機密アクセスを記録し、設定履歴は各設定ファイルが上書きされる前のバージョンを保持してワンクリックのロールバックに対応します。詳しくは 監査ログと設定履歴 を参照してください。リリース成果物には cosign 署名、ビルド来歴の証明(provenance)、SBOM が付属します。検証方法は リリースの検証 を参照してください。

高リスク機能のデフォルト値 ​

ローカルシェルのターミナルはデフォルトで無効です。SSH ターミナルは「初回信頼(Trust On First Use)」方式でホスト鍵のフィンガープリントを記録します。

セキュリティ問題の報告 ​

脆弱性は GitHub リポジトリの Security ページから非公開で報告し、公開 Issue に詳細を書かないでください:https://github.com/wangwanjie/gately/security

その他の実践的な推奨事項は ハードニングの推奨事項 を参照してください。

Apache-2.0 ライセンスで公開されています。