Windchill ソリューションのセキュリティのためのベストプラクティス
次に、Windchill ソリューションのセキュリティのために役立ついくつかの基本的な操作について説明します。一部の操作はファイルのカスタマイズを伴います。カスタマイズのベストプラクティスについては、Windchill Customization Guide を参照してください。
|
この情報は、Windchill の設定のセキュリティを高めるための参考としてのみ提供されます。PTC は、ここに記述しているサードパーティ製品をサポートしていません。また、ユーザーのセキュリティインフラストラクチャに関しては一切責任を負いません。
|
1. 信頼されたユーザーのみがアクセス可能な、制御され、セキュリティ保護され、信頼されたネットワークに Windchill を必ず展開します。これには展開されているすべての Windchill クラスタが含まれます。
2. HTTPS を使用するように Web サーバーを設定します。
HTTPS は Secure Socket Layer/Transport Layer Security (SSL/TLS) を使用して、ブラウザ (クライアント) と Web サーバーの間で送信される Web アプリケーションデータが無許可のユーザーによって開示および変更されないように保護します。
|
安全な展開のガイドラインとして、Windchill のインストールで HTTP-Strict-Transport-Security (HSTS) を設定することを強くお勧めします。
|
3. 機密情報の保護に使用される暗号化キーの長さを 128 ビット (デフォルト) から 256 ビットに修正します。詳細については、
暗号化キーの長さの修正を参照してください。
4. Oracle Transparent Data Encryption (TDE) を有効にして保存データを保護します。Windchill データベースのデータを暗号化すると、不正アクセスされてもデータが見えなくなります。これによって知的所有権を保護するレイヤーが 1 つ追加され、Windchill ソリューション全体が攻撃に対して強くなります。
5. 本番サーバーで Windchill の Web アクセス可能なディレクトリから次を除去します。
◦ 実装例
◦ サンプルコード
◦ API ドキュメント
次に例を示します (ただし、これにかぎりません)。
◦ <Windchill>/codebase/infoengine/docs/apidocs
◦ <Windchill>/codebase/netmarkets/jsp/apiDocs
◦ <Windchill>/codebase/netmarkets/jsp/carambola
◦ <Windchill>/codebase/wt/clients/library
◦ <Windchill>/codebase/wt/clients/filevault/*.doc
◦ <Windchill>/codebase/CustomizerDoc
◦ <Windchill>/codebase/wt/fv/docs
◦ <Windchill>/codebase/com/ptc/core/HTMLtemplateutil/examples
◦ <Windchill>/codebase/config/logicrepository/xml/explorer/structureexplorer/configurablelinksexample
◦ <Windchill>/codebase/CambridgeDocs3/SampleData
◦ <Windchill>/codebase/registry/ixb/samples
<Windchill> は、Windchill がインストールされている場所を表します。
6. WEB-INF ディレクトリのセキュリティを設定します。
<Windchill>\codebase\WEB-INF ディレクトリのコンテンツとディレクトリのアクセス性を確認します。Apache のデフォルト設定では、すべての Web クライアントからのこのディレクトリとディレクトリのコンテンツへのアクセスが拒否されるようになっています。ただし、ディレクトリのコンテンツにアクセスできないようにするため、検証を実行することをお勧めします。このディレクトリへのアクセスが許可されている URL プレフィックスまたはパターンを特定するには、
<APACHE_HOME>/conf/conf.d/30-app-Windchill-Auth.conf ファイルでコンフィギュレーションを確認します。設定されているすべての代替 URL パターンに対して Web アクセスが制限されているかどうかを確認して検証します。アクセス可能な場合は、修正操作を実行します。詳細については、
サポートアーティクル CS375403 を参照してください。
a. このディレクトリがオープンな状態であるかどうかを調べるには、http://<Windchill_URL>/WEB-INF/webapp.properties にアクセスします。
b. 認証の後でこのファイルが表示された場合は、そのディレクトリへアクセスできます。
7. ファイアウォールのコンフィギュレーションのガイダンスを参照して、RMI (Remote Method Invocation) を保護します。
8. CSRF 攻撃による
Windchill でのデータ改変操作を予防するために、クロスサイトリクエストフォージェリ (CSRF) からの保護はデフォルトで有効になっています。詳細については、
クロスサイトリクエストフォージェリを参照してください。
9. Windchill ソリューションに対しては、強いパスワードポリシーを設定してください。強いパスワードの特性は次のとおりです。
◦ 最小パスワード長を設定している
◦ 大文字、小文字、数字、および特殊文字を含む
◦ ユーザー名または組織名を含まない
◦ 有効期限がある
◦ 指定したログオン試行回数の後のアカウントロックアウトを含めます。デフォルトでは、WindchillDS では不適切なパスワードが 5 回連続で入力された場合にアカウントをロックします。ロックの有効時間は 15 分です。
10. データ読み込み時に作成されたデフォルトアカウントのパスワードを変更します。多くの場合、これらのパスワードは wcadmin、demo などです。新しいパスワードを設定する際には、前述の強いパスワードの特性に従った強いパスワードを使用してください。
11. ユーザーが退職した場合、Windchill からそのユーザーを除去します。Windchill からユーザーを完全に除去することで、将来、別の個人にそのユーザー名を再利用する場合の問題を回避できます。ユーザーを完全に除去するには、次の手順を実行します。
a. ディレクトリサービスからユーザーを除去するか、Windchill でのユーザーエントリの表示を除去します。
b. 「参加者管理」ユーティリティの「Windchill から削除」操作を使用します。
Windchill からユーザーを削除する方法については、
ユーザーの削除を参照してください。
12. Web サーバー上でディレクトリリストが無効になっていることを確認します。デフォルトでは、HTTP Server ではディレクトリをブラウズできません。
13. 重要イベントの監査を有効にします。イベントを定期的にログに記録することは、不審なアクティビティの調査に役立ちます。デフォルトでは、Windchill により、システム使用率、組織使用率、ダウンロードイベント、潜在的な CSRF イベントが記録されます。
次の監査イベントをログに記録することを検討してください。
◦ ユーザーのログイン
◦ ユーザーのログアウト (フォームベースの認証でのみ可能)
◦ ユーザーパスワードの変更
◦ アクセス制御に関するすべての変更
▪ アクセス許可やポリシーの変更
▪ チーム、役割、グループの変更
◦ コンテンツの追加、削除、移動
▪ インポート
▪ エクスポート
▪ ダウンロード
▪ 製品表現を表示
▪ コンテキスト間での共有
◦ オブジェクトまたは参加者の作成や削除
◦ ライフサイクル状態の変更
◦ セキュリティラベルの修正 (セキュリティラベルが有効な場合)
監査イベントのログを有効にしている場合、Windchill データベースアプリケーションユーザーからすべての監査テーブルに対する削除アクセス許可を除去することで、Windchill から監査記録がパージされないようにする必要もあります。アクセス許可を除去するには、次の手順を実行します。
a. Oracle SQLplus ユーティリティを使用して、データベース管理者としてデータベースにログインします。
b. Windchill データベースアプリケーションユーザーを作成します (存在しない場合)。ユーザーを作成するには、<Windchill>\db\sql\create_wc_app_user.sql スクリプトを実行します。
c. SQL> revoke delete on <WC データベースユーザー>.AuditRecord from <WC データベースユーザー> を使用して、Windchill データベースアプリケーションユーザーの Windchill 監査テーブルに対する削除アクセス許可を除去します (<WC データベースユーザー> は、データベースアプリケーションのユーザー名を表します)。
d. Windchill サーバーを停止します。
e. Windchill シェルで次のコマンドを実行し、データベースアプリケーションユーザー情報でデータベースプロパティを更新します。
xconfmanager -s wt.pom.dbUser=<WC データベースユーザー> -t "db/db.properties"
xconfmanager -s wt.pom.dbPassword=<WC データベースユーザーのパスワード> -t
"db/db.properties"
xconfmanager -p
f. Windchill サーバーを起動します。
14. 潜在的なサービス拒否 (DoS) 攻撃を防止するため、Windchill 展開に対してレート制限が適用されていることを確認します。レート制限が確実に適用されるようにするため、Apache コンフィギュレーションのみに依存しないことをお勧めします。
◦ Apache に到達するトラフィックを制御するための適切な規則とポリシーが適用されたファイアウォール (またはその他のロードバランサー) を使用して、
Windchill 展開のセキュリティを向上させます。社内のセキュリティチームと相談して、自分の環境での規則とポリシーを決定します。
Windchill コンフィギュレーションでのファイアウォールの詳細については、
「ファイアウォール」を参照してください。
◦ Apache HTTP Server は安全なコンフィギュレーションのガイダンスとヒントを提供します。詳細については、
Security Tips を参照してください。
Windchill で、Apache にはデフォルトのコンフィギュレーション設定が使用されます。これらの設定は顧客の要件に合わせて調整する必要がありますが、
Windchill に対して完全なレート制限が適用されない場合があります。
15. ログの管理については、次のことを考慮してください。
◦ ログファイルに対して適切なオペレーティングシステムのアクセス許可を与えます。
◦ ログ統計を生成し、ログを生成したサーバーとは別のサーバー上でログ解析を実行します。
◦ Web サーバーログファイルの増大状況を監視し、次のことが起きていないか調べます。
▪ サイズが異常に増大している
▪ 異常な件数の 40x、50x などの HTTP 応答エラーが発生している
◦ リアルタイムまたは定期的にログを検証するスクリプトを実装します。
◦ 本番システムでの各ログ機能は、問題のトラブルシューティングで必要な場合にのみ有効にします。たとえば、クライアントのエラーログメッセージをメソッドサーバーのログに記録する場合は、次の手順に従います。
1. > > の順に選択します。「サーバーステータス」ウィンドウが開きます。
2. 「監視ツール」リンクをクリックします。「システム正常性監視ツール」ウィンドウが開きます。
3. 「Log Levels」リンクをクリックします。
4. 次の設定でログを有効にします。
▪ 「Server Processes」の「Server Managers」、「Method Servers」、および「Servlet Engines」チェックボックスをオンにします。
▪ 「Logger」フィールドに、「wt.log4javascript」と入力します。
▪ ログレベルを「ERROR」に設定します。
5. 「Set」をクリックして、ログを有効にします。
トラブルシューティングが終ったら、ログレベルを「OFF」に設定して、ログ機能を無効にします。
◦ 監視ツールを使用してログを解析します。詳細については、
監視ツールの使用を参照してください。
16. Windchill コードをカスタマイズするときは、以下のセキュリティガイドラインに従います。
◦ クロスサイトリクエストフォージェリ攻撃から、データを作成、更新、削除する操作を保護します。
◦ SQL クエリーで準備されたステートメントまたはパラメータ化されたステートメントを使用します。これによって、SQL インジェクション攻撃を防ぐことができます。
◦ 外部ソースから受け取るデータを信頼しないようにします。信頼しないデータの処理が不適切な場合、インジェクション攻撃を受けやすくなります。信頼しないデータの例を以下に示します。
▪ ユーザーまたは外部システムから受け取り、Windchill データベースに格納されているデータ。たとえば、オブジェクト名、数字、説明などがあります。
▪ クライアントから受け取ったデータ (リクエストパラメータ、フォームフィールド、非表示フィールド、クエリー文字列、HTTP ヘッダー、URL など)。
▪ ユーザー名など、ユーザーまたは外部システムから受け取り、LDAP に格納されているデータ。
▪ 外部データベースに保存されるデータ
◦ 信頼しないすべてのデータのデータタイプ、フォーマット、長さが正しいかどうか検証します。信頼しないデータとしては、フォームフィールド、クエリー文字列、HTTP ヘッダー、cookie、URL などがあります。
◦ クロスサイトスクリプティング (XSS) 攻撃を防ぐために、ブラウザ (クライアント) 内でレンダリングされるすべてのデータに対して、HTML エンコーディング、JavaScript エンコーディング、URL エンコーディングなど、状況に応じた適切なエンコーディングを使用してください。
◦ RemoteAccess を実装するクラスが、アクセス制御のバイパス、特権の昇格、またはファイルシステムへの不適切なアクセスを行っていないことを確認します。
◦ 使用しないコードをすべて削除します。