LoginSignup
0
0

More than 1 year has passed since last update.

WindowsFirewallで指定のIPを含む拒否ルールを無効にするPowerShellスクリプト

Posted at

WindowsFirewallで指定のIPを含む拒否ルールを無効にするPowerShellスクリプトを作成してみました。

1.環境

Windows10

2.スクリプト

firewallrule_disable.ps1
$siteiIP = "*11.22.33.44*"

# ログの出力先
$LogPath = ".\"
# ログファイル名
$LogName = "firewall_delete_ExecuteLog"
$LogFile = $LogName + ".log"
# ログファイル名
$LogFileName = Join-Path $LogPath $LogFile

function PrintMsg(
            $LogString
            ){

    $Now = Get-Date

    # Log 出力文字列に時刻を付加(YYYY/MM/DD HH:MM:SS.MMM $LogString)
    $Log = $Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + " "
    $Log += $LogString

    # ログファイル名が設定されていなかったらデフォルトのログファイル名をつける
    if( $LogName -eq $null ){
        $LogName = "LOG"
    }

    # ログファイル名(XXXX_YYYY-MM-DD.log)
#    $LogFile = $LogName + "_" +$Now.ToString("yyyy-MM-dd") + ".log"

    # ログフォルダーがなかったら作成
    if( -not (Test-Path $LogPath) ) {
        New-Item $LogPath -Type Directory
    }

    # ログ出力
    Write-Output $Log | Out-File -FilePath $LogFileName -Encoding Default -append

    # echo させるために出力したログを戻す
    Return $Log
}

PrintMsg ("Firewall規則無効化処理開始")
try {
#送信拒否ルールのName一覧取得
$RuleNameList = Get-NetFirewallRule -Action Block -Direction Outbound | Select-Object -Property Name

foreach ($item in $RuleNameList) {

   $RemoteIP = Get-NetFirewallRule -Name $item.Name | Get-NetFirewallAddressFilter | Select-Object -Property RemoteAddress

   if ( $RemoteIP -like $siteiIP ) {
       
      #DisplayNameの表示
      $RuleName = Get-NetFirewallRule -Name $item.Name | Select-Object -Property DisplayName
      
      $naiyou1 = "指定サーバ宛て送信拒否規則を含むFirewallルール名は" + $RuleName + "です。"
      $naiyou2 = "リモートアドレスは" + $RemoteIP + "です。"
      $naiyou3 = "このルールを無効化ます。"
      $naiyou4 = "このルールの無効化に成功しました。"
      Write-Output $naiyou1 | Out-File -FilePath $LogFileName -Encoding Default -append
      Write-Output $naiyou1
      Write-Output $naiyou2 | Out-File -FilePath $LogFileName -Encoding Default -append
      Write-Output $naiyou2
      Write-Output $naiyou3 | Out-File -FilePath $LogFileName -Encoding Default -append
      Write-Output $naiyou3
      #ルールの無効化      
      Set-NetFirewallRule -Name $item.Name -Enabled False

      Write-Output $naiyou4 | Out-File -FilePath $LogFileName -Encoding Default -append
      Write-Output $naiyou4
      }else{
      $naiyou10 = "指定のIPは含まれていませんでした。ルール名は" + $item.Name
      Write-Output $naiyou10 | Out-File -FilePath $LogFileName -Encoding Default -append
      Write-Output $naiyou10
     }
}
} catch {
PrintMsg ("Firewall規則無効化処理に失敗しました")
PrintMsg ($error[0])
}

PrintMsg ("Firewall規則無効化処理終了")

3.スクリプトの実行

firewallrule_disable.ps1

指定のIPを含む拒否ルールが無効化され、実行ログ(firewall_delete_ExecuteLog.log)が出力されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0