セッションの切断機能

98 2000 XP Vista 7 8/8.1 10


Version 2.07以降

Ver2.07より、「セッションの強制切断」と「自動切断」を追加しました。
操作と設定はセッションモニターの画面及びオプション設定から行います。


セッションメニュー

セッションモニターで [セッションの強制切断] を実行すると選択したTCPセッションが切断されます。


セッションモニター

[自動切断] をチェックすると自動切断機能が有効になります。
BLOCKEDは実際に切断した回数が表示されます。 [自動切断] のチェックを外すと回数はリセットされます。
[切断ログ表示]をチェックすると切断ログ表示用のペインが開きます。
ここに表示されるものはログファイルに出力されるものと同じです。
ログの文字列を変更する場合は、ログフォーマットをカスタマイズする方法を参照してください。
[LOG] ボタンを押すと出力されたログファイルを開きます。
自動切断ログの出力位置を変更する場合は、ログファイルの保存位置の変更方法を参照してください。


セッションの強制切断には管理者権限が必要です。
  (Vista/7RC以降でUACが有効になっている場合は管理者として実行してください。)

※ この機能の動作確認は、WindowsXP(SP3)/Windows7(32bit/64bit)で行っています。
※ Windows98/2000は "PIDが指定出来ない" 以外は動作すると思います。




オプション設定 - 自動切断


セッションモニター設定

オプション設定で自動切断タブを選択すると自動切断の設定が出来ます。
ここでログファイルを出力するかしないかの選択とログファイル名、自動切断ルールを設定します。
また、ログファイル名にはエイリアスが使用できます。( ファイル名に使用可能なエイリアス )
エイリアスが展開されるタイミングは、オプション設定を[OK]で閉じた時と自動切断回数をリセットした時です。

自動切断ルールに関しては次項にて説明します。


Version 2.45

1時間毎にログファイル名のエイリアスを最展開するように変更しました。


自動切断ルール設定

実行ファイルと同じ場所に 自動切断ルール設定ファイル ( tcpmon_autoblock.txt ) があり、そのファイルに記述します。
無い場合は、一度 オプション設定 を開いて [OK] を押すと作成されます。
オプション設定 から記述しても、テキストエディタで直接編集してもどちらでもかまいません。


ルール説明

記述されたルールに従って、ホスト名やプロセスイメージ名による自動切断が可能です。
切断するTCPコネクションをアプリ毎に絞り込んだり、特定のホスト名だけを弾くなどもできます。
また特殊なキーを使って逆引きに失敗したホストの切断といったことも出来ます。

セッションモニターにある9つのカラムと切断条件は次のように対応しています。

ラベル  : 意味             (種別)    説明
--------:-----------------+---------+------------------------------------------------
IP1     : IPアドレス1      (文字列)  先頭から比較します。
HOST1   : ホスト1          (文字列)  後ろから比較します。
PORT1   : ポート1          (数値)    0~65535を指定。-で範囲指定可能。0は1-65535と同じ。
IP2     : IPアドレス2      (文字列)  先頭から比較します。
HOST2   : ホスト2          (文字列)  後ろから比較します。
PORT2   : ポート2          (数値)    0~65535を指定。-で範囲指定可能。0は1-65535と同じ。
STAT    : 通信状態         (数値)    0:全て  1:接続中  2:接続待ち
TIME    : 通信時間         (数値)    経過秒数を指定します。指定秒を超えると切断。
PID     : イメージ名(PID)  (文字列)  先頭から比較します。後ろにある数字の(PID)は対象外
SYSTIME : システム時刻     (数値)    0~23を指定。-で範囲指定可能。00:00~23:59
ALLOW   : 接続許可         (数値)    0:許可しない 1:許可する  (ALLOW=0は省略可能)
NOLOG   : ログ出力抑制     (数値)    0:抑制しない 1:抑制する  (NOLOG=0は省略可能)
--------:-----------------+---------+------------------------------------------------

キー    : 意味             (種別)    説明
--------+-----------------+---------+------------------------------------------------
????    : DNS名逆引き失敗  (文字列)  逆引きに失敗してIP=HOSTとなったことを判定します。
@@@@    : ローカルアドレス (文字列)  自PCに割り振られているローカルIP (未実装)
%%%%    : ローカルホスト   (文字列)  自PCのホスト名(未実装)
$$$$    :     予約
--------+-----------------+---------+------------------------------------------------

ex.)
     PID=example.exe,HOST2=.co.jp,PORT2=0,
     HOST2=????,PORT2=1-1023,
     PID=iexplore.exe,STAT=2,TIME=60,
     PID=example.exe,HOST2=/tokyo,
     ALLOW=1,PID=example.exe,HOST2=.jp,



記述ルール

・ 『 # 』から始まる行はコメント行になり対象外。
・ 条件を繋げる時は『 , 』で区切る。CSV形式。(行の最後にも『 , 』を付けてください。)
・ 条件記述の順番は自由。
・ 1行1ルールとして、最大で1000件程度のルール指定可能。
・ PIDにはイメージ名を指定。(イメージ名の大文字小文字は区別します。)
・ HOST1 HOST2 に 「 =???? 」を指定可能。IPアドレスの逆引きに失敗した時という意味。
・ IP1 HOST1 IP2 HOST2 PID に 「 =/xxxxx 」の指定で、部分文字列を検索。
・ IP1 HOST1 PORT1 IP2 HOST2 PORT2 PID SYSTIME に 「 != 」の否定条件指定が可能。
・ ALLOWで接続許可の [しない/する] を選択可能。
・ NOLOGでログ出力の抑制を選択可能。


実用的な設定例


# ----------------------------------------------------------------
# TCP Monitor Plus - 自動切断のルール設定ファイル

# "example.exe" が通信しているセッションでホスト2が "*.co.jp" のものを切断
PID=example.exe,HOST2=.co.jp,

# "example.exe" が通信しているセッションでホスト2が "*.hoge.ne.jp" のものを切断
PID=example.exe,HOST2=.hoge.ne.jp,

# "example.exe" が通信しているセッションでホスト2に "tokyo" が含まれるものを切断
PID=example.exe,HOST2=/tokyo,

# "example.exe" が通信しているセッションでIPアドレス2に "123.45.67.89" のものを切断
PID=example.exe,IP2=123.45.67.89,

# "example.exe" が通信しているセッションでIPアドレス2に "123.45.67.*" のものを切断
PID=example.exe,IP2=123.45.67.,

# "example.exe" が通信しているセッションでIPアドレス2に "123.45.*.*" のものを切断
PID=example.exe,IP2=123.45.,

# "example.exe" が通信しているセッションでIPアドレス2に "123.*.*.*" のものを切断
PID=example.exe,IP2=123.,

# ホスト名が "逆引き出来ない" セッションを切断
HOST2=????,

# ポート1が "1番~1024番" まで使用しているセッションを切断
PORT1=1-1024,

# "iexplore.exe" が通信しているセッションで通信状態が "接続中" で
# 通信時間が "5秒" 経過したものを切断
PID=iexplore.exe,STAT=1,TIME=5,

# 組み合わせや指定順は自由
PID=iexplore.exe,HOST2=.jp,PORT2=80,STAT=1,TIME=60,
TIME=30,HOST2=????,PORT2=1-443,PID=example.exe,
PID=msfeedssync.exe,STAT=1,TIME=300,

# システム時刻
# "example.exe" が通信しているセッションでシステム時刻が8:00~16:59なら切断
PID=example.exe,SYSTIME=8-16,

# 否定条件
# "example.exe" が通信しているセッションでIPアドレス2が「192.168.0.*」以外、
# 且つシステム時刻が20:00~20:59以外なら切断
PID=example.exe,IP2!=192.168.0.,SYSTIME!=20,

# 否定条件
# "example.exe" が通信しているセッションでホスト2が「*.jp」以外をすべて切断
PID=example.exe,HOST2!=.jp,

# 接続許可
# "example.exe" が通信しているセッションで
# ホスト2が「*.ne.jp」と「*.or.jp」以外の「*.jp」を切断
ALLOW=1,PID=example.exe,HOST2=.ne.jp,
ALLOW=1,PID=example.exe,HOST2=.or.jp,
ALLOW=0,PID=example.exe,HOST2=.jp,
# ↑ 「*.jp」を切断する前に「*.ne.jp」と「*.or.jp」の接続を許可しています
# 接続許可ルールは指定する順序によって動作が異なります

# 接続許可
# "example.exe" が通信しているセッションで
# ホスト2が「*.bbtec.net」とIPアドレス2が「192.168.0.*」を除く「*.jp」以外をすべて切断
ALLOW=1,PID=example.exe,HOST2=.bbtec.net,
ALLOW=1,PID=example.exe,IP2=192.168.0.,
PID=example.exe,HOST2!=.jp,


※ イメージ名の大文字小文字は区別します。"Example.exe" と "example.exe" は別なので注意。
※ 各行末の "," を忘れないように。


Version 2.07での仕様

ルールに合致したセッションは強制切断しますが、再接続要求を拒否するわけではありません。
再び接続されればルールに従い切断するの繰り返しです。
完全遮断を目的とする場合は、パケットフィルターを使用してください。


Version 2.49での仕様

ラベルに ALLOW が追加されました。ALLOW=1 が指定されている場合ルールに合致したセッションは切断されません。
デフォルトでは ALLOW=0 が指定されている状態なので ALLOW=0 は省略可能です。
接続許可するルールは、切断ルールよりも前の行に記述してください。


Version 2.69での仕様

ラベルに NOLOG が追加されました。NOLOG=1 が指定されている場合はログ出力が抑制されます。
ログ出力がされなくてもTCPセッションの切断は行なわれます。


その他の設定


設定用のGUIは用意されていませんが、設定可能なオプションがあります。
iniファイルを直接編集する時は、TCP Monitor Plus を一旦終了してから行ってください。


ログファイルのオープン時に別のビューア等を指定する方法

tcpmon.ini の [Session] セクションに LogViewer= というキーがあります。
ここに使用したいビューアやエディターをフルパスで記入してください。


ログフォーマットをカスタマイズする方法

tcpmon.ini の [Session] セクションに AutoBlockLogFormat= というキーがあります。
ここにカスタマイズしたフォーマットを記入してください。

デフォルトでは以下のように指定されています。エイリアス一覧を参考にしてください。

BLOCKED [$DATE$ $TIME$] $HOST1$:$PORT1$ $HOST2$:$PORT2$ $PID$


ログフォーマットに使用可能なエイリアス一覧
内容 エイリアス 出力結果
ログ取得日付 $DATE$ 2009/02/20
ログ取得時間 $TIME$ 00:00:00
IPアドレス1 $IP1$ 0.0.0.0
ホスト1 $HOST1$ 自PCのホスト名
ポート1 $PORT1$ 0~65535
IPアドレス2 $IP2$ 0.0.0.0
ホスト2 $HOST2$ リモートホスト xxx.yyy.zzzzz.ne.jp など
ポート2 $PORT2$ 0~65535
通信状態 $STAT$ 接続中 | 接続待ち
通信時間 $TM$ 00分 00秒
イメージ名(PID) $PID$ iexplore.exe(1550) などのプロセス名


接続数のMAX値を定期的にリセットする設定

tcpmon.ini の [Session] セクションに ResetMaxConnections= というキーがあります。
ここにリセットしたい時間を 1分単位 で指定します。(1~65535まで指定可能)
デフォルトでは 1440 になっています。1440は1440分(24時間)間隔でリセットされます。