ArcGIS Server には、いくつかの一般的なセキュリティ問題のスキャンを行う Python スクリプト ツール「serverScan.py」が付属しています。このツールは、ArcGIS Server のセキュリティで保護された環境を構成するためのいくつかのベスト プラクティスに基づいて、問題があるかどうかをチェックします。多数の基準または構成プロパティを分析して、Critical、Important、Recommended という 3 段階の重要度レベルに分割します。これらの基準の説明は次のとおりです。
ID | 重要度 | プロパティ | 説明 |
---|---|---|---|
SS01 | Critical | Web の通信 | ArcGIS Server に対して HTTPS が有効かどうかを決定します。通信を傍受から守るため、SSL 暗号化を使用するように ArcGIS Server および ArcGIS Web Adaptor (インストールされている場合) を構成することをお勧めします。 |
SS02 | Critical | 標準化されたクエリ | 標準化されたクエリを適用するかどうかを決定します。SQL インジェクション攻撃から保護するために、このオプションを有効にすることは非常に重要です。 |
SS03 | Critical | トークン リクエスト | GET を介したトークン リクエストの生成をサポートするかどうかを決定します。GET を介してトークンを生成するときに、ユーザーの認証情報が URL の一部として送信されるので、ブラウザーの履歴またはネットワーク ログを通してキャプチャおよび公開される可能性があります。他のアプリケーションから要求されない限り、これは無効にしておく必要があります。 |
SS04 | Critical | トークン リクエスト | クエリ パラメーターの認証情報による POST を介したトークン リクエストの生成をサポートするかどうかを決定します。トークンを生成するときに、ユーザーの認証情報が URL の一部として提供されるので、ブラウザーの履歴またはネットワーク ログを通して公開される可能性があります。他のアプリケーションから要求されない限り、これは無効にしておく必要があります。 |
SS05 | Critical | Filter web content の有効化 | filter web content プロパティが無効になっているフィーチャ サービスのリストを生成します。このプロパティを無効にすると、ユーザーが入力フィールドにテキストを入力できるようになり、サービスがクロスサイト スクリプティング (XSS) 攻撃を受ける可能性があります。デフォルトではこのプロパティは有効になっており、サポートされていない HTML エンティティまたは属性が必要にならない限り、無効にしないでください。 |
SS06 | Critical | システム サービス権限 | ArcGIS Server Manager のシステム フォルダー内のサービスにデフォルト以外の権限が適用されているかどうかを判断します。管理者と公開者だけがシステム フォルダー内のサービスにアクセスできるようにするために、ロールを割り当てないでください。 |
SS07 | Important | REST サービス ディレクトリ | Web ブラウザーを介して REST サービス ディレクトリにアクセスできるかどうかを決定します。ユーザーがサービスのサーチまたは検索のために積極的に使用している場合を除き、サービスの参照、Web サーチでのサービスの検索、または HTML フォームからのサービスの要求の機会を減らすために、無効にしてください。無効化すると、クロスサイト スクリプティング (XSS) 攻撃から保護することもできます。 |
SS08 | Important | クロスドメイン制限 | クロスドメイン リクエストを特定のドメインに制限するかどうかを決定します。不明なアプリケーションから Web サービスに悪意のあるコマンドが送られてくる可能性を低くするために、サービスの使用を、信頼できるドメイン内でホストされるアプリケーションのみに制限することをお勧めします。 |
SS09 | Important | ダイナミック ワークスペース | ダイナミック ワークスペースを介してデータベースにアクセスできるサービスのリストを生成します。適切な保護措置を取らない限り、これによってデータベース/ワークスペースが、REST 経由で悪意のある第三者によってアクセスされる可能性があります。サービスおよびダイナミック レイヤー/ワークスペース機能が、Web アプリケーションでアクティブに使用するためのものである場合のみ、ダイナミック ワークスペースを有効にします。この場合、マップ サービスがワークスペース/データベースに接続するために使用するデータベース接続では、たとえば、ワークスペース内に追加したテーブルのうち必要なテーブルのみに読み取り専用アクセスを付与するなど、アプリケーションに必要な最低限の権限だけが付与されていることを確認することが重要です。 |
SS10 | Recommended | HTTPS 経由の ArcGIS Web Adaptor | 1 つ以上の ArcGIS Web Adaptor を HTTPS 経由で登録するかどうかを決定します。ArcGIS Server Manager が HTTPS に正常にリダイレクトできるようにするには、すべての ArcGIS Web Adaptor を HTTPS 経由で登録する必要があります。 |
SS11 | Recommended | PSA アカウントの無効化 | プライマリ サイト管理者のアカウントを有効にするかどうかを決定します。このアカウントを無効にして、アイデンティティ ストアで指定したグループまたはロール以外の方法では ArcGIS Server を管理できないようにすることをお勧めします。 |
SS12 | Recommended | フィーチャ サービスの権限 | update または delete 操作が有効になっており、匿名アクセスに開かれているフィーチャ サービスのリストを返します。これにより、認証なしでフィーチャ サービスのデータを変更または削除できるようになります。 |
SS13 | Recommended | LDAP アイデンティティ ストア | ArcGIS Server に LDAP アイデンティティ ストアが構成されている場合に、暗号化通信が使用されているかどうかを判断します。ArcGIS Server と LDAP ID プロバイダー間の暗号化通信を確保するには、LDAP ユーザー ストアと LDAP ロール ストア (使用している場合) のどちらの構成にも定義されている接続 URL で ldaps:// を使用することをお勧めします。 |
SS14 | Recommended | サーバー SSL 証明書 | ArcGIS Server で自己署名証明書が使用されているかどうかを判断します。ArcGIS Server と通信しているクライアントから Web ブラウザーの警告やその他の予期しない動作を少なくするために、ポート 6443 にバインドされた CA 署名 SSL 証明書をインポートして使用することをお勧めします。 |
SS15 | Critical | システム サービスの共有 | システム フォルダー内のサービスがポータル アイテムとして共有されているかどうかを判断します。適切な権限を確保するために、これらのサービスはポータルで共有されるようになっていません。関連付けられたポータル アイテムを削除してデフォルトのサービス権限を復元することをお勧めします。 |
serverscan スクリプトは <ArcGIS Server installation location>/tools/admin ディレクトリにあります。 コマンド ラインまたはシェルからスクリプトを実行します。必要に応じて、スクリプトを実行中にパラメーターを指定できます。
serverScan.py パラメーター
パラメーター | 説明 |
---|---|
-n | ArcGIS Server がインストールされているコンピューターの完全修飾ドメイン名 (gisserver.domain.com)。デフォルトは、スクリプトが実行されているコンピューターのホスト名です。 |
-u | 管理者アカウントのユーザー名。 |
-p | 管理者アカウントのパスワード。 |
-o | セキュリティ スキャン レポートが保存されるディレクトリ。デフォルトのディレクトリは、スクリプトを実行するのと同じフォルダーです。 |
-t | ユーザー名とパスワードの代わりに、トークンを生成して使用できます。フェデレートされた ArcGIS Server 用にポータルのトークンが生成される場合、スキャンされる ArcGIS Server の完全修飾ドメイン名が「Webapp URL」フィールドに入力される必要があります。 フェデレーションが解除された ArcGIS Server 用にトークンが生成される場合、トークンは ArcGIS Server Administrator Directory (arcgis/admin/generateToken) を使用して生成される必要があり、クライアントは「リクエスト IP」でなければなりません。トークンが指定されると、指定されているユーザー名またはパスワードが無効化されます。 |
--ignoressl | SSL 証明書確認を無効化します。10.7.1 以降、デフォルトで、スクリプトがすべての SSL 証明書の確認を試行します。Python が証明書の発行元を信頼しない場合、スクリプトの実行は失敗します。必要に応じて、このパラメーターですべての証明書を無視するよう指定できます。 |
-h または -? | スクリプトの実行中に指定できるパラメーターのリストを出力します。 |
例: python serverScan.py -n gisserver.domain.com -u admin -p my.password -o C:\Temp
パラメーターを 1 つも指定せずに serverScan.py スクリプトを実行すると、手動でパラメーターを入力するか、デフォルト値を選択するよう求めるメッセージが表示されます。トークンを使用する場合は、スクリプトを実行中にパラメーターとしてトークンを指定する必要があります。
このスキャンによって、指定された ArcGIS Server サイトで見つかった上記の問題をリスト表示するレポートが、HTML 形式で生成されます。
デフォルトでは、このレポートは、スクリプトを実行したのと同じフォルダーに保存され、serverScanReport_[hostname]_[date].html と名前が付けられます。