web-dev-qa-db-ja.com

iptablesでIPを一時的にブロックするプログラム

コマンド(IPと期間を指定)を起動するだけでIPアドレスをブロックするプログラムがDebianにありますか一時的に

Iptables/ip6tablesだけでルールを作成できますが、手動で削除する必要があります。私もfail2banを使用していますが、fail2banルールのいずれも満たさない任意のIPアドレスをブロックすることはできないと思います。

5
JoeWhite

Iptablesがそれに一致できるようにipsetを作成する必要があります。注timeoutは、デフォルトが期限切れにならないことを意味します。

ipset create temp_hosts hash:ip timeout 0
iptables -I INPUT 1 -m set -j DROP  --match-set temp_hosts src
iptables -I FORWARD 1 -m set -j DROP  --match-set temp_hosts src

セットが作成されたので、IPアドレスの追加を開始できます(タイムアウト単位:秒)。

ipset add temp_hosts 1.1.1.2 timeout 400

再起動後もこれらが必要な場合は、ルールを保存してロードする必要があることに注意してください。

ipset save -f /path/ipset.save
ipset restore -f /path/ipset.save

これらはcronまたはsystemdで自動化できます。

5
cybernard

ダンのコメントに触発されたこのスクリプトを試してください。

#!/bin/bash
iptables -I INPUT -s $1 -j DROP
at ${2:-now+1hour} <<<"iptables -D INPUT -s $1 -j DROP"

/usr/local/sbin/blockipとして保存し、blockip 1.2.3.4またはblockip 1.2.3.4 now+2hoursを実行します。デフォルトでは、IPは1時間ブロックされます。

REJECTセマンティクスが必要な場合は、DROPをREJECTに置き換えることができます。

2
user49740