Added PS script to block SQL hacker IP's
This commit is contained in:
parent
96e75c63b3
commit
7d0877fb20
47
BlockHacker.ps1
Normal file
47
BlockHacker.ps1
Normal file
@ -0,0 +1,47 @@
|
||||
<#
|
||||
Use this script to scan the SQL error log for failed logins and
|
||||
automatically add them to the Windows firewall.
|
||||
#>
|
||||
|
||||
#Use REGEX to create the patternfor IP addresses
|
||||
$ipPattern = [Regex]::new("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")
|
||||
|
||||
#Create a variable to hold the IP addresses that we DO NOT want added to the firewall rule
|
||||
$own_IPs = [Regex]::new("(127\.0\.0\.1|198\.23\.255\.226|198\.23\.255\.227|198\.23\.255\.228|198\.23\.255\.229|73\.117\.147\.[0-9]{1,3})")
|
||||
|
||||
#Search the SQL error log for entries with an IP address (IP's are logged when there is a login failure)
|
||||
$result = gc "C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG" | Select-String ${ipPattern} | Select-String -notmatch $own_IPs
|
||||
|
||||
#Output all of the IP's found to a text file
|
||||
$result.Matches.value | Out-File ips.txt
|
||||
|
||||
#Open the output text file, sort the list and get rid of duplicate IP's, saving the file list to a new file
|
||||
Get-Content ips.txt | Sort-Object | Get-Unique -AsString | Out-File unique_ips.txt
|
||||
|
||||
#Loop through the list of unique IP's and update the firewall rulle
|
||||
$ips = @()
|
||||
foreach ($ip in Get-Content unique_ips.txt) {
|
||||
Try
|
||||
{
|
||||
if ((Get-NetFirewallRule -DisplayName "IP Block SQL Server" | Get-NetFirewallAddressFilter).RemoteAddress -eq $ip) {
|
||||
# debug:
|
||||
# Write-Host "IP ${ip} already blocked"
|
||||
continue
|
||||
}
|
||||
else {
|
||||
$ips += $ip
|
||||
}
|
||||
}
|
||||
Catch
|
||||
{
|
||||
|
||||
}
|
||||
Finally
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if($ips.length -gt 0)
|
||||
{
|
||||
Set-NetFirewallRule -DisplayName "IP Block SQL Server" -RemoteAddress $ips
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user