Debian で iptables をクリアしてリセットする

Debian で iptables をクリアしてリセットする

iptablesのすべてのルールをクリアするにはこれを使用します

#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

これはiptablesにエントリがなくなるまで機能し、これは次のようにチェックされます。

sudo iptables -L

または

sudo iptables -S

ただし、別のターゲットに転送されたトラフィックは、引き続きそのターゲットにルーティングされます。

クリアされた iptables はクリア後もまだアクティブなようです。

これまでのところ、これらのルールを削除する唯一の方法はシステムを再起動することでしたが、これはあまりエレガントではありません。

デビアンiptables はサービスとして実行されていないようですので、そのサービスの開始または停止は機能しません。

以前に定義されたルールを無効にする効果で iptables を完全にクリアまたはリセットするにはどうすればよいですか?

答え1

  1. iptables ルールのフラッシュは、リダイレクトされた既に確立された接続には影響しませんDNAT。これは、UDP パケットの conntrack エントリに、iptables ルールとは別に使用されているリダイレクト情報が含まれているため関連しています。

  2. 既存の conntrack エントリを コマンドで確認しconntrack -L、 conntrack イベントをconntrack -Eコマンドで監視します。

  3. コマンドを使用してconntrack -F、conntrack エントリをクリアします。新しい UDP パケットはリダイレクトされなくなります。

  4. iptables ルールをサービスとして管理するには、netfilter-persistentおよびiptables-persistentパッケージを使用します。

  5. を手動で実行する代わりに、iptables-save/コマンドを使用する方がよいでしょう。より安全でアトミックです。iptables-restoreiptables

  6. リモート ホスト上の iptables ルールを管理するには、iptables-apply確認されていない場合にルール セットをロールバックできるコマンドを使用します。

答え2

sudo ufw status verbose; sudo iptables -L; 

ufw が実行中かもしれません。停止してみてください。

システム、ネットワーク、そしてどのトラフィックがまだルーティングされているかについてもう少し詳しく教えていただけますか?

初期のファイアウォール ルールを含め、1 ~ 2 個の例で問題ありません。

編集:

いくつかのスクリプトでチェックしました.....チェーンもフラッシュします。

sudo iptables -F INPUT
sudo iptables -F FORWARD 
sudo iptables -F OUTPUT

答え3

iptables ルールをクリアするスクリプトは、すべてのルールをフラッシュし、デフォルトのポリシーを ACCEPT に設定するのに十分です。これにより、ルールがなくなり、すべてが許可されるため、ファイアウォールが事実上無効になります。

コメントから、UDP パケットを送信していることがわかっています。特に、ファイアウォール マシンを通過する UDP パケットのストリームが連続している場合、しばらくの間、古いルールがまだアクティブであるように感じることがあります。これは主に、UDP には接続を閉じる方法がないため、ファイアウォールが現在のアクティブなフローがいつ終了したかを認識しないことが原因です。唯一の方法は、パケットが見られなくなったときに、アイドル タイムアウトを使用してアクティブな「接続」をフラッシュすることです。

次の 2 つのオプションがあります。

  1. しばらく待ってから再試行してください。これには、現在アクティブな「接続」を停止する必要があります。UDP タイムアウトは で確認できます/proc/sys/net/netfilter/nf_conntrack_udp_timeout
  2. ツールを使用してconntrack、既存の「接続」を手動で削除します。

Linux ファイアウォールは、UDP がコネクションレス プロトコルであっても、TCP/UDP のアクティブ ソケットを追跡することに注意してください。

関連情報