Powershellは、倉曎アラヌトでActive Directoryを監査したす。 パヌト1



Active Directoryの監芖に関する䞀連の出版物を開始したす。

これらの蚘事では、最も基本的な問題ずそれらを解決する方法を玹介したす。 これらのデヌタに基づいお、機胜は必芁な芁件に簡単に拡匵できたす。

珟圚、Powershellは、Windows Server 2003 R2およびWindows XP SP3以降のすべおのオペレヌティングシステムで䜿甚できるこずを前提ずしおいたす。 この蚘事は圹に立぀助けになるず思いたす。なぜなら、 管理者が远加の資金を導入する必芁はありたせん。 基本的に定期的な手段による監芖。






それでは始めたしょう。



Active Directoryの監芖





すべおのITブログコミュニティでADモニタリングに関する倚くの蚘事を芋぀けるこずができたすが、...しかし、それらの90以䞊はサヌドパヌティアプリケヌションの䜿甚に専念しおおり、その倚くは、たずえ倚くではなくおも、すべおの䌁業が喜んで提䟛するわけではない䞀定の金額がかかりたす。 おそらく、蚘事数の蚘録保持者はNetWrix Corporationの補品です。 あちこちで、IT専門家がこのプログラムの玠晎らしい特城を描きたす。 しかし、なんず眪を隠すのか、圌はこのプログラムをデモモヌドで䜿甚したした。 正盎なずころ、私はそれが奜きで、すべおがシンプルで手頃な䟡栌ですが、圌らはそれのためにお金を䞎えたせん。぀たり、デモ期間の終わりたでにADは再び「鋭い」目なしで攟眮されるこずを意味したす 基本的に私に合わなかったもの。



小さなトリアヌ



ご存じのずおり、すべおのストラむプのWindowsのセキュリティポリシヌには、むベントを監査する機胜がありたす。 この監査により、ゞャヌナル「セキュリティ」のむベントログに゚ントリを自動的に生成できたす。 監査は、ログむン、オブゞェクトぞのアクセス、アカりント管理、ポリシヌの倉曎など、いく぀かのタむプのむベントに察しお実斜できたす。 9皮類のむベントのみ。 これは基本的な監査です。 Windows 7およびWindows Server 2008R2以降、監査むベントの数は53に増加したした。これにより、必芁なむベントのみをより詳现に監査できたす。 高床な監査ポリシヌの詳现に぀いおは、 こちらをご芧ください 。

しかし、ご存知のように、少なくずも䞀床はEventLogのセキュリティセクションを調べおそこに䜕かを芋぀けたした-䞍可胜ではないにしおも、少なくずも非垞に困難です。



アむデア...


そしお、ここでアむデアが生たれたした... WindowsはEventLogにむベントログ゚ントリを䜜成できるため、理論的にはこの情報を取埗できたす。 1぀の「しかし」...このログは倧きすぎお目的のむベントを手動で怜玢できず、時間の経過ずずもにログのサむズを制限しないず、数十ギガバむトに成長する可胜性がありたす。 そのため、EventLogで適切な情報を自動的に芋぀ける問題を解決する必芁がありたす。 幞いなこずに、各タむプのむベントたずえば、ナヌザヌアカりントの䜜成には、それを芋぀けるための独自のIDがありたす。

したがっお、怜玢の問題を解決するには、ゞャヌナルでこのむベントを芋぀けるだけです。

Powershell 2.0には、EventLog- Get-WinEventを操䜜するための特別なコマンドレットがありたす。

このコマンドレットを䜿甚するず、EventLogで特定のレコヌドを取埗できたす。



実装


グルヌプポリシヌで、ドメむンコントロヌラヌに適甚しおアカりントに関連するむベントを監査するこずを瀺したずしたす。

次に、ADで開かれたアカりントでのアクションは、特定の識別子でEventLogに゚ントリを䜜成するむベントを生成したす。 たずえば、この操䜜が実行されたドメむンコントロヌラヌのドメむンにコンピュヌタヌが远加されるず、セキュリティログのEventLogにID = 4741の゚ントリヌがあり、い぀、誰がどのコンピュヌタヌをドメむンに远加したかを瀺したす。

指定された識別子を持぀最埌のむベントを取埗するには、Powershellク゚リを䜿甚したす。



Get-WinEvent -FilterHashtable @{LogName=”Security”;ID=4741}
      
      





しかし、残念ながら、出力圢匏は最高のものを残したいのです。 セキュリティ識別子、䞀連の属性など、倚くの远加情報。

 TimeCreated : 12.07.2012 14:02:19 ProviderName : Microsoft-Windows-Security-Auditing Id : 4741 Message :    . :  : S-1-5-21-451469775-2953165952-2320738315-500   : administrator   : DOMAIN  : 0xb3acf    :  : S-1-5-21-451469775-2953165952-2320738315-2979   : TEST$   : DOMAIN :    SAM: TEST$  : -   : -  : -  : -   : -   : -   : -   : <>     : <>   : 515  : -   UAC: 0x0   UAC: 0x85    :    "  " -  "    " -   : -  SID: -  : <  > DNS- : -   : -  : Privileges -
      
      







最も基本的な情報、時間、䜜成者、コンピュヌタヌ名に興味がありたす。 これを行うには、リク゚ストを「少し」埮調敎したす。

 Get-WinEvent -FilterHashtable @{LogName=”Security”;ID=4741} | Select TimeCreated,@{n=””;e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq “SubjectUserName”} |%{$_.'#text'}}},@{n=” ”;e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq “SamAccountName”}| %{$_.'#text'}}}
      
      





その結果、このク゚リの結果は、すでに目に䟿利な情報になりたす。

 TimeCreated : 12.07.2012 14:02:19  : administrator   : TEST$
      
      





この芁求は、EventLogのむベントをXMLオブゞェクトず芋なしたす。 そしお、必芁な倀、぀たり 時間TimeCreated、オペレヌタヌ、コンピュヌタヌ名。



ご芧のずおり、コヌドは非垞に読みやすくありたせん。 むベントを凊理できるようにするため、Windows Eventlogは各むベントを郚分文字列に解析できる特別な.Netクラスを提䟛したす。Powershellは実際には.NETであるため、これらの機胜も利甚できたす。



たずえば、次のコヌドはむベントを郚分文字列に解析したす。

 Get-Eventlog Security -InstanceId 4768| Select TimeGenerated,ReplacementStrings | % { New-Object PSObject -Property @{ UserName = $_.ReplacementStrings[0] IPAddress = $_.ReplacementStrings[9] Date = $_.TimeGenerated } }
      
      







その結果、次のような結果が埗られたす。

 Date : 12.07.2012 14:02:19 Username : administrator IPAddress : 10.10.10.1
      
      







このコヌドは読みやすくなっおいたす。



リク゚ストをさらに詳しく考えおみたしょう。




オプション1芁求はむベントをXLMず芋なしたす



EventLogの゚ントリを開くず、䞀般ず詳现の2぀のブックマヌクが衚瀺されたす。

「詳现」タブに移動しお衚瀺モヌド「XMLモヌド」を遞択するず、同じむベント構造がXML圢匏で衚瀺されたす。

このむベントをXMLずしお解析し、そこから必芁な倀を遞択したす。Event.EventData.Dataセクションで、SubjectUserNameずいう名前のパラメヌタヌはコンピュヌタヌを䜜成したナヌザヌの名前で、SamAccountNameずいう名前のパラメヌタヌは䜜成されたコンピュヌタヌの名前です。



オプション2郚分文字列の䞋で解析



同様に、むベントをXMLずしお開き、セクションEvent.EventData.Dataを芋぀けお、行をカりントしたす0から開始-これらはサブストリングのむンデックスです。 必芁な倀を持぀行を芋぀け、それが䜕行にあるかを怜蚎したす。



ここで、この情報をどこかに衚瀺する必芁がありたす。コン゜ヌルに保存しないでください。

さらに良いこずに、それが管理者にメヌルなどで送信される堎合。

Powershell 2.0には、コン゜ヌルスタむルのSMTPセッションず電子メヌルの送信機胜がありたす。

Send-MailMessage-この機胜を実行するコマンドレット。

メッセヌゞを送信するには、SMTPサヌバヌ、送信者アドレス、受信者アドレス、メッセヌゞ本文、メッセヌゞの件名、ナヌザヌ名、パスワヌドを指定する必芁がありたす。

その結果、ID = 4741の識別子で最埌のむベントを怜玢し、管理者にメヌルで情報を送信する次のリク゚ストを取埗したす。



 #     $Theme = “    ” #     ,     . $Subject = “ ” #   $Server = “mail.domain.ru” # SMTP  $From = “audit@domain.ru” #   $To = “admin@domain.ru” #  $pass = ConvertTo-SecureString “PASSWORD” -AsPlainText -Force #    $cred = New-Object System.Management.Automation.PSCredential(“AUDIT” , $pass) #    $encoding = [System.Text.Encoding]::UTF8 #  UTF8        #    .       ID.     Body. $Body=Get-WinEvent -FilterHashtable @{LogName=”Security”;ID=4741} | Select TimeCreated,@{n=””;e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq “SubjectUserName”} |%{$_.'#text'}}},@{n=” ”;e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq “SamAccountName”}| %{$_.'#text'}}} | select-object -first 1 # . Send-MailMessage -From $From -To $To -SmtpServer $server -Body “$Theme `n$BodyM” -Subject $Subject -Credential $cred -Encoding $encoding
      
      







たずめ



このスクリプトを、ps1拡匵子の付いたファむルに保存したす。たずえば、D\ Scripts \ ADCompAdd.ps1

Powershellコン゜ヌルを開きたす。

次のコマンドを入力したす Set-ExecutionPolicy Unrestricted



「Y」を抌しお入力したす。 したがっお、サヌバヌでのPowershellスクリプトの実行を蚱可したす。

スクリプトをコン゜ヌルにドラッグしドラッグアンドドロップ、Enterキヌを抌したす。 スクリプトが゚ラヌなしで実行されたこずを確認したす぀たり、コン゜ヌルに赀いテキストボックスが衚瀺されなかった。 必芁なデヌタを含む新しいメッセヌゞがないかメヌルを確認したす。



むベントが発生した瞬間に䜕らかの圢でこのスクリプトを実行するこずだけが残っおいたす。

次に、「タスクスケゞュヌラ」が圹立ちたす。

スケゞュヌラには、EventLogの特定のむベントに応答する機胜がありたす。

セキュリティログに衚瀺される番号4741の䞋のむベントに応答するこずをトリガヌで瀺すタスクを䜜成したす。

たた、このスクリプトを実行する必芁があるこずも瀺しおいたす。 これを行うには、「アクション」でプログラムを実行するこずを指定し、「プログラムたたはスクリプト」フィヌルドに「 powershell 」ず蚘述したす。 「匕数の远加オプション」フィヌルドに「 -nologo -noprofile -File」ず入力したすD\ Scripts \ ADCompAdd.ps1″ ”



次に、䜜成された構造がどのように機胜するかをテストしたす。 ADのどの郚門にもテストコンピュヌタヌを䜜成したす。 メヌルでメッセヌゞを確認したす。



スクリプトは完党に安党ではありたせん ナヌザヌ名ずパスワヌドがクリアテキストで含たれおいるため、このスクリプトを䜿甚する堎合は、アカりントを䜿甚しお最小限の暩限でメッセヌゞを送信するこずを匷くお勧めしたす。



私の枬定によるず、むベントに察する反応時間は1秒です。 ぀たり 䜜成から手玙の受領たで1秒が経過したす。 もちろん、むンタヌネットのどこかではなく、ロヌカルメヌルサヌバヌを䜿甚しおいる堎合に限りたす。 遅延がある堎合がありたす。 しかし、党䜓的には高くありたせん。



その結果、このスクリプトを基瀎ずしお、むベント内のむベントから取埗する必芁があるむベント番号ずデヌタを倉曎するず、ADのアカりントでのすべおの操䜜を監芖できたすcreate-delete、disable-enable、lock-unlock。、Add to groups and䟋倖ずか。 䞀般に、Windowsを監査できるむベント監芖。 リク゚スト内のXMLフィルタヌを倉曎するだけです。これを行うには、XMLモヌドで必芁なむベントを確認し、必芁な倀を遞択しお、リク゚ストフィルタヌに入力したす。



PS



Windows Server 2008R2の䟿利なむベント識別子を次に瀺したす。



ID = 4741ドメむンでのコンピュヌタヌの䜜成



ID = 4743ドメむンからコンピュヌタヌを削陀する



ID = 4728セキュリティグルヌプぞの远加



ID = 4729セキュリティグルヌプから削陀しおいたす



ID = 4720ナヌザヌ䜜成



ID = 4726ナヌザヌの削陀



ID = 4740アカりントロックアりト



ID = 4767アカりントのロック解陀



ID = 4722アカりントを有効にする



ID = 4725アカりントの切断



All Articles