Nextcloudのセキュリティ評価でA+を獲得するために必要なこと

Nextcloudサイトが正常に動作していても、外部のセキュリティスキャンで低い評価を受ける場合があります。一般的な原因としては、サーバーのバージョンが古い、またはサポートが終了している、HSTSヘッダーがない、またはNextcloudからHTTPSを隠蔽するリバースプロキシなどが挙げられます。まずはNextcloudをアップデートし、公開WebサーバーのエッジでHTTPSを強制し、プロキシの信頼範囲を狭く設定し、Nextcloudの管理ページに表示される警告を解消してください。

普遍的な「A+」基準は存在しません。Nextcloudの公式セキュリティスキャンは、公開されているNextcloudサーバーを、外部から実行可能な既知の勧告と強化チェックに基づいて評価します。SSL LabsはTLS構成を評価します。いずれの評価も、サーバーが安全であることの証明や未知の脆弱性に対する保証ではなく、あくまでもその時点での結果として捉えてください。

1. スキャナーを特定し、サーバーを更新する

設定を変更する前に、どのスキャナーでその評価が出たかを記録しておきましょう。Nextcloudの公式スキャンでは、既知の脆弱性、サポート終了バージョン、および目に見えるセキュリティ強化上の問題点が報告されます。TLSのみの評価は、SSL Labsから得られる場合もあります。使用しているスキャナーの警告を修正してから、同じスキャンを再度実行してください。サービスによって基準が異なるためです。

Nextcloud の管理設定で、サーバーのバージョンとセキュリティまたはセットアップに関する警告を確認してください。ヘッダーを調整する前に、サポートされている Nextcloud リリースにアップグレードし、最新のセキュリティアップデートをインストールしてください。古いリリースは、ヘッダー スキャナーが A+ を返した場合でも、脆弱性が残る可能性があります。インストール パッケージにアップグレードが利用できない場合は、ファイルを手動で置き換えるのではなく、そのパッケージでサポートされているアップグレード パスに従ってください。

2. HTTPSを必須とし、HSTSを追加する

有効な証明書を使用して、公開用の Nextcloud URL を HTTPS で提供し、暗号化されていない HTTP トラフィックを HTTPS にリダイレクトします。Nextcloud のセキュリティ強化ガイドでは、本番サーバーでの HTTPS の使用を推奨しています。次に、公開 HTTPS レスポンスを送信するサーバーまたはプロキシに HTTP Strict Transport Security (HSTS) を追加します。Nextcloud の管理者向け警告では、Strict-Transport-Securitymax-age を少なくとも 15,552,000 秒に設定するよう求めています。

Nginxの場合は、アクティブなTLSサーバーブロックに次のようなディレクティブを追加し、ホスト名を置き換えて、既知の正常なNextcloud設定の残りの部分はそのままにしておきます。

add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
NginxのTLSサーバーブロックで、最大有効期間が15,552,000秒、かつincludeSubDomainsオプションが設定されたHSTSヘッダーを示しています。
一般の訪問者に応答を送信するHTTPSサーバーブロックにHSTSを設定します。

すべてのサブドメインがHTTPSでも利用可能な場合にのみ使用してくださいincludeSubDomains。このオプションpreloadフラグは安易に追加しないでください。ブラウザのプリロードリストからドメインが削除されるまでには、送信後数か月かかる場合があります。リバースプロキシがTLSを処理する場合は、その公開プロキシでHSTSを設定してください。内部のNextcloudホストでのみ設定しても、スキャナが認識するヘッダーは変更されない可能性があります。

X-Content-Type-OptionsNextcloud は、デフォルト環境では、X-Frame-Options、Referrer-Policy、などの基本的なヘッダーを既に送信していますX-Robots-Tag。レスポンスを確認する前に、重複または競合するバージョンを追加しないようにしてください。Nextcloud の Nginx 設定例では、これらのヘッダーを Nginx から配信する方法が示されています。

3. すべてのクライアントを信頼せずにリバースプロキシを設定する

Nextcloud の前にリバースプロキシがある場合は、そのプロキシの実際の IP アドレスまたはプライベートネットワーク範囲のみを にリストしてくださいtrusted_proxies。Nextcloud は、信頼できるプロキシに対してのみ転送されたクライアント IP ヘッダーを使用します。誤ったアドレスを信頼すると、クライアントが見かけ上の IP アドレスを偽装し、アクセス制御やログを損なう可能性があります。

例えば、TLS終端プロキシが実際に にある場合10.0.0.10、関連するエントリを の既存の$CONFIG配列にマージしますconfig/config.php。

'trusted_proxies' => ['10.0.0.10'],
'overwriteprotocol' => 'https',
trusted_proxies を 10.0.0.10 に設定し、overwriteprotocol を https に設定したコードの一部を示します。
これらはあくまで例です。実際のプロキシIPアドレスを使用し、既存のNextcloud設定配列に統合してください。

TLS がプロキシで終了し、それ以外の場合は Nextcloud が内部 HTTP 接続をパブリック HTTP として検出する場合overwriteprotocolに設定してください。プロキシが非標準の forwarded-IP ヘッダーを使用している場合は、それに完全に一致するように設定してください。 などの広範囲な信頼範囲を設定しないでください。ファイルを編集した後、マージされた構成を確認し、サインイン、共有、および生成されたリンクをテストしてください。httpsforwarded_for_headers0.0.0.0/0

4. 残っているNextcloudの警告をすべてクリアする

管理設定を開き、「概要」または「セキュリティと設定」の警告を確認してください。成績を上げるために無関係なセキュリティ強化策を適用するのではなく、表示された警告に対処してください。

  • HSTSが欠落している場合:特にプロキシまたはロードバランサーがTLSを終端している場合は、パブリックHTTPSエンドポイントからの応答を確認してください。
  • サーバーはHTTPを使用しているようです。エッジでHTTPSが設定されていることを確認し、必要に応じてoverwriteprotocol信頼できるプロキシ設定にHTTPSが設定されていることを確認してください。
  • デバッグモードが有効になっています。本番環境では無効のままにしdebug、特定のトラブルシューティングを行う場合にのみ有効にして、その後再び無効にしてください。
  • プロキシまたはクライアントIPに関する警告:信頼できるプロキシ設定を変更する前に、プロキシの実際の送信元アドレスと転送ヘッダーを確認してください。
  • 既知の脆弱性またはサポート終了バージョン:サポートされているアップグレードプロセスに従って、Nextcloudおよび影響を受けるサーバーパッケージを更新してください。

管理者が安定した既知の管理用IPアドレス範囲を持っている場合にのみallowed_admin_ranges、管理者の操作を制限してください。誤った範囲を設定すると、正当な管理者から管理機能が隠蔽される可能性があります。Nextcloudのセキュリティ強化ガイドでは、BREACH攻撃を軽減するためにHTTP圧縮を無効にすることも推奨しています。認証済みページで圧縮が有効になっている場合は、Webサーバーまたはプロキシの設定を確認してください。

5. 公開された回答を確認し、再度スキャンを実行します。

設定ファイルの内容だけでなく、外部クライアントが実際に何を受け取るのかも確認してください。

curl -I https://cloud.example.com

レスポンスに意図したmax-ageを含むHSTSヘッダーと、Nextcloudの基本セキュリティヘッダーが含まれていることを確認してください。ブラウザの開発者ツールでも同じレスポンスヘッダーを確認できます。値が設定と異なる場合は、TLSターミネータ、プロキシ、およびキャッシュまたはネストされたNginxの場所を調べてください。

curl -I コマンドの出力例(ターミナル上でHSTS、X-Content-Type-Options、およびX-Frame-Optionsレスポンスヘッダーを一覧表示したもの)。
公開されているHTTPS URLから返されるヘッダーを調べてください。設定行だけでは、訪問者が何を受け取っているかを確認することはできません。

次に、公開ホスト名に対して公式のNextcloudセキュリティスキャンを実行し、管理設定を再度確認してください。TLSグレードと詳細情報を別途確認する必要がある場合は、 Qualys SSL Labsを使用してください。公式スキャンには、アクセス可能なNextcloudホスト名が必要です。プライベート専用インスタンスは、公開インターネットからは評価できません。

ホスト名入力欄とスキャンボタンが表示され、結果が表示される前の、Nextcloudの公式セキュリティスキャンページ。
変更後、公開ホスト名に対して公式スキャンを実行してください。ただし、その結果はあくまでもスナップショットであり、セキュリティを保証するものではありません。

グレードがA+を下回る場合は、具体的な検出結果に基づいて原因となっているレイヤーを特定してください。一度に1つの問題を修正し、NextcloudがパブリックURL経由で正常に動作することを確認してから、再度スキャンを実行してください。A+は有用な構成シグナルですが、スキャンに合格した後も、パッチ適用、バックアップ、アクセス制御、および継続的な監視は引き続き必要です。

公式ドキュメント

コメントを残す

Redisを使用してNextcloudのファイルロック警告を解消する

信頼性の高いNextcloudファイルロックを有効にし、適切なRedisまたはValkeyバックエンドを選択し、同時ファイル変更のリスクを冒すことなく警告が解消されることを確認してください。

Nextcloudのセキュリティ評価でA+を獲得するために必要なこと

Nextcloudのセキュリティ評価でA+を獲得するために必要なこと

最新のアップデート、HTTPSおよびHSTS、正確なリバースプロキシの信頼設定、およびパブリックサーバーに対するチェックによって、Nextcloudのスキャンでよく見られる問題を修正します。

影響度を測定しながらNextcloudのサーバーサイド暗号化を有効にする

必要なストレージに対してNextcloud SSEを設定し、暗号化キーを保護し、既存ファイルを暗号化する前に転送量とCPUへの影響を測定します。

NextcloudにElasticsearchの全文検索機能を追加する

Nextcloudのファイル検索機能をElasticsearchに接続し、ドキュメントの内容をインデックス化し、サーバーとセキュリティのニーズに合った設定を選択してください。

Nextcloudで削除されたファイルの信頼性の高い有効期限ポリシーを設定する

Nextcloudで削除されたファイルの信頼性の高い有効期限ポリシーを設定する

Nextcloudを設定して、削除されたファイルを一定期間後に削除するようにし、バックグラウンドジョブを確実にスケジュールし、すべてのユーザーのゴミ箱を空にするコマンドを回避するようにします。

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

NextcloudのOCC修復を安全に実行し、データベースの変更をプレビューして、警告が残る理由を確認してください。

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

PHP、Nginx、Apache、一時ストレージ、タイムアウトの設定を調整することで、Nextcloudブラウザからのより大きなファイルアップロードを可能にし、どの制限がファイルのアップロードを妨げているかを確認してください。

WebサーバーでNextcloudのPHPメモリ警告をクリアする

Nextcloudが実際に使用するPHPメモリの制限を設定し、該当するサービスを再起動して、管理画面の概要で512MBの設定を確認してください。

S3互換バケットをNextcloud外部ストレージに接続する

NextcloudのS3バックエンドを使用して、適切なエンドポイント、認証情報、アクセス範囲、および検証手順を設定し、互換性のあるオブジェクトストレージバケットをマウントします。

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。