GNU/Linux >> Linux の 問題 >  >> Linux

iptables ルールを期限切れにする方法は?

解決策 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 アドレスを禁止し、アドレスが禁止される期間を構成できます。


Linux
  1. iptablesルールをフラッシュする方法

  2. iptablesルールをフラッシュする方法

  3. iptablesファイアウォールルールをDebian/Ubuntuで永続化する方法

  1. Iptables ルールを表示および削除する方法 – リストとフラッシュ

  2. CentOS / RHEL :再起動後も iptable ルールを保持する方法

  3. SSH セキュリティを (さらに) 確実にする方法は?

  1. CSFファイアウォールにカスタムiptablesルールを追加する方法

  2. SSHポート転送ルールの実際の状態を表示するにはどうすればよいですか?

  3. VPNの作り方