每次遇到攻擊都要開防火牆的設定實在是太辛苦了 , 整理一下調整防火牆的設定指令 , 搭配排程就可以做個自動化機制了
有些時候放在 Internet 的 VM 實在很容易被攻擊 , 但每每都要自己去手動調整實在太辛苦了 , 因此整理一下自己常用的 PowerShell 指令 , 將這樣的處理自動化
一般我會先在 Firewall 的輸入原則內先建立一筆要封鎖的規則,這條規則會用來限制特定的 IP 是不允許連線的
因此有這樣的規則之後,我們就可以在領域的部分設定要封鎖的 IP
只是如果要每次自己手動去新增或者是修改這些 IP , 雖然可以但總是麻煩了一點 , 因此就整理了一下更改防火牆規則的指令
# 將特定 IP 加入到防火牆的規則內
function Add-IpAddressToFirewallRule{
param (
[ValidateNotNullOrEmpty()]
[string]$RuleName,
[ValidateNotNullOrEmpty()]
[string]$Ip
)
$all_ips = [string[]](Get-NetFirewallRule -DisplayName $RuleName | Get-NetFirewallAddressFilter).RemoteAddress
if (!$all_ips.Contains($ip)){
$all_ips += $ip
Set-NetFirewallRule -DisplayName $RuleName -Direction Inbound -Action Block -RemoteAddress $all_ips
}
}
# 將特定 IP 從防火牆的規則內移出
function Remove-IpAddressToFirewallRule{
param (
[ValidateNotNullOrEmpty()]
[string]$RuleName,
[ValidateNotNullOrEmpty()]
[string]$Ip
)
$all_ips = [string[]](Get-NetFirewallRule -DisplayName $RuleName | Get-NetFirewallAddressFilter).RemoteAddress
if ($all_ips.Contains($ip)){
$all_ips = $all_ips | ? {$_ -ne $ip}
Set-NetFirewallRule -DisplayName $RuleName -Direction Inbound -Action Block -RemoteAddress $all_ips
}
}
#Add-IpAddressToFirewallRule -RuleName "Hacker" -Ip "139.205.71.104"
#Remove-IpAddressToFirewallRule -RuleName "Hacer" -Ip "161.162.163.164"
當有了上述腳本之後,就可以利用 SQL Server 的 SQL Agent , 或者是 Windows 的 Task Scheduler (工作排程器) ,定時將偵測到的異常 IP 給加入到黑名單內,這樣管理起來就輕鬆多了。