エージェントレス インベントリのために Windows PC を準備する
インストール不要で NetBlade が Windows PC を読む準備: 管理者アカウント、WMI、SMB、ファイアウォール、リモート UAC、スクリプト、パイロット PC。
NetBlade は Windows 自身の管理インターフェイスを使ってネットワーク越しに Windows PC を読み取り、その PC には何もインストールしません。その代わり、各 PC は NetBlade を実行している PC からの管理者ログインを受け入れ、その通信をファイアウォールで通す必要があります。この記事では、何が必要か、ドメインとワークグループでどう違うか、NetBlade の有効化スクリプトが何を変更し、どう元に戻すか、そして残りの PC に手を付ける前に 1 台の PC ですべてを確かめる方法を正確に説明します。
始める前に
- NetBlade がインストール済みで、最初のスキャンが完了し、PC が「デバイス」に表示されていること (はじめに)。
- 読み取りたい PC の管理者アカウント。ローカル管理者であるドメイン アカウント、または各 PC のローカル管理者アカウントです。
- パイロットとして使う 1 台の PC への物理的またはリモートのアクセス。そこで何かを管理者として実行できること。
- NetBlade を実行している PC の IP アドレス。これは変わってはいけません。DHCP から取得している場合は、DHCP サーバーで予約してください (理由は手順 7 を参照)。
1. 読み取りで何が使われるかを知る
Windows PC の読み取り (デバイス カードの「詳細スキャン」、またはデバイス一覧の「詳細インベントリ」) は Windows 管理を経由し、NetBlade はファイル共有も自分に向けて開くよう求めます:
| 何を | ポート | 用途 |
|---|---|---|
| Windows 管理 (WMI) | TCP 135 と WMI サービスの動的 RPC ポート | 読み取りそのもの: ハードウェア、システム、更新プログラム、サービス、防御 |
| ファイル共有 (SMB) | TCP 445 | WMI と一緒に開放。PsExec の入り口でもあります |
| WinRM | TCP 5985 | リモート アクション専用で、読み取りには使いません |
さらに、その PC の Windows 管理者の資格情報 が必要です。特に BitLocker と TPM は管理者でなければ読み取れません。管理者でない場合、カードには管理者が必要と表示されます。
これで NetBlade が読み取るのは、名前、ドメイン、オペレーティング システムとビルド、メーカー、モデルとシリアル番号、プロセッサ、メモリ、サインイン中のユーザー、ドライブと物理ディスク、ネットワーク アダプター、モニター、プリンター、バッテリー、不具合のあるデバイスと USB、インストール済みの更新プログラム、自動起動するサービス、Windows と一緒に起動するプログラム、オプション機能、プロファイル、ローカル管理者とアカウント、開いているセッション、共有フォルダーとそこに書き込めるユーザー、インストールされているプログラム、そして防御です。防御とは、ウイルス対策、プロファイルごとのファイアウォール、BitLocker、TPM、セキュア ブート、UAC、リモート デスクトップ、SMBv1、再起動の保留です。
注: NetBlade を実行している PC は、資格情報も準備もなしに自分自身を読み取ります。
2. ドメインかワークグループか: 何が変わるか
| ドメイン | ワークグループ | |
|---|---|---|
| アカウント | PC のローカル管理者であるドメイン アカウント | 各 PC のローカル管理者アカウント |
| リモート UAC | ドメイン アカウントでは問題になりません | ローカル アカウントでは緩和が必要 (手順 5) |
| リモート アクション用の WinRM | Kerberos。この PC で追加作業は不要 | この PC の TrustedHosts に対象を登録する必要があります |
ドメインにはもう 1 つ便利な点があります。保存済みの資格情報で入れない場合、NetBlade は自分が実行されている Windows アカウントを試します。PC のローカル管理者であるドメイン アカウントで NetBlade の PC にサインインしていれば、資格情報を登録しなくてもそれらの PC を読み取れます。それでも、きれいな構成にするには専用のアカウントを登録してください (資格情報を正しく扱う を参照)。
3. アカウントを選んで登録する
- NetBlade が使うアカウントを決めます。ドメインでは、ワークステーションのローカル Administrators グループのメンバーである IT 専用アカウントが一般的です。ワークグループでは、各 PC のローカル管理者アカウントです。
- NetBlade で「資格情報」を開き、「追加…」を押します。
- 「プロトコル」を「Windows (WMI)」にし、アプリに表示される形式で「ユーザー名」を入力します。ドメイン アカウントなら
DOMAIN\user、ローカル アカウントなら.\Administratorです。 - パスワードを入力し、「適用範囲」を選び (ここではパイロット PC 向けに「1 つのサイト」または「1 台のデバイス」)、ラベルを付けます。
- 「登録」を押します。
4. パイロット PC を 1 台試す
20 台の PC を準備してからアカウントが間違っていたと気づく、ということは避けてください。1 台を選びます。
- 資格情報ページで、「試すマシン」にパイロット PC のアドレスを入力し、「テスト」を押します。「最終テスト」列に「成功」または「失敗」と表示されます。
- 「デバイス」からパイロット PC のカードを開き、「詳細スキャン」を押します。
- デバイス名のすぐ下にある読み取り状態を見ます。「… に … で読み取り」と表示されれば成功です。「未読み取り」または「読み取り失敗」の場合は、理由と対処法を示すパネルが開きます。
うまくいったら手順 7 に進みます。パネルにファイアウォールが読み取りをブロックしていると表示された場合 (例:「Windows PC ですが、ファイアウォールが読み取りをブロックしています: ポート … でしか応答せず…」)、手順 5 に進みます。
5. 有効化スクリプトで PC を開く
Windows PC を読み取れない場合、そのカードには、NetBlade に必要なものだけを、NetBlade を実行している PC に対してだけ開くスクリプトが用意されます。
- パイロット PC のカードで、読み取り状態 (「未読み取り」または「読み取り失敗」) をクリックします。
- 「有効化スクリプトをダウンロード」を押して、ファイルを保存します。
- 同じパネルで、「変更を元に戻すスクリプト」も今のうちに保存し、もう一方と一緒に保管します。
- 有効化スクリプトをパイロット PC にコピーし、ダブルクリックします。これは
.cmdファイルで、自分から管理者権限を求め、何をするかを 1 行ずつ表示します。 - NetBlade に戻り、「今すぐ再読み取り」を押します。
警告: 有効化と元に戻すボタンがカードに表示されるのは、PC の読み取りがまだ成功していない間だけです。読み取りが成功すると消えるため、元に戻すスクリプトは有効化スクリプトと同時に保存してください。
スクリプトがその PC で変更する内容:
- NetBlade の PC の IPv4 アドレスからのみ許可するファイアウォール規則を追加します。名前は
NetBlade - WMI (135)、NetBlade - WMI (RPC)、NetBlade - Services (RPC)、NetBlade - SMB (445)、NetBlade - WinRM (5985)です。Services の規則はリモートのサービス管理を開き、PsExec が待たされずにすぐ起動するようにします。 - WMI サービスを自動起動に設定し、開始します。
- リモート アクションのために、
Enable-PSRemoting -Force -SkipNetworkProfileCheckで WinRM をオンにします。 - PC がドメインに参加していない場合に限り、
LocalAccountTokenFilterPolicyを 1 に設定します (理由は手順 6 で説明します)。
2 回実行しても害はありません。最初に自分の規則を削除するため、規則は 1 セットだけになります。
6. リモート UAC と LocalAccountTokenFilterPolicy を理解する
既定では、ローカル 管理者がネットワーク越しに PC に接続すると、Windows はそのログインから管理者権限を取り除きます。これがユーザー アカウント制御 (UAC) のリモート制限です。結果はわかりにくいものになります。ポートは開いていて、パスワードも正しいのに、読み取りは「WMI: アクセスが拒否されました (0x80070005)」で拒否されるのです。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System の下でレジストリ値 LocalAccountTokenFilterPolicy を 1 に設定すると、この制限が解除され、ローカル管理者がリモートでも権限を保持できます。ドメイン アカウントはこのようにフィルターされないため、有効化スクリプトはドメイン外の PC にだけこれを設定します。
代わりに PC を手動で準備する場合、アプリ内のリモート アクション ガイドは次のコマンドを示しています。その PC で PowerShell を管理者として開いて実行します:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name LocalAccountTokenFilterPolicy -Value 1 -PropertyType DWord -Force
警告: これにより、その PC の保護が少し弱まります。どのローカル管理者アカウントもネットワーク越しに使えるようになるからです。必要な場所でだけ使い、各 PC に強力で固有のローカル管理者パスワードを設定してください。元に戻すスクリプトでこの設定は削除されます。リモート アクション「UAC のリモート制限を元に戻す」でも同様です。
7. ほかの PC に展開する
パイロットが正しく読み取れたら、ほかの PC でも繰り返します。
- PC ごとにスクリプトで。 各 PC のカードから有効化スクリプトをダウンロードし、その PC で実行します。スクリプトは NetBlade の PC の現在の IP アドレスに合わせて作られます。そのアドレスが変わってはいけない理由はここにあります。変わるとファイアウォール規則が一致しなくなり、新しいスクリプトを実行するまで読み取りが止まります。
- ドメインではグループ ポリシーで。 NetBlade はポリシーを生成しませんが、同じ結果を一元的に得られます。WinRM については、アプリ自体が次の場所を示しています: コンピューターの構成 › 管理用テンプレート › Windows コンポーネント › Windows リモート管理 (WinRM) › WinRM サービス › 「WinRM を介したリモート サーバー管理を許可する」。WMI と SMB については、TCP 135、WMI サービスの RPC ポート、TCP 445 に対する受信のファイアウォール規則を、NetBlade の PC のアドレスに限定して作るのが一般的な方法です。これは一般的な Windows 管理の作業なので、まず 1 台の PC で試してください。
- 資格情報の範囲を広げる。 パイロットがうまくいったら、「資格情報」を開き、その資格情報の「適用範囲…」を押して「1 つのサイト」または「すべて」に広げます。
そのあと全台を読み取ります。「デバイス」の「詳細インベントリ」、または「サイト」の「すべてのデバイスを読み取る」です。サイトには、読み取れた台数と、適用される資格情報がなかった台数が表示されます。
8. リモート アクションも準備する (任意)
読み取りには WinRM を使いませんが、リモート アクションは使います。使う予定があるなら、カードで「リモート アクション」を開き、「リモート マシンに必要なもの」を展開します。アプリは、よく不足している順に次のものを挙げています:
- そのマシンの管理者アカウントが、資格情報に保存されていること。
- リモート マシンで WinRM がオンになっていること:
Enable-PSRemoting -Force -SkipNetworkProfileCheck。 - パブリックではなく、プライベートまたはドメインのネットワークであること。リモート マシンで管理者として実行します:
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
- ドメイン外では、この PC からそのマシンを信頼すること (例の代わりにそのマシンの IP を入れます):
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.1.50' -Concatenate -Force
- ドメイン外でローカル アカウントを使う場合は、手順 6 の
LocalAccountTokenFilterPolicyキー。 - WinRM がない場合の PsExec: リモート マシンでポート 445 が開いていて、ADMIN$ 共有が有効であること。445 を開くには:
Enable-NetFirewallRule -Name 'FPS-SMB-In-TCP'
詳しくは リモート アクションを安全に を参照してください。
9. すべてを元に戻す方法
スクリプトで準備した PC では、保存しておいた「変更を元に戻すスクリプト」を実行します。NetBlade のファイアウォール規則と、ローカル アカウントのリモート管理アクセスが削除されます。WinRM はオンのまま残ります。不要なら、PowerShell を管理者として開いてオフにします:
Disable-PSRemoting
元に戻すスクリプトを保管していなかった場合でも、動作している NetBlade からリモート アクションとして同じ結果を得られます。「UAC のリモート制限を元に戻す」、手順 5 に挙げた NetBlade - … の各規則に対する「ファイアウォール規則を削除」、そして「WinRM を無効化」です。これらは今まさに取り除こうとしているアクセスを通って届くため、「UAC のリモート制限を元に戻す」は最後にしてください。元に戻すスクリプトを保管しておくほうが簡単です。
うまくいったか確認する
- カードの読み取り状態が「… に … で読み取り」となり、「ハードウェア」「ソフトウェア」「システム」「セキュリティ」の各タブに情報が入っています。
- 「セキュリティ」タブに、「管理者権限が必要」ではなく BitLocker と TPM の状態が表示されています。
- ダッシュボードで「読み取り済みのマシン」が増え、カバレッジの行に詳細に読み取ったデバイスの数が表示されています。
うまくいかないときは
- 「WMI: アクセスが拒否されました (0x80070005)」。 アカウントに権限がありません。ローカル アカウントまたは Microsoft アカウントの場合は、
LocalAccountTokenFilterPolicyを有効にする必要があります (有効化スクリプトが行います)。ドメインでは、そのアカウントが PC のローカル Administrators グループに入っていることを確認してください。 - 「WMI: ログオンに失敗しました (0x8007052E)」。 ユーザー名またはパスワードが正しくありません。形式を確認してください:
DOMAIN\userまたは.\Administrator。 - 「WMI: アクセスが拒否されました (0x80041003)」。 アカウントに WMI 名前空間の権限がありません。管理者アカウントを使ってください。
- 「WMI: 要求されたログオンの種類が許可されていません (0x80070569)」。 その PC のローカル セキュリティ ポリシーが、そのログオンの種類を拒否しています。その PC のローカル セキュリティ ポリシーを確認してください。
- 「WMI から応答がありません (ファイアウォール、または Windows ではありません)」。 ファイアウォールが WMI をブロックしているか、デバイスが Windows ではありません。有効化スクリプトを実行してください。
- 「このデバイスに適用される資格情報がありません」。 そのデバイスを対象とする Windows の資格情報がありません。デバイス、サイト、またはすべてを対象に 1 つ登録してください。
- 「保存されたパスワードをこのアカウントでは読み取れません」。 その資格情報は、この PC の別の Windows ユーザーが登録したものです。NetBlade を実行するユーザーでサインインした状態で、もう一度登録してください。
- うまくいっていたのに、すべての PC で一斉に止まった。 NetBlade の PC の IP アドレスが変わり、規則が一致しなくなった可能性があります。アドレスを予約し、新しいスクリプトを実行してください。
- リモート アクションに 30 秒以上かかった。 その PC のファイアウォールがリモートのサービス管理をブロックしていて、PsExec が代替手段に切り替える前に待っています。有効化スクリプトをもう一度ダウンロードして実行してください。現在のバージョンはそれも開きます。もちろん、この PC に対してだけです。
次へ
PC を読み取れるようになったら、アカウントをきちんと整えましょう: 資格情報を正しく扱う。続いて SNMP でネットワーク機器を読み取ります。