エンタープライズ環境で、Windowsは切っても切り離せないくらいよく使われている
ADやWindowsの管理者になったが、運用に不安がある情シス向けの記事
※本記事はMicrosoft公式ドキュメントベースの記事です。
AD/Windowsの運用について
AD/Windowsの管理コマンドについて
色々なコマンドを覚えておくと運用や不具合対応に役立つ
ネットワークのコマンドは下記を参照
ipconfig
ping
tracert
telnet
netstat
nslookup
ユーザのステータス確認
ロックアウトの確認などができる
net user [<UserName> {<Password> | *} [<Options>]] [/domain]
net user [<UserName> {<Password> | *} /add [<Options>] [/domain]]
net user [<UserName> [/delete] [/domain]]
よく使う構文
net user
net user <ローカルユーザ名>
net user <ドメインユーザ名> /domain
下記のような結果が返ってくる
>net user <ユーザ名>
ユーザー名 <ユーザ名>
フル ネーム
コメント
ユーザーのコメント
国/地域番号 000 (システム既定)
アカウント有効 ロック
アカウントの期限 無期限
最終パスワード変更日時 2020/03/05 19:29:35
パスワード有効期間 無期限
パスワード次回変更可能日時 2020/03/05 19:29:35
パスワードあり No
ユーザーによるパスワード変更可能 Yes
ログオン可能なワークステーション すべて
ログオン スクリプト
ユーザー プロファイル
ホーム ディレクトリ
最終ログオン日時 2023/09/10 11:32:40
ログオン可能時間 すべて
所属しているローカル グループ *Administrators
*Performance Log Users
所属しているグローバル グループ *なし
コマンドは正常に終了しました。
環境変数の確認
set [<Variable>=[<String>]]
set [/p] <Variable>=[<PromptString>]
set /a <Variable>=<Expression>
よく使う構文
set
環境変数の一覧を取得できる
>set
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\PowerShell\6\;C:\Users\<ユーザ名>\AppData\Local\Microsoft\WindowsApps;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=8e0a
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
QT_DEVICE_PIXEL_RATIO=auto
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\Users\ユーザ名~1\AppData\Local\Temp
TMP=C:\Users\ユーザ名~1\AppData\Local\Temp
USERDOMAIN=DESKTOP-ABCDEFG
USERDOMAIN_ROAMINGPROFILE=DESKTOP-ABCDEFG
USERNAME=<ユーザ名>
USERPROFILE=C:\Users\<ユーザ名>
特定の環境変数はechoで取得するのが簡単
%で囲む (大文字小文字を区別しない)
>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\PowerShell\6\;C:\Users\<ユーザ名>\AppData\Local\Microsoft\WindowsApps;
サービスのステータス確認
サービスの起動状況が確認できる
sc [<ServerName>] query [<ServiceName>] [type= {driver | service | all}] [type= {own | share | interact | kernel | filesys | rec | adapt}] [state= {active | inactive | all}] [bufsize= <BufferSize>] [ri= <ResumeIndex>] [group= <GroupName>]
よく使う構文
sc query
sc query <サービス名>
sc query | findstr <検索文字列>
サービス名の検索 (DISPLAY_NAMEは表示名)
>sc query | findstr Windows
DISPLAY_NAME: Windows Audio Endpoint Builder
DISPLAY_NAME: Windows Audio
DISPLAY_NAME: Windows Event Log
DISPLAY_NAME: Windows Font Cache Service
DISPLAY_NAME: Windows ライセンス マネージャー サービス
DISPLAY_NAME: Windows Defender Firewall
DISPLAY_NAME: Windows セキュリティ サービス
DISPLAY_NAME: Windows Image Acquisition (WIA)
DISPLAY_NAME: Windows Biometric Service
DISPLAY_NAME: Windows Connection Manager
DISPLAY_NAME: Windows Connect Now - Config Registrar
DISPLAY_NAME: Windows Management Instrumentation
DISPLAY_NAME: Windows プッシュ通知システム サービス
DISPLAY_NAME: Windows Search
DISPLAY_NAME: Windows Update
DISPLAY_NAME: Windows Push Notifications User Service_14df01
サービス名 eventlogのステータス確認
>sc query eventlog
SERVICE_NAME: eventlog
TYPE : 30 WIN32
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
タスクリストの取得
tasklist [/s <Computer> [/u [<Domain>\]<UserName> [/p <Password>]]] [{/m <Module> | /svc | /v}] [/fo {table | list | csv}] [/nh] [/fi <Filter> [/fi <Filter> [ ... ]]]
よく使う構文
tasklist
tasklist /SVC
タスクの一覧を取得 /SVCをつけるとサービス名も取得可能
>tasklist
イメージ名 PID セッション名 セッション# メモリ使用量
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 96 K
Secure System 72 Services 0 23,852 K
Registry 132 Services 0 25,752 K
smss.exe 564 Services 0 948 K
csrss.exe 888 Services 0 2,936 K
wininit.exe 976 Services 0 3,928 K
csrss.exe 1012 Console 1 4,648 K
services.exe 632 Services 0 10,412 K
LsaIso.exe 1028 Services 0 3,092 K
lsass.exe 1048 Services 0 15,836 K
winlogon.exe 1056 Console 1 6,648 K
svchost.exe 1216 Services 0 47,008 K
RDPログオンしているユーザの確認
query session [<SessionName> | <UserName> | <SessionID>] [/server:<ServerName>] [/mode] [/flow] [/connect] [/counter]
よく使う構文
query session /server:<IPアドレス>
リモートサーバのログオンユーザの確認 (net userで追加確認)
>query session /server:<IPアドレス>
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console Administrator1 0 active wdcon
>rdp-tcp#1 User1 1 active wdtshare
rdp-tcp 2 listen wdtshare
4 idle
5 idle
不具合対応/Windows Event Viewer
不具合が発生した際にはログを分析することで原因を切り分けることができます。
ログにおいて重要なものは発生タイミングなどの共通点を見つけることで不具合の原因が判明することがあります。
■起動方法
Win+r > eventvwr > Enter で起動できる
■ログの種類
・セキュリティ
ログオンなどセキュリティに関するログ
・System
電源の起動など様々なOSの主要機能のログ
・Application
System・セキュリティ以外のことは大体ここで見る
起動・シャットダウンタイミングを調べたい場合
【Windows】起動・シャットダウンなどで発生するイベント
上記のサイトを参考にしてください。
下記のログが個人的におすすめ
Kernel-Boot
Kernel-Power
Kernel-General
アカウントのログオンタイミングを調べたい場合
ログオンイベント | 説明 |
---|---|
4624 | ユーザーがコンピューターに正常にログオンしました。 |
4625 | ログオンエラー。 不明なユーザー名またはパスワードが正しくない既知のユーザー名でログオン試行が行われました。 |
4634 | ユーザーのログオフ プロセスが完了しました。 |
4647 | ユーザーがログオフ プロセスを開始しました。 |
4648 | ユーザーは、別のユーザーとして既にログオンしているときに、明示的な資格情報を使用してコンピューターに正常にログオンしました。 |
4779 | ユーザーがログオフせずにターミナル サーバー セッションを切断しました。 |
セキュリティ侵害の兆候を調べたい場合
セキュリティ侵害の兆候ログがたくさん記載されている
そもそもイベントログとは
イベントログがそもそもわからない人は上記サイトを参考
Windows Updateについて
オフラインアップデート
上記サイトから累積更新プログラムとセキュリティ更新プログラムなどが取得できる。
オフラインアップデート手順
1.サービススタック更新プログラム(Windows Update自体を更新)
2.累積的な更新プログラム(OSなどの更新プログラム)
3.適宜セキュリティパッチ
サービススタック更新プログラムを先に当てないと何度更新やっても失敗する場合がある
サービス スタック更新プログラムと累積更新プログラムの違いは何ですか?
Windows クライアントと Windows Server の両方で累積更新プログラムの方式が使用されており、この方式では、Windows の品質とセキュリティを向上させる多くの修正プログラムが 1 つの更新プログラムにまとめられます。 それぞれの累積更新プログラムには、それ以前のすべての更新プログラムでの変更と修正が含まれます。
サービス スタック更新プログラムは、更新プロセスの信頼性を向上させ、毎月のセキュリティ更新プログラムの最新リリースと機能更新プログラムをインストールするときに発生する可能性のある問題を軽減します。 最新のサービス スタック更新プログラムをインストールしない場合、最新の Microsoft セキュリティ修正プログラムによるデバイスの更新が実行できなくなる恐れがあります。
KB番号で検索すると上記のようなサイトが出てくる
事前に確認しておくべき(前提条件、既知の不具合など)
※Microsoft Updateカタログでもリンクが付与されている
その他
Windows OS 更新リリースタイミング
レジストリ値について
レジストリ値とはWindowsの設定を保持するデータベース
レジストリ以外にはiniファイルなどにより設定を保持することができる
■レジストリエディタの起動
Win+R > regedit > Enter
■コマンドによる操作
reg query #参照
reg add #追加
reg delete #削除
...
レジストリの概要
・HKEY_CURRENT_USERは現在のユーザの設定
・HKEY_LOCAL_MACHINEはコンピュータ全体の設定
・HKEY_CURRENT_USERはHKCUと略することができる
・HKEY_LOCAL_MACHINEはHKLMと略することができる
レジストリハイブと実体
レジストリ ハイブとそのファイルの実態
レジストリ ハイブ | サポート ファイル |
---|---|
HKEY_CURRENT_CONFIG | System、System.alt、System.log、System.sav |
HKEY_CURRENT_USER | Ntuser.dat、Ntuser.dat.log |
HKEY_LOCAL_MACHINE\SAM | Sam、Sam.log、Sam.sav |
HKEY_LOCAL_MACHINE\Security | Security、Security.log、Security.sav |
HKEY_LOCAL_MACHINE\Software | Software、Software.log、Software.sav |
HKEY_LOCAL_MACHINE\System | System、System.alt、System.log、System.sav |
HKEY_USERS\.DEFAULT | Default、Default.log、Default.sav |
設定をコマンドで確認したい場合
reg query でダークモードの確認
0: ダークモード
1: ライトモード
>reg query HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize
AppsUseLightTheme REG_DWORD 0x0
Windowsのサービスについて
通信要件
主要なサービス
最低限知っておいたほうがいいサービス
Windows Time
NTP(Network Time Protocol)による同期を行うサービス
デフォルトは time.windows.com と同期をしている
Windows Update
Windowsのアップデートを定期的に行うサービス
Windows Updateを管理するためにWSUSサーバを立てることがある
Microsoft Defender Antivirus Service
旧称 Windows Defender
マルウェア対策用のサービス
RDS(Remote Desktop Service)
Remote Desktop接続を行うためのサービス
リモートによるサーバの管理などに使われる
WMI(Windows Management Instrument)
Windowsの様々な情報を取得できるサービス
監視やスキャンなどに使われる
AD グループポリシーについて
グループポリシーの適用
適用タイミング
グループ ポリシーは、ドメイン メンバー コンピューターを再起動したときに、またはユーザーがドメイン メンバー コンピューターにログオンしたときに自動的に更新します。 さらに、グループ ポリシーは定期的に更新します。 既定では、この定期的な更新は最大 30 分のランダム オフセットでは 90 分ごとに実行します。
・コンピュータに割り当てたポリシー →再起動時
・ユーザに割り当てたポリシー →ログオン時
・その他 定期的に更新される(設定により変更ができる)
手動での適用方法
Administrators、またはそれと同等のメンバーシップが、この手順を実行するために最低限必要なメンバーシップです。
- ネットワーク ポリシー サーバー (NPS) がインストールされているコンピューターで、タスクバーのアイコンを使用して PowerShell を開きます。
- PowerShell プロンプトで、「gpupdate」と入力し、Enter を押します。
よく下記を使う
gpupdate /force
ポリシー適用確認
個人的に一番使いやすいコマンド
gpresult /h ファイル名.html
start ファイル名.html
/hがHTML形式で適用状況を出力してくれる
一応、gpresultのページはこちら
Administrator権限で実行しないとコンピュータのポリシーは見れない
Administrator権限でログインしたことがないとエラーが出たりする? RSoPがどうとか
グループポリシーの作成について
実装したいGPOを検索し作成
下記のサイトがGPOの一覧を見れた
admx.help
※使い勝手がいいサイトだったが、停止中のため代替サイトを捜索中
AD GPO やりたいこと で検索する
→出てきたらおそらく実装できる
作成方法はありふれているので省略
GPOの管理用テンプレートなどで実装できない場合
基本的に管理が面倒だが下記による対応が考えられる
1.レジストリ値による実装
2.PowerShell・Batによる実装
その他
・アプリケーションのインストールは.msi形式であればデフォルト機能でインストール可能
・コンピュータのポリシーの実行権限は NT_AUTHORITY\SYSTEM
・ユーザのポリシーの実行権限は ログインユーザ
・カスタムグループポリシー(デフォルトのWindowsアプリ以外)のものは事前にadml/admxファイルを所定の位置に配置(後述)
・GPOで設定できるポリシーはレジストリ値でもできる(非推奨)
→大体のポリシーは裏でレジストリ値が書き換えられているだけ
グループポリシーのAD追加について
新規グループポリシールールをインポートする方法
カスタムグループポリシーや新しく作成されたグループポリシーをADに追加する方法
MS公式 GitHub管理用テンプレートの更新
“PolicyDefinitions” フォルダー配下にadmx/admlファイルを配置
Windowsの認証について
Windowsは様々な認証がある
Windowsの認証
対話型ログオンのシナリオ概要図
色々な分岐をするため複雑、、、
Windows ログオンのシナリオ
Kerberos認証
ADを運用すると必ず聞く
・ADによる認証に使われる(SSOの実装)
ADへユーザの認証→チケット発行用チケット(TGT)が発行される
アクセスする際にTGTを渡すことでアクセス用チケットを発行してもらう
権限がない場合は、認証ポップアップが表示される
・アクセスさきのSPN(ホスト名)がわからないとNTLMへダウングレード
NTLM認証
・チャレンジレスポンス型
・レガシーアプリケーションの認証に使用
・ドメイン コントローラー以外でのログオン認証にも使用
Azure ADについて
後日追加予定
勉強方法
業務経験、書籍かMicrosoft公式リファレンスで学ぶ
Microsoft公式のGitHubなどもある
ひとめでわかるシリーズ
ひとめでわかるWindows Server Active Directory 2019
ページ数は多いが画像も多く読みやすい
Hyper-Vなどもある
基本的な内容
Windows Serverを学ぶならまずはこれ
Microsoft公式 インサイド Windows
Microsoft公式が発行している本
これより詳しい本は恐らくない
辞書のような分厚さ
知りたいポイントをピンポイントで調べるのに向いている
Kindle版推奨
PowerShell実践ガイドブック
PowerShell 実践ガイドブック
PowerShellは使えたほうがいい
網羅的にPowerShellが載っている
内容重め
Windows10 上級リファレンス
Windows10 上級リファレンス
Windows10のことを詳しく書いてある
Windowsを詳しく知りたい
細かなカスタマイズをしたい人向け