파워쉘을 이용하여 원하는 이벤트 로그 메일로 받아 보기

오늘은 파워쉘을 이용하여 이벤트 로그에 특정 Event ID가 발생하면
메일로 받아 볼 수 있는 팁을 전달해 드립니다.

이 팁은 http://www.netwrix.com/how_to_detect_software_installations.html에서 가져 왔습니다.
위 링크의 내용은 설치시 발생되는 Event ID : 11707을 체크하여 메일을 받아 보는 내용입니다.

Event ID 값만 변경을 하시면 원하는 Event Log를 메일로 받아 보실 수 있을거 같습니다.

설정 하는 방법은 아래와 같습니다.

1. 이벤트 로그 설정
실행 -> eventvwr.msc -> Windlwos 로그 -> 왼쪽 버튼 -> 속성

Configuring Event Log
Configuring Event Log

– 설정 내용
로그 사용 : 체크
최대 로그 크기 : 1GB
필요한 경우 이벤트 덮어쓰기 혹은 로그가 꼭 차면 로그 보관 중 선택

위 내용은 기본적으로 Windows에서 다 설정 되어 있어 보입니다.

2. 경고 만들기
파워쉘 스크립트로 Event ID가 발생 하면 SMTP를 이용하여 경고를 보내줄 스크립트를 생성합니다.
저장 위치나 파일명은 맘대로 생성 하시면 됩니다.
(예 : detect_software.ps1)
Notepad나 powershell_ise.exe를 이용 하시면 됩니다. 둘다 실행해서 명령어를 입력하면 실행 됩니다.

아래 코드를 참고 하여 몇가지 내용을 수정해 주시면 됩니다.
$Subject = “New Software Has Been Installed” # 메일 제목
$Server = “smtp.server” # SMTP 서버
$From = “[email protected]” # 보내는 계정
$To = “[email protected]” # 받는 계정
$Pwd = ConvertTo-SecureString “enterpassword” -AsPlainText –Force #Sender account password # 보내는 계정 패스워드
$Cred = New-Object System.Management.Automation.PSCredential(“[email protected]” , $Pwd) #Sender account credentials # 보내는 계정
$encoding = [System.Text.Encoding]::UTF8 #Setting encoding to UTF8 for message correct display
#Powershell command for filtering the security log about created user account event
$Body=Get-WinEvent -FilterHashtable @{LogName=”Application”;ID=11707;ProviderName=’MsiInstaller’} | Select TimeCreated, Message, UserID | select-object -first 1 # 메일 내용
#Sending an e-mail.
Send-MailMessage -From $From -To $To -SmtpServer $Server -Body “$Body” -Subject $Subject -Credential $Cred -Encoding $encoding

Code
$Subject = “New Software Has Been Installed” # Message Subject
$Server = “smtp.server” # SMTP Server
$From = [email protected] # From whom we are sending an e-mail(add anonymous logon permission if needed)
$To = [email protected] # To whom we are sending
$Pwd = ConvertTo-SecureString “enterpassword” -AsPlainText –Force #Sender account password
#(Warning! Use a very restricted account for the sender, because the password stored in the script will be not encrypted)
$Cred = New-Object System.Management.Automation.PSCredential([email protected] , $Pwd) #Sender account credentials
$encoding = [System.Text.Encoding]::UTF8 #Setting encoding to UTF8 for message correct display
#Powershell command for filtering the security log about created user account event
$Body=Get-WinEvent -FilterHashtable @{LogName=”Application”;ID=11707;ProviderName='MsiInstaller'} | Select TimeCreated, Message, UserID | select-object -first 1
#Sending an e-mail.
Send-MailMessage -From $From -To $To -SmtpServer $Server -Body “$Body” -Subject $Subject -Credential $Cred -Encoding $encoding

smtp 서버가 없어서 테스트 해본 결과.. 잘 안되네요 ㅠ

참고 사항
powershell_ise.exe를 이용 하시면 작성 하신 소스를 쉽게 실행 할수 있으며 에러를 확인 할 수 있습니다.!!

Port가 필요 하신 분들은 Port 설정 내용을 추가 하시면 됩니다.
$Port = “포트정보”

마지막 줄
Send-MailMessage -From $From -To $To -SmtpServer $Server -Port $Port -Body “$Body” -Subject $Subject -Credential $Cred -Encoding $encoding
위와 같이 낑겨 넣으시면 됩니다.

그러나, Port 옵션이 Windows8에서는 되는데 Windwos 2008에서는 안됩니다 PowerShell 고수님의 도움이 필요 합니다!!

3. Event ID 발생시 스크립트 실행
실행 -> Taskschd.msc -> 작업 스케줄러(로컬) -> 왼쪽 버튼 -> 기본 작업 만들기
기본 작업 만들기

이름 : Event ID 11707
트리거 : 특정 이벤트가 기록될 때
특정 이벤트가 기록될 때 : 로그 – 응용 프로그램
원본 – 빈칸
이벤트 ID – 11707

작업 : 프로그램 시작
2번에서 작성한 스크립트 지정
마침

작업 설정 완료

위 와 같이 설정해 놓으면 서버에 접근이 가능한 유저가 프로그램을 신규로 설치 하면
이벤트 로그를 확인 하지 않아도 메일이 발송 되어 확인이 가능합니다.

프로그램이 신규로 설치 되면 userID값이 SID값으로 전송 되기 때문에 유저를 확인 하는 스크립트를
한번 더 실행 햐야 한다고 합니다.

$objSID = New-Object System.Security.Principal.SecurityIdentifier(“Enter your SID Here“)
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value

code
$objSID = New-Object System.Security.Principal.SecurityIdentifier("Enter your SID Here")
$objUser = $objSID.Translate([System.Security.Principal.NTAccount])
$objUser.Value

마찬가지로 powershell_ise.exe를 이용 하시면 스크립트를 쉽게 이용 하실 수 있습니다.


발신 메일 본문과 작업 스케쥴러를 설정할 때 Event ID를 수정하시면 다양한 Event ID를 메일로
받아 보실 수 있습니다.

혹시 성공 하시면… 댓글로 알려 주세요 ㅠ

출처 : http://www.netwrix.com/how_to_detect_software_installations.html
참고 동영상

About SharedIT

SharedIT

Leave a Reply

1 개의 댓글이 있습니다 - "파워쉘을 이용하여 원하는 이벤트 로그 메일로 받아 보기"

메일 알림 설정
정렬:   최신 | 오래된 | 추천
bytes

정말 좋은 기능인데,,,,
서버가 외부 네트웍 단절일 확률이 대부분이어서…ㅠㅠ

wpDiscuz