SharePoint Server でセキュリティ強化を計画する
適用対象:2016 2019 Subscription Edition SharePoint in Microsoft 365
セキュリティで保護されたサーバー スナップショット
サーバー ファーム環境では、個々のサーバーに特定のロールがあります。 これらのサーバーに対するセキュリティ強化の推奨事項は、各サーバーが果たす役割に応じて異なります。 この記事では、2 つのカテゴリのサーバー ロールの、セキュリティで保護されたスナップショットについて説明します。
SharePoint サーバー
スナップショットは、一般的な構成カテゴリに分類されます。 各カテゴリに定義されている特性は、SharePoint Server の最適なセキュリティ強化状態を表します。 この記事には、環境内の他のソフトウェアの強化ガイダンスは含まれていません。
特定のロールのサーバーを強化するだけでなく、ファーム サーバーと外部要求の間にファイアウォールを配置して SharePoint ファームを保護することが重要です。 この記事のガイダンスはファイアウォールを構成する目的で使用できます。
SharePoint サーバー
このセクションでは、SharePoint サーバーの強化特性について説明します。 ガイダンスの一部は、特定のサービス アプリケーションに適用されます。このような場合、対応する特性は、指定されたサービス アプリケーションに関連付けられているサービスを実行しているサーバーにのみ適用する必要があります。
分類 | 特性 |
---|---|
サービス MMC スナップインにリストされるサービス |
以下のサービスを有効にします。 ASP.NET State サービス (InfoPath Forms Services または Project Server 2016 を使用している場合) View State Service (InfoPath Forms Services を使用している場合) World Wide Web 発行サービス これらのサービスが無効になっていないことを確認します。 Claims to Windows Token Service SharePoint Administration SharePoint Timer Service SharePoint Tracing Service SharePoint VSS Writer 対応するロールをホストするサーバーで、これらのサービスが無効になっていないことを確認します。 AppFabric キャッシュ サービス SharePoint User Code Host SharePoint Search Host Controller SharePoint Server Search ポートとプロトコル |
TCP 80、TCP 443 (SSL) 構成されている場合、検索クロール用のカスタム ポート (ファイル共有または既定以外のポート上の Web サイトのクロールなど) 検索インデックス コンポーネントによって使用されるポート - TCP 16500~16519 (ファーム内のみ) AppFabric キャッシュ サービスで必要なポート - TCP 22233~22236 Windows Communication Foundation 通信で必要なポート - TCP 808 SharePoint サーバーとサービス アプリケーション間の通信に必要なポート (既定値は HTTP)。 HTTP バインド: TCP 32843 HTTPS バインド: TCP 32844 net.tcp バインド: TCP 32845 (サード パーティがサービス アプリケーション用にこのオプションを実装している場合のみ) コンピューター ネットワーク環境で Windows Server 2012、Windows Server 2008、Windows Server 2008 R2、Windows 7、または Windows Vista と、Windows Server 2012/Windows Vista よりも前のバージョンの Windows を併用している場合は、以下の両方のポート範囲での接続を有効にする必要があります。 高い数値のポート範囲 49152 ~ 65535 低い数値のポート範囲 1025 ~ 5000 SQL Server 通信用の既定のポート - TCP 1433、UDP 1434。 これらのポートが SQL Server コンピューターでブロックされ、データベースが名前付きインスタンスにインストールされている場合は、名前付きインスタンスに接続するための SQL Server クライアント エイリアスを構成します。 Microsoft SharePoint Foundation User Code Service (サンドボックス ソリューション用) - TCP 32846。 このポートは、分散キャッシュ サーバーを使用するすべてのフロントエンドとフロントエンド上の送信接続に対して開いている必要があります。 このポートは、このサービスが有効になっている分散キャッシュ サーバーを使用したフロントエンドとフロントエンドの受信接続に対して開いている必要があります。 ユーザーがアクセスできる Web アプリケーションにポートが開かれていることを確認します。 サーバーの全体管理サイトで使用されるポートへの外部アクセスをブロックします。 電子メール統合用の SMTP — TCP 25、または既定以外のポートを使用するように送信電子メールを構成している場合はカスタム TCP ポート。 エコー要求の ICMP – 各分散キャッシュ サーバーには、エコー要求に対して ICMP を有効にする受信/送信ファイアウォール規則が必要です。 |
|
レジストリ |
追加のガイダンスなし |
監査とログ記録 |
ログ ファイルを移動した場合は、それに合わせてログ ファイルの位置が更新されていることを確認します。 ディレクトリ アクセス制御リスト (ACL) も更新します。 |
Web.config |
セットアップの実行後に作成される各 Web.config ファイルについて、次の推奨事項に従います。 PageParserPaths 要素を使用したデータベース ページのコンパイルやスクリプト作成を許可しないでください。 <SafeMode> CallStack="false" および AllowPageLevelTrace="false" を確認します。 ゾーンごとに Web パーツが制限する最大コントロール数が低く設定されていることを確認します。 SafeControls リストがサイトで必要な最小限度のセットに設定されていることを確認します。 Workflow SafeTypes リストが SafeTypes で必要な最小限度のレベルに設定されていることを確認します。 customErrors がオンであること (<customErrors mode="On"/>) を確認します。 必要に応じて Web プロキシ設定を検討します (<system.net>/<defaultProxy>)。 Upload.aspxの制限を、ユーザーがアップロードすると合理的に予想される最大サイズに設定します。 アップロードのサイズが 100 MB を越えるとパフォーマンスに影響が生じる可能性があります。 |
データベース サーバー ロール
注:
SharePoint Server 2016 の MinRole 機能に加えて、ロールの概念が変更されました。 ロールの詳細については、「 SharePoint Server 2016 での MinRole サーバーの展開の計画」を参照してください。
SharePoint Server の主な推奨事項は、SQL Server 通信に使用される既定のポートをブロックし、代わりにこの通信用のカスタム ポートを確立することで、ファーム間通信をセキュリティで保護することです。 SQL Server 通信のポートを構成する方法の詳細については、この記事の「標準の SQL Server ポートをブロックする」を参照してください。
カテゴリ | 特性 |
---|---|
ポート |
UDP 1434 をブロックします。 TCP 1433 のブロックを検討します。 |
この記事では、SQL Server をセキュリティで保護する方法について説明しません。 SQL Server をセキュリティで保護する方法の詳細については、「 SQL Server のセキュリティ保護 (https://go.microsoft.com/fwlink/p/?LinkId=186828)」を参照してください。
特定のポート、プロトコル、およびサービスのガイダンス
この記事の残りの部分では、SharePoint Server の特定の強化要件について詳しく説明します。
このセクションの内容
標準の SQL Server ポートをブロックする
SQL Server への接続に使用される特定のポートは、データベースが SQL Server の既定のインスタンスにインストールされるか、SQL Server の名前付きインスタンスにインストールされるかによって異なります。 SQL Server の既定のインスタンスは、TCP 1433 でクライアント要求をリッスンします。 SQL Server の名前付きインスタンスは、ランダムに割り当てられたポート番号でリッスンします。 さらに、名前付きインスタンスのポート番号は、インスタンスが再起動された場合に再度割り当てることができます (以前割り当てられたポート番号が使用可能かどうかに応じて決まります)。
既定では、SQL Server に接続するクライアント コンピューターはまず TCP 1433 を使用して接続します。 この通信が失敗した場合、クライアント コンピューターは UDP 1434 をリッスンしている SQL Server Resolution Service をクエリして、データベース インスタンスがリッスンしているポートを判断します。
SQL Server の既定のポートと通信の動作は、サーバーのセキュリティ強化に影響を与えるさまざまな問題を生じます。 第一に、SQL Server で使用されるポートは広く知られているポートであり、SQL Server Resolution Service は "スラマー" ワーム ウイルスなど、バッファー オーバーラン攻撃やサービス拒否攻撃の標的となってきました。 SQL Server Resolution Service でのセキュリティの問題を緩和するために SQL Server に修正プログラムを適用した場合でも、広く知られているポートは引き続き標的になります。 第二に、データベースが SQL Server の名前付きインスタンスにインストールされた場合、対応する通信ポートはランダムに割り当てられ、変更されることがあります。 この動作は、セキュリティが強化された環境では、サーバー間通信を妨げる可能性があります。 どの TCP ポートを開くか、ブロックするかを制御する機能は、環境をセキュリティ保護するうえできわめて重要です。
注:
標準の SQL ポートを使用することをお勧めしますが、SQL Server へのアクセスが必要なサーバーとの通信のみを許可するようにファイアウォールが構成されていることを確認してください。 SQL Server へのアクセスを必要としないサーバーは、TCP ポート 1433 と UDP ポート 1444 経由で SQL Server への接続をブロックする必要があります。
ポートをブロックするには、複数の方法を使用できます。 ファイアウォールを使用することで、これらのポートをブロックできます。 ただし、ネットワーク セグメント内へのルートが他にないこと、およびネットワーク セグメントへのアクセス権を持つ悪意のあるユーザーがいないことが明確な場合を除き、SQL Server サーバーをホストするサーバー上で直接これらのポートをブロックすることをお勧めします。 これは、コントロール パネルの [Windows ファイアウォール] を使用して実行できます。
標準以外のポートをリッスンするように SQL Server データベース インスタンスを構成する
SQL Server には、既定のインスタンスや任意の名前付きインスタンスによって使用されているポートを再割り当てする機能が用意されています。 SQL Server では、SQL Server 構成マネージャーを使用してポートを再割り当てします。
SQL Server クライアント エイリアスを構成する
サーバー ファームでは、すべてのフロントエンド Web サーバーおよびアプリケーション サーバーは SQL Server クライアント コンピューターです。 SQL Server コンピューター上の UDP 1434 をブロックした場合や既定のインスタンスの既定のポートを変更した場合は、SQL Server コンピューターに接続するすべてのサーバー上で SQL Server クライアント エイリアスを構成する必要があります。 このシナリオでは、SQL Server クライアント エイリアスは、名前付きインスタンスがリッスンしている TCP ポートを指定します。
SQL Server のインスタンスに接続するには、ターゲット コンピューターに SQL Server クライアント コンポーネントをインストールし、SQL Server 構成マネージャーを使用して SQL Server クライアント エイリアスを構成する必要があります。 SQL Server クライアント コンポーネントをインストールするには、セットアップを実行し、以下のクライアント コンポーネントのみを選択してインストールします。
接続コンポーネント
管理ツール (SQL Server 構成マネージャーを含みます)
標準の SQL Server ポートをブロックするための具体的な強化手順については、「 SharePoint Server の SQL Server セキュリティを構成する」を参照してください。
サービス アプリケーション通信
既定では、ファーム内の SharePoint サーバーとサービス アプリケーション間の通信は、TCP 32843 へのバインドで HTTP を使用して行われます。 サービス アプリケーションを公開するときに、HTTP または HTTPS と以下のバインドを選択できます。
HTTP バインド: TCP 32843
HTTPS バインド: TCP 32844
さらに、サービス アプリケーションを開発するサード パーティは、3 番目の選択肢を実装できます。
- net.tcp バインド: TCP 32845
サービス アプリケーションごとに、プロトコルとポート バインドを変更できます。 サーバーの全体管理の [サービス アプリケーション] ページで、サービス アプリケーションを選択し、[ 発行] を選択します。
HTTP/HTTPS/net.tcp バインドは、Get-SPServiceHostConfig コマンドレットと Set-SPServiceHostConfig Microsoft PowerShell コマンドレットを使用して表示および変更することもできます。
サービス アプリケーションと SQL Server 間の通信は、標準の SQL Server ポート、または、SQL Server 通信用に構成するポートで行われます。
外部サーバーへの接続
SharePoint Server のいくつかの機能は、サーバー ファームの外部にあるサーバー コンピューター上にあるデータにアクセスするように構成できます。 外部サーバー コンピューター上にあるデータへのアクセスを構成する場合は、該当のコンピューター間の通信を有効にする必要があります。 ほとんどの場合、使用するポート、プロトコル、およびサービスは、外部リソースに依存します。 以下に例を示します。
ファイル共有への接続はファイルとプリンターの共有サービスを使用します。
外部 SQL Server データベースへの接続は、SQL Server 通信の既定のポートまたはカスタマイズされたポートを使用します。
Oracle データベースへの接続は一般に OLE DB を使用します。
Web サービスへの接続は HTTP と HTTPS の両方を使用します。
次の表は、サーバー ファーム外のサーバー コンピューター上に存在するデータにアクセスするように構成できる機能を示します。
機能 | 説明 |
---|---|
コンテンツ クロール |
クロール ルールを構成して、Web サイト、ファイル共有、Exchange パブリック フォルダー、ビジネス データ アプリケーションなどの外部リソース上に存在するデータをクロールすることができます。 外部データ リソースをクロールするときは、クロールの役割がこれらの外部リソースと直接通信します。 詳細については、「 SharePoint Server でのクロールの管理」を参照してください。 |
Business Data Connectivity 接続 |
Web サーバーやアプリケーション サーバーは、Business Data Connectivity 接続が構成されているコンピューターと直接通信します。 |
電子メール統合のサービス要件
電子メール統合では、次の 2 つのサービスを使用する必要があります。
SMTP サービス
電子メールの統合のためには、サーバー ファーム内の少なくとも 1 台のフロントエンド Web サーバーで、簡易メール転送プロトコル (SMTP) サービスを使用する必要があります。 SMTP サービスは、受信メールのために必要です。 送信メールについては、SMTP サービスを使用するか、Microsoft Exchange Server コンピューターなど、組織内の専用電子メール サーバー経由で、送信メールをルーティングできます。
Microsoft SharePoint Directory Management Service
SharePoint Server には、電子メール配布グループを作成するための内部サービスである Microsoft SharePoint Directory 管理サービスが含まれています。 電子メール統合を構成するときは、Directory Management Service 機能を有効にするオプションがあり、配信リストを作成できます。 SharePoint グループを作成し、配信リストを作成するオプションを選択すると、Microsoft SharePoint Directory Management Service は対応する Active Directory ディレクトリ サービス配信リストを Active Directory 環境に作成します。
セキュリティ強化環境では、Microsoft SharePoint Directory Management Service に関連するファイル、SharePointEmailws.asmx をセキュリティ保護することで、このサービスへのアクセスを制限することをお勧めします。 たとえば、このファイルへのアクセスをサーバー ファーム アカウントのみに許可します。
さらに、このサービスでは、Active Directory 配布リスト オブジェクトを作成するために Active Directory 環境での権限が必要になります。 SharePoint Server オブジェクトの Active Directory に個別の組織単位 (OU) を設定することをお勧めします。 Microsoft SharePoint Directory Management Service が使用するアカウントへの書き込みアクセスは、この組織単位のみに許可する必要があります。
セッション状態のサービス要件
Project Server 2016 と InfoPath Forms Services の両方でセッション状態が維持されます。 これらの機能または製品をサーバー ファーム内に展開する場合は、ASP.NET State サービスを無効にしないでください。 さらに、InfoPath Forms Services をデプロイする場合は、View State サービスを無効にしないでください。
SharePoint Server Products サービス
SharePoint Server によってインストールされたサービスを無効にしないでください (前のスナップショットに記載されています)。
ご利用の環境でローカル システムとして実行されるサービスが許可されていない場合は、その結果を認識し、それらを回避できる場合にのみ、SharePoint 管理サービスを無効にすることを検討できます。 このサービスは、ローカル システムとして実行される Win32 サービスです。
このサービスは、インターネット インフォメーション サービス (IIS) Web サイトの作成、コードの展開、サービスの停止および開始など、サーバーでの管理者特権が必要とされる操作を実行する目的で、SharePoint Timer Service によって使用されます。 このサービスを無効にした場合、サーバーの全体管理サイトから展開関連のタスクを完了することはできません。 Microsoft PowerShell を使用して Start-SPAdminJob コマンドレットを実行する (または、Stsadm.exe コマンド ライン ツールを使用して execadmsvcjobs 操作を実行する) と、SharePoint Server の複数サーバー展開を完了し、その他の展開関連タスクを実行する必要があります。
Web.config ファイル
.NET Framework、特に ASP.NET は、アプリケーションを構成するために XML 形式の構成ファイルを使用します。 .NET Framework は、構成ファイルに依存して構成オプションを定義します。 構成ファイルは、テキスト ベースの XML ファイルです。 1 つのシステム上に複数の構成ファイルが存在することができ、通常は、それらのファイルが複数存在します。
.NET Framework のシステム全体の構成設定は、Machine.config ファイルで定義されています。 Machine.config ファイルは、%SystemRoot%\Microsoft.NET\Framework%VersionNumber%\CONFIG\ フォルダーにあります。 Machine.config ファイルに含まれている既定の設定を変更すれば、システム全体で .NET Framework を使用するアプリケーションの動作に影響を与えることができます。
Web.config ファイルを 1 つのアプリケーションのルート フォルダーに作成した場合は、そのアプリケーションの ASP.NET 構成設定を変更できます。 変更した場合、Web.config ファイルの設定は Machine.config ファイルの設定を上書きします。
サーバーの全体管理を使用して Web アプリケーションを拡張すると、SharePoint Server によって Web アプリケーションの Web.config ファイルが自動的に作成されます。
この記事で前に示した Web サーバーとアプリケーション サーバーのスナップショットには、Web.config ファイルを構成する場合の推奨事項が一覧されています。 これらの推奨事項は、サーバーの全体管理サイト用の Web.config ファイルを含めて、作成されたそれぞれの Web.config ファイルに適用するためのものです。
構成ファイルの ASP.NET と Web.config ファイルの編集の詳細については、「 ASP.NET 構成 (https://go.microsoft.com/fwlink/p/?LinkID=73257)」を参照してください。