tmkk/TinyTCPFirewall
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
*これは何?* WindowsのTCP接続を監視し、特定の条件を満たした場合に切断を行うファイアウォールのようなプログラムです。通常のファイアウォールとは異なり、転送量、転送速度に特化した条件を設定することができます。 *使い方* TinyTCPFirewall.exeをダブルクリックして起動します。あとは終了するまで勝手に動作します。動作ログはDOS窓内に表示されるほか、プログラムと同じディレクトリにlog.txtという名前で保存されます。 *注意* ・動作には管理者権限が必要です。管理者権限がない場合、起動しません。 ・監視するローカルのIPアドレスは自動検出されますが、NICが複数存在する等の理由で対象としたいアドレスがうまく選ばれない場合、Rules.iniファイルのGlobalセクション内のMyIPAddressキーにIPアドレスを直接指定することができます。 ・OSの環境や設定にもよるかと思いますが、下り(受信)方向の監視については、OSのファイアウォールの例外にこのプログラム(TinyTCPFirewall.exe)を追加しておかないとパケットが降ってこない可能性があります。なお、Windows標準のファイアウォールは実行ファイルのパス指定に%USERPROFILE%などの環境変数が含まれていると正しく機能しないようなので注意してください。 *ルールの書き方* 切断の条件を設定するためのルールは、実行ファイルと同じディレクトリにあるRules.iniファイル内に記述します。ルールはRuleで始まるセクション内に記述する必要があります。 以下、ルールで使用するキーについて説明します。 ExeName キー (文字列値, 必須) 対象とするプログラムのexeファイル名を指定します。大小文字を区別するので注意してください。 例) ExeName = "foo.exe" -> foo.exe という実行ファイル名のプログラムを対象とします。 When キー (整数値, 既定値=0) ルールを適用するタイミングを通信開始からの秒数で指定します。0を指定した場合、ルールは常時適用されます。0以外の値を指定した場合、ルールが評価されるのはその時間の一度のみです。 例) When = 10 -> 通信開始から10秒経過した時点でこのルールを適用します。 ApplyAfter キー (整数値, 既定値=0もしくはGlobalセクションで指定した値) 通信開始直後にルールを適用しない時間の長さを秒数で指定します。Whenが0の場合に意味を持ち、Whenに0以外の値を指定した場合はこのキーの値は意味を持ちません。Globalセクションにも記述することができ、その場合はキーが存在しない場合の既定値を定義します。 例) ApplyAfter = 5 -> 通信開始から5秒経過するまで、このルールを適用しません。 DownloadRateUpper キー (整数値, 既定値=0) 平均受信速度の上限をKB/s単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) DownloadRateUpper = 100 -> 平均受信速度が 100 KB/s を超過した場合、そのコネクションを切断します。 DownloadAmountUpper (整数値, 既定値=0) 受信量の上限をKB単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) DownloadAmountUpper = 1000 -> 受信量が 1000 KB を超過した場合、そのコネクションを切断します。 DownloadRateLower キー (整数値, 既定値=0) 平均受信速度の下限をKB/s単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) DownloadRateLower = 100 -> 平均受信速度が 100 KB/s を下回った場合、そのコネクションを切断します。 DownloadAmountLower (整数値, 既定値=0) 受信量の下限をKB単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) DownloadAmountLower = 1000 -> 受信量が 1000 KB を下回った場合、そのコネクションを切断します。 UploadRateUpper キー (整数値, 既定値=0) 平均送信速度の上限をKB/s単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) UploadRateUpper = 100 -> 平均送信速度が 100 KB/s を超過した場合、そのコネクションを切断します。 UploadAmountUpper (整数値, 既定値=0) 送信量の上限をKB単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) UploadAmountUpper = 1000 -> 送信量が 1000 KB を超過した場合、そのコネクションを切断します。 UploadRateLower キー (整数値, 既定値=0) 平均送信速度の下限をKB/s単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) UploadRateLower = 100 -> 平均送信速度が 100 KB/s を下回った場合、そのコネクションを切断します。 UploadAmountLower (整数値, 既定値=0) 送信量の下限をKB単位で指定します。条件を満たした場合、コネクションは切断されます。0を指定した場合、この条件は無視されます。 例) UploadAmountLower = 1000 -> 送信量が 1000 KB を下回った場合、そのコネクションを切断します。 実際にルールを記述した例を幾つか示します。なお、Amount/Rateの条件を複数指定した場合、各条件のANDが評価されます。 例1) hoge.exeで通信開始から5秒で送信速度が250KB/sを上回ったコネクションを切断する [Rule1] ExeName = "hoge.exe" When = 5 UploadRateUpper = 250 例2) hoge.exeで総受信量が10000KBを超え、かつ総送信量が1000KB以下のコネクションを切断する [Rule2] ExeName = "hoge.exe" When = 0 DownloadAmountUpper = 10000 UploadAmountLower = 1000 Whenに0以外を指定する場合は、Rate系のキーで条件を指定するのと、Amount系のキーで指定するのとでは、意味は(ほぼ)同じです。指定しやすい方を使ってください。 *ブラックリスト* iniファイルのGlobalセクションにBlackListThresholdというキーがあります。これに0以外の値を指定すると、切断数が指定した回数に達したIPアドレスについてはブラックリストに追加され、以降即時切断されるようになります。ブラックリストに追加されたIPアドレスはログの他にはblacklist.txtというファイルに記録されます。このファイルはPeerBlock等と互換のある形式(説明:開始IPアドレス-終了IPアドレス)になっており、それらのソフトに直接入力として与えることができます。 また、GlobalセクションのLoadBlackListというキーに0以外の値を指定すると、起動時にblacklist.txtの内容でブラックリストを初期化するようになります。これはブラックリストの中身を引き継いで動作させたい場合に便利です。 *その他のオプション* DisableCloseButtonキーを0以外の値にすると、閉じるボタンが無効化されます。この場合、Ctrl+Cで終了することができます。 *配布元* https://github.com/tmkk/TinyTCPFirewall