エンタープライズレベルのPowerShellセキュリティのベストプラクティス

Microsoftは、タスクの自動化と構成管理のためにWindows PowerShellを開発しました。これは、.NETフレームワークに基づいており、コマンドラインシェルとスクリプティング言語が含まれます。ユーザーの自動化を支援するだけでなく、複雑な管理タスクを迅速に解決します。それにもかかわらず、多くのユーザーはPowerShellがセキュリティ侵害のためにハッカーによって使用されるツールであるとよく考えています。残念ながら、PowerShellはセキュリティ侵害に広く使用されていることは事実です。このため、技術的な知識がほとんどない、またはまったくないユーザーは、PowerShellを無効にすることがよくあります。しかし、実際には、PowerShellセキュリティアプローチは、エンタープライズレベルでセキュリティ侵害に対する最善の保護を提供できます。

MicrosoftドイツのPremier Field EngineerであるDavid das Nevesは、彼の投稿の1つで、PowerShellセキュリティアプローチは、エンタープライズレベルでセキュリティを設定するための強力な方法であると述べています。実際、PowerShellは、RedMonkによって作成されたプログラミング言語ランキングチャートによると、GitHubで最も使用されている言語の1つです。

PowerShellセキュリティの理解

Windows PowerShellは、世界中の多くのIT管理者によって使用されています。これは、Microsoftのタスク自動化および構成管理フレームワークです。このフレームワークを使用すると、管理者はローカルとリモートの両方で管理タスクを実行できます。しかし、最近、いくつかの組織は特にリモートアクセスに関して、セキュリティの脆弱性が疑われるため、PowerShellの使用を避けています。このツールに関する混乱を解消するために、Microsoft Premier Field EngineerのAshley McGloneは、なぜそれが安全なツールであり、脆弱性ではないのかを説明したブログを公開しました。

組織はPowerShellを脆弱性とみなしている

McGloneはこのツールに関する組織の最近の傾向についていくつか言及しています。PowerShellリモートの使用を禁止している組織もあれば、InfoSecがリモートサーバー管理をブロックしている組織もあります。彼はまた、PowerShellリモートセキュリティに関する質問を常に受け取っていると述べています。多くの企業は、環境内のツールの機能を制限しています。これらの企業のほとんどは、常に暗号化され、単一のポート5985または5986であるツールリモートを心配しています。

PowerShellセキュリティのベストプラクティス

McGloneは、このツールが脆弱性ではない理由、逆に非常に安全である理由を説明しています。彼は、このツールは脆弱性ではなく、中立的な管理ツールであるという重要なポイントを挙げています。このツールのリモートは、すべてのWindows認証および承認プロトコルを尊重します。デフォルトでは、ローカルの管理者グループのメンバーシップが必要です。

さらに、彼はこのツールが企業が考えるよりも安全な理由を次のように述べています。

「スクリプトブロックのロギングとシステム全体の転写を有効にすると、WMF 5.0(またはKB3000850を搭載したWMF 4.0)の改善により、PowerShellはハッカーが選択する最悪のツールになります。ハッカーは、一般的なCMDユーティリティとは異なり、いたるところに指紋を残します。」

強力な追跡機能があるため、McGloneはリモート管理に最適なツールとしてPowerShellを推奨しています。このツールには、組織がサーバー上のアクティビティについて誰が、何を、いつ、どこで、どのようにという質問に対する答えを見つけることができる機能が備わっています。

さらに、このツールを保護し、エンタープライズレベルで使用する方法を学ぶためのリソースへのリンクを提供しました。会社の情報セキュリティ部門がこのツールについて詳しく知りたい場合は、McGloneはPowerShellリモートセキュリティに関する考慮事項へのリンクを提供します。これは、PowerShellチームからの新しいセキュリティドキュメントです。このドキュメントには、Powershellリモートとは何か、そのデフォルト設定、プロセスの分離と暗号化、トランスポートプロトコルなど、さまざまな有益なセクションが含まれています。

ブログ記事には、PowerShellについて詳しく学ぶための情報源とリンクがいくつか記載されています。これらのソースは、WinRMSecurity Webサイトへのリンクと、Lee Holmesによるホワイトペーパーを含め、TechNet Blogsで入手できます。

エンタープライズレベルのWindows PowerShellセキュリティ

Windows PowerShellセキュリティを設定する前に、その基本を理解する必要があります。ユーザーは、最新バージョンのWindows PowerShellを使用する必要があります。ここでユーザーは、Windows PowerShellセキュリティは最新バージョンのWindows PowerShellで設定する必要があることに注意する必要があります。それよりも低いバージョン(PowerShellバージョン2など)を使用すると、害を及ぼす可能性があります。したがって、ユーザーはPowerShellバージョン2を削除する必要があります。

最新バージョンのWindows PowerShellに加えて、ユーザーは最新バージョンのOSを選択する必要があります。PowerShellセキュリティを設定するには、Windows 11またはWindows 10が最も互換性のあるオペレーティングシステムです。Windows 11/10には多くのセキュリティ機能が搭載されています。したがって、ユーザーは古いWindowsマシンをWindows 11/10に移行し、使用できるすべてのセキュリティ機能を評価することをお勧めします。

ExecutionPolicy:多くのユーザーはPowerShellセキュリティのアプローチを選択せず、ExecutionPolicyをセキュリティ境界として使用します。しかし、Davidが彼の投稿で述べているように、標準ユーザーであっても、ExecutionPolicyを回避する方法は20以上あります。そのため、ユーザーはRemoteSignedなどのGPOを介して設定する必要があります。ExecutionPolicyは、ハッカーがインターネットからPowerShellスクリプトを使用することを防ぐことはできますが、完全に信頼できるセキュリティ設定ではありません。

PowerShellセキュリティアプローチで考慮すべき要素

Davidは、エンタープライズレベルでPowerShellセキュリティを設定する際に考慮すべき重要な要素をすべて挙げています。Davidが取り上げている要素の一部を以下に示します。

  • PowerShellリモート

  • 特権アクセスを保護する

  • 環境を最新化

  • ホワイトリスト/署名/ConstrainedLanguage/Applocker/Device Guard

  • ロギング

  • ScriptBlockLogging

  • 拡張ログ/WEFおよびJEA

PowerShellセキュリティ設定の詳細については、MSDNブログの彼の投稿を参照してください。