PowerShell・WinRM の停止

実行環境で PwoerShell の停止、ログの取得について解説します。
また、WinRMを使用してリモートでPowerShellの実行が可能です。そのため、WinRMの停止についても解説します。

PowerShell 2.0
エンジンの削除

ダウングレード攻撃を阻止するため、役割と機能の削除ウィザードで PowerShell 2.0 エンジン を削除します。PowerShell 2.0 はログ出力ができないため、ダウングレード攻撃されると手掛かりを失います。
[コントロールパネル]>[プログラム]>[プログラムと機能]>[Windows の機能の有効化または無効化]>[Windows PowerShell 2.0] のチェックボックスを外す。

グループポリシーでPowerShell を停止する

PowerShell を使用しないシステムでは、グループポリシーで PowerShell を停止してください。

[ユーザーの構成]>[ポリシー]>[管理用テンプレート]>[システム]>[指定された Windows アプリケーションを実行しない]>[有効]
[実行しないアプリケーションの一覧]>[powershell.exe、powershell_ise.exe、pwsh.exe]

PowerShell の
ログを取得する

グループポリシーで PowerShellのログを有効にしてください。
[コンピュータの構成]>[ポリシー]>[管理用テンプレート]>[Windowsコンポーネント]>[Windows PowerShell]>[モジュールログを有効にする] を [有効] に設定し、[オプション]>[モジュール名]>[表示] をクリックする。

[モジュール名] の入力画面で、[値] に [Microsoft.PowerShell.*] [Microsoft.WSMan.Management] の2行を入力し、[OK] をクリックする。

[イベントビューアー]-[アプリケーションとサービス ログ]-[Microsoft]-[Windows]-[PowerShell]-[Operational] を右クリックし、[プロパティ] をクリックし、[ログを有効にする] にチェックする。

最大ログサイズを10048KB以上にし、[イベントを上書きしないでログをアーカイブする]をチェックする。

定期的に [イベントビューアー]-[アプリケーションとサービス ログ]-[Microsoft]-[Windows]-[PowerShell]-[Operational] を監査します。

PowerShell の
ログサイズを設定する

定期的に [イベントビューアー]-[アプリケーションとサービス ログ]-[Microsoft]-[Windows]-[PowerShell]-[Operational] を監査します。
[イベントビューアー]-[アプリケーションとサービス ログ]-[Microsoft]-[Windows]-[PowerShell]-[Operational] を右クリックし、[プロパティ] をクリックし、[ログを有効にする] にチェックする。

最大ログサイズを10048KB以上にし、[イベントを上書きしないでログをアーカイブする]をチェックする。

WinRMサービスを無効化/制限

グループ ポリシーを使用してリモート管理を無効にする

ローカルグループポリシーエディターを開くには、次のいずれかの操作を行います。

  1. Windows Server 2016、Windows Server 2012 R2、または Windows Server 2012 を実行しているサーバーで、「グループポリシーの管理」を起動します。
  2. ポリシーオブジェクトを選択し、右クリックして編集をクリックします。
  3. グループポリシー管理エディターで、[コンピューターの構成]>[管理用テンプレート]>[Windows コンポーネント]>[windows リモート管理 (winrm)]>[Winrm サービス] を開きます。
  4. コンテンツ ウィンドウで [WinRM によるリモート サーバー管理を許可する] をダブルクリックします。
  5. [WinRM によるリモート サーバー管理を許可する] ポリシー設定のダイアログ ボックスで、[無効] をクリックしてリモート管理を無効にします。[OK] をクリックして変更内容を保存し、ポリシー設定のダイアログ ボックスを閉じます。

    WinRM が使用するポートをパーソナルFirewallで閉じる

    PowerShell を管理者モードで起動し、以下のコマンドを実行します。

    Set-NetFirewallRule -name WINRM-HTTP-In-TCP -Enabled False
    Set-NetFirewallRule -Name WINRM-HTTP-In-TCP-PUBLIC -Enabled False