のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.

ファイアウォールの(受信)規則をコマンドで追加したい

Windowsファイアウォールの受信規則の作成をコマンドでやりたいなぁ、と思って調べたり試したりしたのでメモしておく。Windows 7 で実行できることを確認済み。

参考にしたページ:
http://www.atmarkit.co.jp/fwin2k/win2ktips/1035advfwall/advfwall.html

コマンド:

netsh

advfirewall

firewall

add rule name="●●接続制限" dir=out action=block protocol=any remoteip=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx description="●●への接続を制限する"

作成した規則を無効にするときは以下のとおり

set rule name="●●接続制限" new enable=no

上記コマンドだと、「●●接続制限」という名前の規則すべてに対して実行されるので、さらに条件を付けたい場合は「new」オプションの前で指定する。
ヘルプ内の注釈にもあるけど、new キーワードの後に記述した値が更新されるので、newが抜けていないか、newの前に設定内容を書いていないか確認すること。

規則を削除するときは以下のとおり

del rule name="●●接続制限"

これも「●●接続制限」という名前の規則すべてを削除するので、必要があればプロトコルIPアドレスを指定すること。

補足:
上記 add rule で指定しているオプションの内容は以下のとおり
name=<文字列>
 規則の名前
dir=out
 送信に対しての規則
 受信の場合は in にする
action=block
 接続をブロックする
 許可の場合は allow にする
description=<文字列>
 規則の説明
remoteip=<IPv4 アドレス>
 リモートIPアドレスを指定する
 送信先のIPアドレスと一致した場合に規則が適用される
 複数ある場合はカンマで区切る

そのほかは add rule ? か set rule ? コマンド、またはファイアウォールのプロパティで確認するヨロシ。

おまけ:
batとかで実行したい場合はnetshからコマンドくっつけるだけ
netsh advfirewall firewall add rule name="●●接続制限" dir=out action=block protocol=any remoteip=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx description="●●への接続を制限する"