web-dev-qa-db-ja.com

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

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

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

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

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

96
kagali-san

質問に簡潔に答えるには、いいえ。すべてのテーブルをフラッシュした後の「残り」のルールはありません。ただし、徹底するために、組み込みの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は、この(またはvery同様の)出力を生成します。

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
119
Sam Halicke

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

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

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

26
Jerub

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

  • iptables-save > iptables.bak
  • service iptables stop(私はFedoraにいます)
3
Realn0whereman

カーネルから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は空の出力を生成します:)

2
x-yuri

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

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

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

iptables-restore < iptables_backup.conf
2
Zibri

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         
1

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

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} ./

今後の参考にさせていただきます。私が共有すると思いました。

1
Boschko

これは私のために働きました(Ubuntu 18.04上で):

Sudo bash -c "ufw -f reset && iptables -F && iptables -X && ufw allow 22 && ufw -f enable"

Ufwをリセット(および無効化)してから、iptablesをリセットしてすべてのチェーンをクリアおよび削除します。次に、UFWを再度有効にしますが、リモートアクセス用にポート22を許可する前ではありません。ユーザー確認を必要とする2つのコマンドは「強制」されるため、入力は必要ありません。これをアクティブなSSH接続で実行することができました。

ソース

0
mevdschee

すべてのDROPルールを削除する方法は次のとおりです。

iptables -S |grep DROP| sed 's/-A/-D/' >rules  # -A becomes -D: delete
nano rules  # check that everything is correct
cat rules | while read line; do iptables $line; done
iptables-save

できた!

0
Basj