すべてのiptablesルールをクリアする最良の方法


83

私は現在このスニペットを持っています:

# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X

これを実行した後、いくつかの不浸透性のルールが生き続ける可能性はありますか?

アイデアは、完全にクリーンなiptables構成を持つことです。これは、新しいルールセットで簡単に置き換えることができます(routes / ifconfigのパラメーターは使用しないでください)。

回答:


107

あなたの質問に簡潔に答えるために、いいえ:すべてのテーブルをフラッシュした後に「残りの」ルールはありません。ただし、徹底的であるために、組み込みINPUTおよびFORWARDチェーンのポリシーをACCEPT同様に設定することもできます。

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

ip6tablesルールをクリアします。

ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -F
ip6tables -X

...そしてそれでうまくいくはずです。iptables -nvLこの(または非常に類似した)出力を生成する必要があります。

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

9
「生」を忘れた:iptables -t raw -F iptables -t raw -X
kK-Storm

there would not be any "leftover" rules after flushing every tableOPはすべてのテーブルをフラッシュするわけではありません。あなたもしません。徹底したい場合は次のようになります。また、追加することもできiptables -t "$table" -Zます。この方法では、テーブルとそのチェーンのリストをハードコーディングしていることに注意してください。だから私は真剣に保存復元ソリューションを検討します。または、単にiptablesをアンロードできます。
x-yuri

23

これにより、iptablesシステムが非常に基本的な状態に正しく完全にリセットされます。

iptables-save | awk '/^[*]/ { print $1 } 
                     /^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
                     /COMMIT/ { print $0; }' | iptables-restore

すべてのポリシーはACCEPTにリセットされ、現在使用中のすべてのテーブルがフラッシュされます。組み込みチェーン以外のすべてのチェーンは存在しなくなります。


1
きちんとしたハック!ただし、保存/復元形式に微妙な変更を加えると破損する可能性があるため、これに依存しません。おそらく、iptablesツールが明示的に提供するAPI IMO に固執するのが最善です。
スティーブン

3
私は考えを変えました。データ形式は非常に広く使用されているため、これ以上変更することはほとんどありません。+1。
スティーブン

2
+1、興味深いハック
サムハリック

これにより、残ったUFWチェーンを取り除くことができましたが、受け入れられた答えはそうではありませんでした。
l0b0

それはマイナーなディテールですが、あなたは最初に交換したいかもしれないprint $1print $0一貫:)されるように
X-ユーリ

2

ファイアウォールを無効にする必要があるときはいつでも次のようなものです:

  • iptables-save > iptables.bak
  • service iptables stop (私はフェドラにいます)

1

iptablesカーネルからモジュールを単にアンロードできます:

modprobe -r iptable_raw iptable_mangle iptable_security iptable_nat iptable_filter

UPD残念ながら、あまりにも良いことです。テーブルにルールまたはユーザー定義のチェーンがある限り、対応するモジュールの参照カウントは1であり、modprobe -r失敗します。次のようにルールとユーザー定義チェーンを削除できます。

echo $'*raw\nCOMMIT\n*mangle\nCOMMIT\n*security\nCOMMIT\n*nat\nCOMMIT\n*filter\nCOMMIT' | iptables-restore

または:

iptables-save | awk '/^[*]/ { print $1 "\nCOMMIT" }' | iptables-restore

また、この方法でモジュールをアンロードすることもできます(モジュール名をハードコーディングしないでください):

lsmod | egrep ^iptable_ | awk '{print $1}' | xargs -rd\\n modprobe -r

明るい面では、これiptables-saveが素敵な空の出力を生成した後:)


それがここのハンマーかもしれません。どうも。
コンラッドガジェフスキ

0

1つまたは2つのコマンドでこれを行うことができます。

 $ sudo iptables-save > iptables.bak
 $ sudo iptables -F

結果:

$ sudo iptables -nvL
Chain INPUT (policy ACCEPT 3138 packets, 5567K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 3602 packets, 6547K bytes)
pkts bytes target     prot opt in     out     source               destination         

5
デフォルトのポリシーが現在DROPに設定されている場合、これはサーバーから簡単にロックアウトされる方法です。だから、いや、それは1つまたは2つのコマンドプロセスではありません。現在ACCEPTでない場合は、最初にACCEPTに設定する必要があります。
ライアンH

0

私は最近、すべての接続をブロックする必要がありました

iptables-policy INPUT DROP
iptables-policy OUTPUT DROP
iptables-policy FORWARD DROP

保存に関しては、以下をお勧めします

Ubuntu:

/etc/init.d/iptables save
/sbin/service iptables save

RedHat / CentOS:

/etc/init.d/iptables save
/sbin/iptables-save

過去にこれを使用したすべての現在のufwルールのバックアップに加えて

cp /lib/ufw/{user.rules,user6.rules} /<BACKUP LOCATION> 
cp /lib/ufw/{user.rules,user6.rules} ./

これは今後の参考に役立つと思います。私は共有すると思いました。


0

設定をiptables_backup.confにバックアップし、すべてのルールを消去します。

iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore

以前の構成を復元するには:

iptables-restore < iptables_backup.conf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.