Windows コレクター用の WinRM の構成

最終更新日: 27 年 2023 月 XNUMX 日

注: この機能はオープン ベータ版の一部として導入されました。 この機能は必ずテスト環境で使用してください。 詳細については、LogicMonitor カスタマー サクセス マネージャーにお問い合わせください。 オープンベータ版に対するフィードバックを提供するには、クリックしてください ページ をご覧ください

顧客データとポータルのセキュリティは、LogicMonitor にとって最も重要です。 脆弱性が事前に回避され、迅速に処理されることを保証します。 さらに、多くの顧客から Windows コレクターを実行する権限を減らすよう要求されました。 悪意のあるエンティティによる攻撃を軽減する取り組みの一環として、最小限の特権の原則を採用しています。 この取り組みを実装するために、Windows コレクターが管理者特権なしでインストールされる Windows リモート管理 (WinRM) ベースのソリューションを開発しました。

LogicMonitor の安全性を高めるとともに、WMI ベースのソリューションから WinRM ベースのソリューションへの移行も進めています。 WMI は DCOM を使用しますが、これには複数のポートが必要で、安全性が比較的低く、ネットワーク アドレス変換 (NAT) に適していません。 一方、WinRM は、サーバー、デバイス、アプリケーション、およびさまざまな Web サービスの管理に、SOAP (Simple Object Access Protocol) ベースのプロトコルである WS-Management を使用します。 Active Directory 経由で簡単に管理でき、デフォルトで暗号化され、HTTPS と XNUMX つのポートを使用します。 これにより、セキュリティが強化され、ファイアウォールとの親和性が高まり、Windows コレクターの導入が容易になります。

WinRM を使用する利点

WinRM は Microsoft による実装です。 WS管理プロトコルは、さまざまなベンダーのハードウェアとオペレーティング システムの相互運用を可能にする、標準の SOAP ベースのファイアウォール対応プロトコルです。 したがって、WinRM は、WS-Management プロトコルを使用してローカル コンピューターまたはリモート コンピューターから管理データを取得する方法を提供します。

監視デバイスが Windows ベースの場合、その管理データは WMI を通じて読み取ることができます。 Windows に加えて、WinRM は WS-Management プロトコルをサポートするデバイスも監視します。 現在、コレクタは、DCOM/WBEM 経由で WMI を使用してローカル デバイスまたはリモート デバイスからこの管理データを取得します。 WS-Management プロトコルは、DCOM/WBEM などのオブジェクトではなく XML でデータを返します。 したがって、DCOM/WBEM と比較した WS-Management プロトコルの拡張性と相互運用性により、データ収集に WinRM を使用することは非常に有益です。

前提条件

WinRM を構成して使用してデータをクエリするには、次の前提条件を満たす必要があります。

  • EA Collector 34.100 以降のバージョンをインストールする必要があります。
  • ドメイン コントローラー (DC) をセットアップする必要があります。 WinRM 経由で監視するマシンはドメインの一部である必要があります。 したがって、適切なドメイン コントロール フォレスト設定が存在する必要があります。 マシンがドメインの一部であるかどうかを確認するには、次の場所に移動します。 パソコンについて > マシン名.
  • 管理者グループのメンバーではないドメイン ユーザーを作成する必要があります。 見る、 ドメインユーザーの作成.
  • Windows デバイス上で HTTPS リスナーを作成して有効にする必要があります。 見る、 HTTPS リスナー (ポート 5986) を作成します。

ドメインユーザーの作成

新しいドメイン ユーザーを作成することも、既存のドメイン ユーザーを使用することもできます。 ただし、ドメイン ユーザーが Administrators グループのメンバーではないことを確認してください。 新しいドメイン ユーザーを作成する場合は、まずドメイン ユーザーを作成し、次にそのドメイン ユーザーを使用してコレクタをインストールすることをお勧めします。

  1. MFAデバイスに移動する  サーバーマネージャ > 工具 > Active Directoryユーザーとコンピュータ
  2. WinRM に使用するドメインに移動し、右クリックします。 ユーザー をクリックして NEW.
  3. 新しいユーザーの詳細を入力し、選択します  .
  4. パスワードを入力して確認し、選択します  .
  5. 内容を確認して選択してください 終了.

HTTPS リスナー (ポート 5986) の作成

Windows デバイス上で HTTPS リスナーを作成または有効にする必要があります。 WinRM 用に作成された HTTPS リスナーがない場合は、以下の手順に従います。

  1. コマンドを実行する WinRM e winrm/config/listener cmd_promptで、ポート5986がWinRMサービスで既に有効になっているかどうかを確認します。
  2. 既存の署名付き証明書 (有効な CA サーバーによって署名された) を使用します。

注: 既存の署名付き証明書がない場合は、PowerShell で次のコマンドを実行します。
New-SelfSignedCertificate -DnsName "" -CertStoreLocation Cert:\LocalMachine\My

DnsName はコンピュータのフルネームです。 以下で見つけることができます [コントロール パネル] > [システムとセキュリティ] > [システム] > [フル コンピュータ名]。

  1. 既存の証明書の拇印をコピーし、cmd_prompt で次のコマンドを実行します。
    winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="<YOUR_DNS_NAME>"; CertificateThumbprint="<COPIED_CERTIFICATE_THUMBPRINT>"}'
  2. リスナーが作成されたかどうかを確認するには、次のコマンドを実行します。 WinRM e winrm/config/listener cmd_promptで、ポート5985および5986の詳細を出力します。
  3. 新しいファイアウォールインバウンドルールを追加して、ポート5986(TCP)のすべての接続を許可するには、次の手順に従います。
    1. 検索して選択します セキュリティが強化されたWindowsファイアウォール オプション。 [セキュリティが強化された Windows ファイアウォール] ウィンドウが表示されます。
    2. 左側のナビゲーションで、右クリックします インバウンドルール をクリックして 新しいルール。 [新しいインバウンドルールウィザード]ウィンドウが表示されます。
    3. 現在地に最も近い ポート ラジオボタンを押して選択します  .
    4. 現在地に最も近い TCP ラジオボタン。
    5. 現在地に最も近い 特定のローカルポート ラジオボタンと入力 5986 空白のフィールドに。 選択する 
    6. 現在地に最も近い 接続を許可する ラジオボタンを押して選択します  .
    7. 現在地に最も近い ドメインプライベート、 公共 チェックボックスをオンにして選択します  .
    8. にルール名を入力します。 お名前 フィールドを選択して選択します 終了.

WinRM 対応コレクターのセットアップ

WinRM 対応コレクターをセットアップするには、次の手順に従います。

  1. Windowsコレクターをインストールする
  2. Agent.conf で WinRM プロパティを構成する
  3. 自動化された WinRM スクリプトを移行する
  4. GPO ポリシーの作成
  5. WinRM タスクを GPO ポリシーに追加する
  6. PowerShell でポリシーを実行する

Windows コレクターのインストール

で与えられた指示に従ってください コレクターのインストール Windows コレクターをインストールします。 EA Collector 34.100 以降のバージョンを必ずインストールしてください。

Agent.conf での WinRM プロパティの構成

HTTP (ポート 5985) を使用して WinRM データ収集機能を使用するには、agent.conf ファイルで次のプロパティを構成する必要があります。




プロパティ
デフォルト値説明
wmi.winrm.enablefalseWinRM 機能を有効または無効にできます。 コレクターが PowerShell を使用して WinRM クエリを実行できるようにするには、値を true に設定します。
wmi.winrm.authTypeデフォルト現在、デフォルト認証タイプと Kerberos 認証タイプのみがサポートされています。
  • Kerberos – ホスト名は単なる IP アドレスではなく、ドメイン名である必要があります。

  • デフォルト – ホスト名は IP アドレスまたはドメイン名のいずれかになります。
  • wmi.winrm.useSSLtrueHTTPS を使用して WinRM データ収集を実行できるようにします。 これを行うには、HTTPS セットアップが構成されていることを確認してください。
    wmi.winrm.certChecktrue
  • true の場合 – WinRM クライアントはサーバー証明書を検証し、証明書の共通名 (CN) がサーバーのホスト名と一致するかどうかを確認します。
    これにより、セキュリティ慣行に確実に従うことができます。

  • false の場合 – コレクターが追加します -SkipCACheck-SkipCNCheck このプロパティをデータ収集スクリプトに追加すると、サーバー証明書の検証と、サーバーのホスト名と一致する場合の証明書の共通名 (CN) の検証がスキップされます。 これは、クライアントとサーバーが相互に信頼するサンドボックスまたは環境に使用できます。

    詳細については、を参照してください。 https://learn.microsoft.com/en-us/dotnet/api/system.management.automation.remoting.pssessionoption.skipcacheck?view=powershellsdk-7.0.0 や https://learn.microsoft.com/en-us/dotnet/api/system.management.automation.remoting.pssessionoption.skipcncheck?view=powershellsdk-7.3.0

  • セキュリティのベスト プラクティスに従って、このプロパティの値を true に設定することをお勧めします。
    注意:: このプロパティはテスト目的のみに提供されています。 ベータ版の終了後は、製品版のリリース時に利用できなくなる可能性があります。

    構成プロパティを使用してagent.confファイルを更新した後、コレクタを再起動します。 

    自動化された WinRM スクリプトの移行

    次の XNUMX つのスクリプトを追加することで、WinRM 構成プロセスを自動化しました。 WinRM_Config_02.ps1WinRM_Config_01.ps1。 スクリプトに関して次の点を考慮する必要があります。

    • スクリプトは Windows コレクター インストーラーにバンドルされています。 
    • コレクターをインストールした後、次の場所に移動します。 \LogicMonitor\Agent\bin スクリプトを共有フォルダーに移動します。 
    • グループ ポリシー (GPO) を通じて実行されるときにこれらのスクリプトにアクセスするには、ドメイン内のすべてのマシンが共有フォルダーにアクセスできる必要があります。

    スクリプトを実行する目的:

    • WinRM_Config_01.ps1 – WMI クラス、特に Win32_Service を監視するには、ユーザーは特定の権限を持っている必要があります。 WinRM_Config_01.ps1 次の読み取り専用権限をユーザーに与えます: LC – コンテンツのリスト、RP – プロパティの読み取り、および RC – 権限の読み取り。
    • WinRM_Config_02.ps1 – パフォーマンス モニター ユーザー、イベント ログ リーダー、リモート管理ユーザーの 3 つのユーザー グループにユーザーを追加することで、必要な変更を加えます。 また、正しい WMI 名前空間セキュリティ権限 (Enable、MethodExecute、ReadSecurity、および RemoteAccess) も提供します。

    注: 最小特権の原則に従って、ユーザーにはデータを収集するために必要な読み取り専用権限のみが与えられます。

    GPO ポリシーの作成

    1. MFAデバイスに移動する サーバーマネージャ > 工具 > グループポリシー管理.
    2. 使用するドメインを右クリックし、選択します このドメインに GPO を作成し、ここにリンクします…
    3. 新しい GPO ポリシーの名前 (WinRM 構成など) を入力し、選択します。 OK。 Source Starter GPO は残ることに注意してください。 (なし).
    4. 新しく作成した GPO ポリシーを右クリックし、選択します。 編集 WinRM タスクを追加します。

    GPO ポリシーへの WinRM タスクの追加

    1. グループ ポリシー管理エディターで、次の場所に移動します。 コンピューター構成 > Policies > Windowsの設定 > スクリプト(起動/シャットダウン) をクリックして スタートアップ.

      [スタートアップ プロパティ] ダイアログ ボックスが表示されます。
    2. スクリプト タブ選択 Add.

      「スクリプトの追加」ダイアログが表示されます。
    3. [スクリプトの追加] ダイアログで、次の詳細を入力します。
      1.  スクリプト名 フィールドで PowerShell.exe パスを参照します。 通常、パスは次のとおりです。 C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe
        注: パスが異なる場合は、ファイルを配置した特定のフォルダーを参照してください。 Powershell.exe.
      2.  スクリプトパラメータ フィールドに次のパラメータを入力します。 WinRM_Config_01.ps1 スクリプト。
        -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_01.ps1 -add -UserName logicmonitor\DomainUser01 -log True
    4. 選択 OK 次に選択します 申し込む.
    5. MFAデバイスに移動する コンピューター構成 > 環境設定 > コントロールパネルの設定 > スケジュールされたタスク.
    6. 右クリックする スケジュールされたタスク をクリックして NEW > 即時タスク (Windows 7 以降).

      [新しいタスク (Windows 7 以降) のプロパティ] ダイアログ ボックスが表示されます。
      1. ユーザーの名前と説明を入力します。
      2. 選択 ユーザーまたはグループを変更する。 「ユーザーまたはグループの選択」ダイアログボックスが表示されます。
      3. 管理者 セクションに 選択するオブジェクト名を入力してください テキストエリアを選択して 名前を確認する.

        「複数の名前が見つかりました」ダイアログが表示されます。
      4. 選択 管理者 フォルダ内 ( /ユーザー) 一致する名前リストから。
      5. 選択 OK をクリックして、「複数の名前が見つかりました」ダイアログ・ボックスと「ユーザーまたはグループの選択」ダイアログ・ボックスを閉じます。
      6. 現在地に最も近い 権限を持つHIGHESTラン チェックボックスをオンにします。
      7. 構成する ドロップダウン、選択 Windows 7、Windows Server 2008R2
    7. タブ、選択 新着… [新しいアクション] ダイアログ ボックスが表示されます。 次の詳細を入力して、このタスクが実行するアクションを指定します。
      1. で「プログラムの開始」を選択します。 Action 落ちる。
      2. プログラム/スクリプト フィールドで PowerShell.exe の場所を参照します。 これは、C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe にあります。
      3. 引数の追加 (オプション) フィールドに次のパスとパラメータを入力します。 WinRM_Config_02.ps1 スクリプト。
        -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_02.ps1 -add -UserName logicmonitor\DomainUser01 -log True
      4. 選択 OK.
    8. に行きます コマンドと タブを選択して 一度申請すれば再申請は不要 チェックボックスをオンにします。 
    9. 現在地に最も近い アイテムレベルのターゲティング チェックボックスをオンにしてから選択します ターゲットを絞って…。 「ターゲティングエディター」ダイアログボックスが表示されます。
    10. 選択 新しいアイテム ドロップダウンから。
       
    11. コンピュータ名 フィールドに、ドメイン コントローラー コンピューターの名前 (この例では DC1) を入力します。
    12. 選択 OK その後 申し込む.

    PowerShell でのポリシーの実行

    1. PowerShell ターミナルを開いて実行します gpupdate/force.
    2. ユーザー ポリシーが正常に更新されたら、ドメイン マシンを再起動します。

    スクリプト結果のログ記録

    -log True スクリプトの実行がログに記録されるかどうかを示します。 フラグが設定されている場合、結果がログに記録されます。 それ以外の場合はログに記録されません。 例えば:

    -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_01.ps1 -add -UserName logicmonitor\DomainUser01 -log True
    -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_01.ps1 -add -UserName logicmonitor\DomainUser01

    ログ ファイルは次の場所に作成されます。 %appdata%\LogicMonitor\Logs フォルダにコピーします。

    Debug コマンドを使用して構成を確認する

    設定が完了したら、次のコマンドを実行して確認できます。 !testwinrmconfig デバッグコマンド。 設定に応じて、メッセージが 3 層の形式で表示されます。 WinRM 監視で問題が発生した場合は、次のコマンドを実行して構成を確認します。

    !testwinrmconfig host=<Computer Name> [auth=<Auth Type>] [useSSL=true|false] [username=foo] [password=var]

    ここで、

    host  - (必須の) 監視するリモート ドメイン コンピュータの名前。 
    auth – サポートされている認証タイプ – Kerberos とデフォルト。 デフォルト値は次のとおりです Default.
    useSSL – HTTPS 経由の WinRM データ収集。 デフォルト値は次のとおりです true.
    username や password – ドメイン ユーザーの資格情報。 渡されなかった場合は、wmi.user / wmi.pass が使用されます。

    !testwinrmconfig host=EC2AMAZ-93376C4.logicmonitor.com auth=Kerberos username=LOGICMONITOR\Aditya password=Aditya@123

    次の結果が表示されます。

    検証フラグの使用

    あなたが使用することができます -validate True かどうかを確認するフラグ WinRM_Config_02.ps1 スクリプトが適用されるかどうか。 フラグは渡されたユーザーかどうかをチェックします -UserName ドメイン コントローラーを含むすべてのドメイン デバイス上の 3 つの WinRM 関連グループに追加されます。

    この手順はオプションですが、(XNUMX 回限りの即時タスクではなく) スケジュールされたタスクとしてスクリプトを実行すると、このフラグにより​​繰り返し処理が節約され、PowerShell イベントが減ります。

    注:

  • このフラグは、WinRM_Config_02.ps1 スクリプトにのみ適用されます。
  • この検証フラグをスキップしても、スクリプトの出力には影響はありません。
  • このフラグを使用する場合と使用しない場合のいくつかの組み合わせは次のとおりです。

    -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_02.ps1 -add -UserName logicmonitor\NewUser04 -validate True
    -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_02.ps1 -add -UserName logicmonitor\NewUser04
    -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_02.ps1 -add -UserName logicmonitor\NewUser04 -log True -validate True

    注: これらはサンプルのみであり、例で使用されているパス、ユーザー名、およびドメイン名を有効な詳細に置き換える必要があります。

    WinRM 構成のロールバック

    行った変更を元に戻すことができます WinRM_Config_01.ps1 や WinRM_Config_02.ps1 スクリプト。 次の例を参照してください。

    • -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_01.ps1 -remove -UserName logicmonitor\ScriptTestUser01 -log True
    • -Noninteractive -ExecutionPolicy Bypass -Noprofile -file \\10.55.21.12\To\WinRM_Config_02.ps1 -remove -UserName logicmonitor\ScriptTestUser02 -log True

    に記載されている手順に従ってください GPO ポリシーへの WinRM タスクの追加 セクションですが、スクリプトを実行します remove WinRM 構成をロールバックするフラグ。

    注: 例で指定されている IP アドレスを共有フォルダーへのパスに置き換えます。

    制限

    WinRM を導入する前は、WMI データは SbProxy 経由で収集されていました。 新しい WinRM イニシアチブでは、SPSE (PowerShell スクリプトを実行するためのスクリプト エンジン) を介して PowerShell スクリプトによって WMI データが収集されます。 このため、SPSE の負荷が増加する可能性があるため、私たちは SPSE のスケーラビリティの向上に取り組んでいます。

    トラブルシューティング

    以下を含む Groovy スクリプト モジュールの WQL フィルターの問題 wmi.queryfirst() wmi.queryAll()

    WQL フィルターは次の 2 つの形式をサポートします。

    • 形式 1 – 「select * from win32_bios where NAME LIKE '%'」 – WQL を二重引用符で囲み、句の値を一重引用符で囲みます。
    • 形式 2 – 'select * from win32_bios where NAME LIKE “%” ' - WQL を一重引用符で囲み、句の値を二重引用符で囲みます。

    WinRM(設定時) wmi.winrm.enable= true) は形式 2 のみをサポートします。WinRM を有効にしていて、カスタム データソースに形式 1 を使用している場合は、呼び出し時にエラーが表示されます。 wmi.queryFirst() / wmi.queryAll() グルーヴィーなスクリプトで。 エラーを回避するには、形式 2 を使用することをお勧めします。

    断続的な問題 – ネットワーク パスが見つかりません

    ネットワークまたはドメインの問題により、「ネットワーク パスが見つかりません」というメッセージが表示される場合があります。

    Error Message : Exception calling "Invoke" with "2" argument(s): "The network path was not found.".Exception.Messages

    ログでこのエラー メッセージが見つかった場合は、トラブルシューティングを行うために、スクリプトを新しいタスクとして再適用します。

    記事上で