これは可能だと誰かが私に言ったが、私はグーグルやマンページで何も見つけることができません。
IPを一定期間禁止した後、自動的に禁止を解除しました。
Iptablesだけでルールを完全に削除するつもりなら、私が知る限り、それを行うことはできません。これの目的は何ですか?ある種の自動一時禁止が必要な場合、標準ソリューションは fail2ban です。
または、cronジョブを使用して、追加するルールを削除することもできます。対話形式で実行する場合は、at
ジョブを使用することをお勧めします。
iptables -I INPUT -s 192.168.1.100 -j DROP
echo "iptables -D INPUT -s 192.168.1.100 -j DROP" | at @10pm
また、iptablesのrecent
モジュールも見てください。これと--seconds
オプションは、実際のニーズによっては役立つ場合があります。 man iptables
詳細については。
タイムスタンプ(おそらくエポックからの秒数)をコメントに含めます。期限切れのルールを定期的にスイープします。
最新のLinuxカーネルは、直接のiptablesルールとしてではなく、iptableルールによって参照されるキャッシュへのIPアドレスの動的ロードをサポートしています。
例:
iptables -A INPUT -s 192.168.200.100/32 -m comment --comment "expire=`date -d '+ 5 min' +%s`" -j DROP
iptables -L INPUT -n --line-numbers | tac | Perl -ne 'next unless /(^\d+).*expire=(\d+)/; if ($2 < time) { print "iptables -D INPUT $1\n"; }'
もちろんできますiptables -D INPUT $1
コマンドを出力する代わりに。
iptablesには、ユーザー定義の条件が満たされた場合にIPアドレスをリストに自動的に追加するメソッドがあります。私は以下を使用して、私のsshポートへのハッキングの自動試行を回避します。
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --name ssh --seconds 60 --reap -j DROP
これは、同じIPアドレスからの接続試行を60秒ごとに1回に制限することにより、サーバーへのアクセスを取得する自動試行を制限するのに役立ちます。
時間枠内で設定された試行回数(5分に4回など)を許可し、失敗した場合は、24時間などのより長い期間、それらをブラックリストに登録するには、次のようにします。
iptables -X black
iptables -N black
iptables -A black -m recent --set --name blacklist -j DROP
iptables -X ssh
iptables -N ssh
iptables -I ssh 1 -m recent --update --name blacklist --reap --seconds 86400 -j DROP
iptables -I ssh 2 -m recent --update --name timer --reap --seconds 600 --hitcount 4 -j black
iptables -I ssh 3 -m recent --set --name timer -j ACCEPT
iptables -A INPUT -p TCP --dport ssh -m state --state NEW -j ssh
上記では、2つのチェーンを作成しています。 「ssh」と「black」、および2つのリスト。 「タイマー」、「ブラックリスト」。
簡単に。上記の最後のチェーンは、sshチェーンへの「入り口」です。
「--reap」オプションは、リストを検索して、設定された制限時間より古いアイテムをすべて削除するようにカーネルに指示します。リスト「タイマー」の場合は5分、リスト「ブラックリスト」の場合は24時間。
注:余分なスペースは読みやすくするためのもので、シェルスクリプトではオプションです。
fail2ban を使用して、IPアドレスを禁止し、アドレスが禁止される期間を構成できます。
誰かがすでに言ったように:この機能にはipsetを使用する必要があります。
ipsetは、タイムアウト値を使用してIPアドレスを追加できます。タイムアウトが終了すると、レコードは自動的にipsetから削除されます。
timeout All set types supports the optional timeout parameter when creating a set and adding entries. The value of the timeout parameter for the create command means the default timeout value (in seconds) for new entries. If a set is created with timeout support, then the same timeout option can be used to specify non-default timeout values when adding entries. Zero timeout value means the entry is added permanent to the set. The timeout value of already added elements can be changed by readding the element using the -exist option. Example: ipset create test hash:ip timeout 300 ipset add test 192.168.0.1 timeout 60 ipset -exist add test 192.168.0.1 timeout 600
http://ipset.netfilter.org/ipset.man.html
これは、この動作を制御するための好ましい方法です。
Netfilter recent またはtimeモジュールを使用して、これを実現したいことに応じて、これを実現できます。
どちらも iptablesのマニュアルページ に記載されています。
IPを一定期間禁止した後、自動的に禁止を解除しました。
あなたは次のものを試すことができます
# iptables -I INTPUT -s xxx.xxx.xxx.xxx -m time --utc --datestart 2013-09-09T15:00 --datestop 2013-09-09T15:30 -j DROP