硬化 - アプリケーションの推奨

一般的な硬化のガイドラインについては、主な硬化のドキュメントを参照してください。

GitLabインスタンスに対するハードニングの推奨は、ウェブインターフェースを介して制御します。

システムフック

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左サイドバーで、システムフックを選択します。

一般的なハード化環境では、内部情報がシステムの外部に送信または保存されることはありません。オフライン環境のシステムでは、これは暗黙の了解です。システムフックは、環境内のローカルイベントがトリガーに基づいて環境外に情報を伝達する方法を提供します。

この機能のユースケースは、特にリモートシステムを通してシステムを監視する場合にサポートされています。しかし、システムフックをデプロイする際には細心の注意を払う必要があります。ハード化されたシステムの場合、オフライン環境を意図しているのであれば、互いに通信することを許可された信頼されたシステムの境界を強制しなければなりません。システムフックを介した通信にはTLSが強く推奨されます。

プッシュルール

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左サイドバーで、[Push Rules]を選択します。

以下の項目が選択されていることを確認します:

  • 確認されていないユーザーを拒否します。
  • ユーザーによるGitタグの削除を許可しません。git push
  • コミット作成者が GitLab ユーザーかどうかをチェック
  • シークレットファイルのプッシュを防止

この調整により、プッシュを許可されたユーザーに制限することができます。

デプロイキー

  1. 左サイドバーで、Search を選択するか、 にアクセスしてください。
  2. 管理エリア を選択します。
  3. 左サイドバーで、Deploy Keys を選択します。

** 公開デプロイキーは、インスタンス上のすべてのプロジェクト(**)に対する読み取りまたは読み取り/書き込みアクセス権を与えるために使用されます。公開デプロイキーは、ハード化された環境では使用しないでください。デプロイキーを使用する必要がある場合は、代わりにプロジェクトデプロイキーを使用してください。詳細は、デプロイキーと プロジェクトデプロイキーのドキュメントを参照してください。

全般

  1. 左サイドバーで、Search を選択するか、 にアクセスしてください。
  2. 管理エリア を選択します。
  3. 左サイドバーで、設定 > 一般 を選択します。

硬化の調整は4つのセクションで行うことができます。

可視性とアクセス制御

以下の設定のデフォルトはプライベート です:

  • デフォルトのプロジェクトの可視性
  • デフォルトのスニペットの可視性
  • デフォルトのグループの可視性

プロジェクト、スニペット、グループに特定のアクセス権を付与されたユーザーだけが、これらのリソースにアクセスできます。これは、必要に応じて、または作成時に調整することができます。これにより、偶発的または悪意のある情報漏洩を防ぐことができます。

セキュリティ ポリシーと体制によっては、Restricted visibility level を Public** に **設定すると、認証されていないユーザーによるユーザー プロファイルの閲覧を防ぐことができます。

ソースのインポート で、本当に必要なソースのみを選択します。

典型的なデプロイでは、Enabled Git access protocols を Both SSH and HTTP(S) に設定しています。しかし、Git プロトコルのいずれかがユーザーによって 使用されていない場合は、それに応じて Only SSH または Only HTTP** の**いずれかに設定して **ください。これは、攻撃対象領域を縮小するのに役立ちます。

SSHキーのタイプは、ED25519 (とED25519-SK )、RSAECDSA (とECDSA-SK)の順が望ましいとされています。ED25519 2048ビット以上に設定したRSA 場合と RSA同様にセキュリティが確保されていると考えられますが、 ED25519キーは小さくなり、アルゴリズムはより高速になります。

ED25519-SKECDSA-SK の末尾はどちらも-SK 「セキュリティ・キー」の略 -SKです。-SK これらの -SKタイプは FIDO/U2F 標準と互換性があり、YubiKeys などのハードウェア・トークンでの使用に関連します。

DSA “Are forbidden “に設定する必要があります。 DSA既知の欠陥があり、多くの暗号学者はECDSA の使用を疑っており、サポートしていません。

GitLabがFIPSモードになっている場合は、次のようにしてください:

  • FIPSモードで実行している場合:
    • RSA を使用し、Must be at least 2048 bit に設定します。
    • ECDSA (およびECDSA-SK) を使用し、Must be at least 256 bitに設定してください。
    • RSAECDSA はいずれも FIPS の使用が承認されています
  • FIPS モードで実行していない場合は、ED25519 を使用する必要があり、RSA も使用できます:
    • ED25519 (およびED25519-SK) を少なくとも256ビットに設定してください。
    • RSA を使用する場合は、Must be at least 2048 bit に設定してください。
    • その他の鍵タイプはすべて「Are forbidden」に設定してください。
  • 新しいグループのユーザー用にインスタンスをセットアップする場合は、セキュリティを強化するために最大ビット設定でユーザーSSHキーポリシーを定義します。

堅牢化された環境では、RSSフィードは通常必要ありません。フィード・トークンで、[フィード・トークンを無効にする]チェックボックスを選択します。

すべてのユーザーが特定のIPアドレスから来ている場合は、グローバル許可IP範囲を使用して、それらのアドレスのみを特別に許可します。

可視性とアクセス制御の詳細については、可視性とアクセス制御を参照してください。SSH設定については、SSHキーの制限を参照してください。

アカウントと制限

堅牢化のため、Gravatar有効の隣にあるチェックボックスが選択されていないことを確認してください。余計な通信はすべて制限されるべきで、環境によっては制限されるかもしれません。アカウントのアバターはユーザーが手動でアップロードできます。

このセクションの設定は、ユーザー独自の基準をカスタム実装するためのものです。さまざまなシナリオがあり、あまりにも多様であるため、アカウントと制限設定のドキュメントをレビューし、独自のポリシーを強制するために変更を適用する必要があります。

サインアップ制限

ハード化インスタンスでオープン・サインアップが無効になっていることを確認します。サインアップ有効]チェックボックスが選択されていないことを確認します。

電子メール確認の設定で、[ハード]が選択されていることを確認します。アクセスが許可される前に、ユーザーによる電子メールアドレスの確認が実施されるようになりました。

パスワードの最小長さ(文字数)のデフォルト設定は12ですが、これは追加の認証技術を使用する限り問題ありません。パスワードは複雑であるべきなので、これらの4つのチェックボックスがすべて選択されていることを確認してください:

  • 数字が必要
  • 大文字が必要
  • 小文字が必要
  • 記号が必要

ユーザー全員が同じ組織に所属し、メールアドレスに特定のドメインを使用している場合、そのドメインを「登録許可ドメイン」にリストアップします。これにより、他のドメインのメールアドレスを持つユーザーがサインアップできなくなります。

詳細については、サインアップの制限を参照してください。

サインインの制限

二要素認証(2FA)は、すべてのユーザーに対して有効にする必要があります。二要素認証(2FA)の横のチェックボックスが選択されていることを確認してください。

Two-factor grace periodのデフォルト設定は48時間です。これは、8時間など、かなり低い値に調整する必要があります。

管理 モードがアクティビティになるように、[管理者モードを有効にする]の横にあるチェックボックスが選択されていることを確認します。これにより、管理者アクセス権を持つユーザーは、管理タスクを実行するために追加の認証を使用する必要があり、ユーザーによる追加の 2FA が強制されます。

不明なサインインに対する電子メール通知]で、[電子メール通知を有効にする]が選択されていることを確認します。これにより、認識できない場所からのサインインが発生した場合、ユーザーに電子メールが送信されます。

詳細については、サインインの制限を参照してください。

インテグレーション

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左のサイドバーで、Settings > Integrations を選択してください。

一般に、管理者が使用状況を管理および監視している限り、統合は堅牢化された環境では問題ありません。通常、ローカルプロセスや認証ユーザーによって実行される場合、制限または監査するレベルのアクセスを必要とするアクションやプロセスをトリガーする外部システムからのアクションを許可するインテグレーションには注意が必要です。

メトリクスとプロファイリング

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左側のサイドバーで、[設定] > [メトリクスとプロファイリング]を選択します。

ハードニングの主な焦点は利用統計です:

  • Enable version checkが選択されていることを確認してください。これはGitLabの最新バージョンを使っているかどうかをチェックします。新機能やセキュリティパッチを含む新しいバージョンが頻繁にリリースされるので、最新の状態を保つのに役立ちます。

  • あなたの環境が孤立していたり、組織の要件でデータ収集や統計レポーターをソフトウェアベンダーに制限している場合は、Enable service ping機能を無効にする必要があるかもしれません。どのようなデータが収集され、十分な情報に基づいた意思決定に役立つかの詳細については、サービスpingを参照してください。

ネットワーク

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 左サイドバーで、「設定」 > 「ネットワーク」を選択します。

レート制限を有効にする設定がある場合は、それが選択されていることを確認してください。デフォルト値で問題ありません。さらに、アクセスを有効にする設定が多数ありますが、これらはすべてクリアしてください。

これらの調整を行った後、パフォーマンスやユーザーのニーズに合わせてシステムを微調整することができます。その際、レート制限を無効にして調整したり、アクセスを有効にしたりする必要があるかもしれません。以下は、覚えておくべきいくつかの重要事項です:

  • アウトバウンドリクエストでは、限られた数のシステムにアクセスを開放する必要がある場合、IPアドレスまたはホスト名を指定することで、それらのシステムだけにアクセスを制限できます。また、このセクションでは、アクセスを許可する場合、DNS リバインディング攻撃防御の強制が選択されていることを確認してください。

  • Notes rate limitおよびUsers API rate limitでは、必要に応じて特定のユーザーを制限から除外することができます。