naokib のすべての投稿

Windows Eventlog ログオンの種類 と ログオンのプロセス

ログオンの種類

2  対話型 (対話型ログオン。)
3 ネットワーク (ネットワーク経由でシステムにアクセスしました。)
4 バッチ (バッチ ジョブとして起動されました。)
5 サービス (サービス コントローラによって起動された Windows サービス。)
6 プロキシ (プロキシ ログオン。Windows NT または Windows 2000 では使用されません。)
7 ロックの解除 (ワークステーションのロックを解除しました。)
8 ネットワーク クリアテキスト (クリアテキストの資格情報を使用したネットワーク ログオン。)
9 新しい資格情報 (/netonly オプションが使用される場合に RunAs によって使用されます。)
10 リモートデスクトップ
11 キャッシュログオン

 

ログオンのプロセス

Advapi LogonUser への呼び出しによって起動されます。LogonUser が LsaLogonUser を呼び出し、LsaLogonUser の引数の 1 つである OriginName がログオンの発生場所を識別します。
User32 WinLogon を使用する標準の Windows 2000 ログオン。
SCMgr サービス コントロール マネージャがサービスを開始しました。
KsecDD NET USE コマンドを使用した場合など、SMB サーバーへのネットワーク接続です。
Kerberos Kerberos セキュリティ サポート プロバイダ(SSP)。
NtlmSsp NtlmSsp
Seclogon セカンダリ ログオン、つまり RunAs コマンド。
IIS IIS がログオンを実行したことを示し、IUSR_machinename アカウントでログオンするか、ダイジェスト認証または基本認証を使用したときに生成されます。

参照:https://support.microsoft.com/ja-jp/help/326985

PowerShell で属性を検索などの場合 1

Active Directory  も Powershell が充実したので、ユーザーデーターベースとして、しっかり使える環境になってきた。昔は、そのチープなインターフェースのせいで、「人事情報の更新が大変だからADにユーザー情報を入れない方がよい」などとまことしやかに言い訳していたが、もはや世迷言といってもよい。

ということで、CSVに登録されているユーザー一覧を吸い込んで、携帯電話番号の一覧を表示させてみた。

$strData = “C:\Users\administrator\desktop\kakunin2.txt” #CSVファイルの場所
#
$csvDatas = Import-Csv $strData

ForEach ($csvData in $csvDatas)
{
get-ADUser -filter “samaccountname -eq ‘$($csvData.samaccountname)’” -properties * |select samaccountname,enabled,mobile
}

CSVには、1行目にsamaaccountname と記述し、2行目以降に実際のsamaaccountnameを書いておく。UTF8が吉。

select を ft とすれば、リストとしては見やすい。

x509certificate2 で証明書をインポートする

無線LANなどの802.11 認証に使うための証明書は、デバイスIDなどのコンピュータを証明するための証明書を利用する。

この場合、インポート先のストアは、Windows の証明書ストアの[ コンピュータ ]-[ 個人 ] である。

Windows には証明書インポートウィザードがあるので、こちらを使えばよいのだが、管理者でなければ [ ユーザー ] アカウントにしかインポートができないし、ユーザーに証明書スナップインを立ち上げさせて、インポートさせることは難しい。

そこで.Net (VB/C#) でp12形式の証明書をインポートする際のポイントを紹介する。

C#

X509Certificate2 computerCert = new X509Certificate2(P12File, Password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

X509Store myStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);

myStore.Open(OpenFlags.ReadWrite)

myStore.Add(computerCert)

myStore.Close();

 

VB

Dim computerCert As New X509Certificate2(P12File, Password, X509KeyStorageFlags.MachineKeySet Or  X509KeyStorageFlags.PersistKeySet)

Dim myStore As New X509Store(StoreName.My, StoreLocation.LocalMachine)

myStore.Open(OpenFlags.ReadWrite)

myStore.Add(computerCert)

myStore.Close();

 

秘密鍵をインポートするには、X509KeyStorageFlags.MachineKeySet だけではダメで、
X509KeyStorageFlags.PersistKeySet を記述する必要がある。
X509KeyStorageFlags.PersistKeySet がないと、秘密鍵はテンポラリーでインポートされるが、その後削除されてしまい、実際には機能しないので注意が必要だ。

 

p12形式でインポートの際にPINが設定されている場合は、①ユーザーに入力させセキュアストリングスで受けるか、②外部からPINを書いたファイルを読み込むか、③ハードコードするかということになる。

②と③はいずれもディスアセンブルされると、p12のPINが漏洩する可能性がある。インポート後は消去するなど、P12ファイルの管理が重要だ。

有効な証明書を表示する

‘ コンピューター名の取得
Dim ComputerName As String = System.Environment.MachineName

‘現時点で有効な証明書に絞り込む
Dim value As X509Certificate2
values = values.Find(X509FindType.FindByTimeValid, Now, True)

‘発行者情報がABCである証明書を絞り込み
values = values.Find(X509FindType.FindByIssuerName, “ABC”, True)

‘識別名 (DN) がコンピュータ名である証明書を絞り込み
values = values.Find(X509FindType.FindBySubjectDistinguishedName, ComputerName, True)

Console.WriteLine(“証明書の発行局  :” & value.Issuer)
Console.WriteLine(“証明書の有効期限 :” & value.NotAfter)
Console.WriteLine(“サブジェクト識別名:” & value.Subject)
Console.WriteLine(value.NotBefore)