Powershellは、変更アラートでActive Directoryを監査します。 パート2



前の記事で、ハブに最初の投稿を公開しました トピックの続きで、第2部を書きます。



前半のコメントで、サーバーへの接続の監視スクリプトの機能を拡張したことをさりげなく言及しました。 特に、彼はインスタントメッセージングサービスXMPP(Jabber)に通知を追加し、ログを別のテキストファイルに書き込みました。





インスタントアラート。



インスタントアラートの良い点は、新しいメッセージがあるかどうかメールを常に確認する必要がないことです。メッセージが入ってくるとすぐに通知されます(もちろんクライアントの設定によって異なります)。

私自身は、すべてのウィンドウの上部にメッセージを開くようにしました。 もちろん、自分自身をスパムにしないために、そのようなアラートは重要なイベントに送信されます。

重大な原因は、ドメインコントローラーへのログイン試行の失敗、VPNサービス(Windows上のPPTP)へのログイン試行の失敗です。 また、この機能をAD監視スクリプトに追加しました。 なぜなら ADにアクセスできる人が数人いるので、時間が経つにつれて、関連するデータ(何か、一度、誰かが削除/移動/追加されたが、あなたは知らない)のスレッドを失う可能性があります。 そして、これらのメッセージは、変更についてリアルタイムで知るのにちょうど間に合います。



ソリューションを検索する


この種の通知のアイデアを思いついたとき(私たちの組織がJabberサービスを非常に積極的に使用しているという事実を考えると)、私が最初にしたことはPowershell JabberをGoogleにハンマーで打つことでした。 私の最初のリンクは、オープンスペースで未知ではないフォーラムである Microsoft Technet Xaergの サイトに私を送りました。 私がそこに見たという事実は、私を喜ばせませんでした:「膨大な数のネットワークプロトコルを操作するためのコマンドレットを含むNetCmdletsスナップインは、非営利的な使用のために完全に無料であることをご存知ですか?」

また、使用可能なコマンドのリストが提供されます。 「これは私が必要とするものであり、無料です!!!」このコマンドレットスナップインの開発者のサイトに行ったとき、私は思って動揺しました。 その後、記事の日付に注目しましたが、2008年になりました-少し古い:(。

実験のために、試用版をダウンロードしました。 アラートを使用するサーバーにインストールされています。 インストールは突然行われました。 新しいコマンドレットがすぐに利用可能になりました。 構文は非常に単純で、メッセージの送信に問題はありませんでした。 しばらくの間、このトライアルライセンスを月に一度再登録して使用しました。 しかし、試用版を使用すると、インストールされているサーバーごとに毎月登録する必要があるという事実がさらに落ち込みました。 また、その時点でインフラストラクチャには30台未満のサーバーしかなかったので、すべてのサーバーで少なくとも月に1回再登録するという考えでさえ、私を恐れました。

時間が経つにつれてより自由になったとき、私はこのアイデアを終了することにしました。 PowershellがXMPPプロトコルを使用してメッセージを送信できるようにするツールが必要でした。 この場合、この製品を使用するための条件は重要な要素である必要があります-それは無料でなければなりません。



私は再びGoogleを苦しめ始めました。 そして、私の努力は無駄ではありませんでした。 ワンクリックで、XMPPプロトコルを使用してPSコンソールからメッセージを送信するだけのユーティリティ備えページに移動しました

私は、ページタイトルの碑文「オープンソースソフトウェアのプロジェクトホスティング 」に特に満足しています この製品を無料で使用できると思ったのは、まさに私が必要なものです。



電子メール、Jabberサービス、およびログファイルへの書き込みによる通知を使用した、サーバーへのアクセス試行の失敗の監査。



#    WIndowsEventLog       ,      Body $HostName = HostName $Body=Get-WinEvent -FilterHashtable @{LogName="Security";ID=4625} | Select TimeCreated,@{n="User";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "TargetUserName"} | %{$_.'#text'}}},@{n="ComputerName";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "WorkstationName"}| %{$_.'#text'}}},@{n="IPAddress";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "IPAddress"}| %{$_.'#text'}}} | select-object -first 1 #$BodyL -      - $BodyL = "`n"+$Body.TimeCreated +"`t"+ $Body.User +"`t"+ $Body.ComputerName +"`t"+ $Body.IPAddress #$Body -           Jabber $Body = "`n: "+$Body.TimeCreated +"`n : "+ $Body.User +"`n-: "+ $Body.ComputerName +"`nIP : "+ $Body.IPAddress #$Theme -  . $Hostname -   $Theme = "     "+$hostname # Jabber- Add-PSSnapin poshxmpp new-client -JabberId AUDIT@domain.ru -Password PASSWORD Send-Message admin@domain.ru "$Theme $Body" $PoshXmppClient.Close() #    e-mail    $Subject = "     "+$hostname $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 # e-mail Send-MailMessage -From $From -To $To -SmtpServer $server -Body "$Theme `n$Body" -Subject $Subject -Credential $cred -Encoding $encoding #    - FaildConnect.txt $BodyL | out-file "\ServerNameServerLogFilesServerFaildConnect.txt" -append
      
      







最初の部分で書いたように、スクリプトを自動的に実行するには、EvenLogのセキュリティログでID = 4625のイベントを検出したときに、それをタスクスケジューラに配置し、このスクリプトの起動を構成する必要があります。



推奨事項



VPNサーバーとすべてのドメインコントローラーで動作するのは、このようなスクリプトです。

たとえば、いつ、誰がVPNに接続するかが常にわかります。 または、誰かがサーバーにアクセスするためにパスワードを取得しようとしたとき。

また、端末アクセスサービスなど、インターネット上で「点灯」しているサービスにこのようなスクリプトを掛けることをお勧めします。

別のファイルのレコードを使用すると、将来、接続を分析できます。 ちなみに、ログはスプレッドシートエディタ(MS ExcelまたはOO Calc)で開くことができ、すでにログをテーブルとして使用できます(ソート、フィルターなど)。



All Articles