감사합니다.
Powershell - Event Log Parsing 본문
회사 서버에 공인 IP를 할당해 두었는데 공격이 많이 들어온다.
최근에는 계정이 털려서 복구했는데 채굴 프로그램이 돌아가고 있더라...
공격 들어오는 IP를 차단하고 싶어서 진행한 내용을 정리해본다. 물론 방화벽장비에서 처리하는게 맞겠지만 테스트겸...
1. 계정 이름 및 패스워드 변경 : 윈도우 보안 적용
2. 계정 감사 정책 설정 (권장 설정은 아님)
3. Security 이벤트 로그에서 로그온 이벤트 확인
4. 방화벽 정책 생성
5. 파워쉘로 이벤트 로그 파싱
#find security log with event id 4625
$Events = Get-WinEvent -FilterHashtable @{logname='Security'; id=4625} -MaxEvents 10
foreach($Event in $Events){
# Convert the event to XML
$eventXMLs = [xml]$Event.ToXml()
foreach($eventXML in $eventXMLs){
#$eventXML.Event.EventData.Data
$logs = New-Object psobject -Property @{
UserName = $eventXML.Event.EventData.Data[5].'#text'
IPAddress = $eventXML.Event.EventData.Data[19].'#text'
Date = $Event.TimeCreated
}
$logs
}
}
6. 방화벽 차단 IP 등록(1번 항목에서 등록한 계정의 패스워드가 틀린 경우는 제외)
#find security log with event id 4625
$Events = Get-WinEvent -FilterHashtable @{logname='Security'; id=4625} -MaxEvents 50
foreach($Event in $Events){
# Convert the event to XML
$eventXMLs = [xml]$Event.ToXml()
foreach($eventXML in $eventXMLs){
#$eventXML.Event.EventData.Data
$logs = New-Object psobject -Property @{
UserName = $eventXML.Event.EventData.Data[5].'#text'
IPAddress = $eventXML.Event.EventData.Data[19].'#text'
Date = $Event.TimeCreated
}
if($logs.UserName -ne "★★★★★★"){
$firewallrule = Get-NetFirewallRule -DisplayName "Block IP"
$ips = ($firewallrule | Get-NetFirewallAddressFilter ).RemoteAddress
$logsip = $logs.IPAddress
$diff = $ips | Where-Object{$_ -eq $logsip} -ErrorAction Ignore -Verbose
if(-not $diff){
$ips += $logsip
Set-NetFirewallRule -DisplayName $firewallrule.DisplayName -RemoteAddress $ips -Verbose
}
}
}
}
7. 스크립트를 스케줄러에 등록하여 반복 실행한다.
'Microsoft > Powershell' 카테고리의 다른 글
Windows Update 자동화하기 - Part 3 (0) | 2018.09.29 |
---|---|
Windows Update 자동화하기 - Part 2 (1) | 2018.09.29 |
Windows Update 자동화하기 - Part 1 (0) | 2018.09.29 |
Powershell : 도메인 가입하기 (0) | 2018.03.22 |
Powershell : Invoke-Command 정리(Powershell Ver 6) (0) | 2018.01.12 |
Powershell - WSUS Cleanup powershell (0) | 2018.01.02 |
Powershell - 스케줄러에 파워쉘 스크립트 등록하기 - 변수 사용 (0) | 2017.12.07 |
Powershell - 스케줄러에 파워쉘 스크립트 등록하기 (0) | 2017.12.01 |