解決策 1:
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
recent
も見てください。 iptables のモジュール。これとその --seconds
実際のニーズによっては、オプションが役立つ場合があります。 man iptables
詳細については、
解決策 2:
タイムスタンプ (おそらくエポックからの秒数) を含むコメントをルールに入れます。期限切れのルールを定期的にスイープします。
最新の 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
できます コマンドを出力する代わりに
解決策 3:
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 秒ごとに制限することで、サーバーへの自動アクセス試行を制限できます。
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 チェーンへの「出入り口」です。
- ssh チェーンのルール 1 は、送信元 IP がリスト「ブラックリスト」に含まれているかどうかを確認します。その場合、接続は切断され、24 時間のブラックリスト タイマーが再開されます。ルール 1 が偽の場合、ルール 2 に進みます。
- ssh チェーンのルール 2 は、ソース IP が 5 分間に 4 回を超える接続試行を行ったかどうかを確認します。その場合、パケットをチェーン「ブラック」に送信し、そこでリスト「ブラックリスト」に追加されます。その後、チェーン「黒」が接続をドロップし、完了です。
- チェーン「ssh」のルール 3 は、ルール 1 と 2 が偽の場合にのみ到達します。その場合、パケットは受け入れられ、送信元 IP がリスト「タイマー」に追加されるため、接続試行の頻度を監視できます。
「--reap」オプションは、カーネルにリストを検索し、設定された時間制限よりも古いアイテムを削除するように指示します。リスト「タイマー」の場合は 5 分、リスト「ブラックリスト」の場合は 24 時間。
注:余分なスペースは読みやすくするためのもので、シェル スクリプトでは省略可能です。
解決策 4:
IPTables には、このために特別に作成された機能があります:IP セット。ルールを 1 回作成すると、通常どおり保持されますが、一致する IP (またはポート) のセットがチェックされます。優れた点は、ファイアウォールの残りの部分に影響を与えることなく、このセットを動的かつ効率的に更新できることです。
メインのウェブサイト、例。
したがって、それを使用するには、まだ at
を使用する必要があります または cron
削除をスケジュールします。
解決策 5:
fail2ban を使用して IP アドレスを禁止し、アドレスが禁止される期間を構成できます。