私は現在このスニペットを持っています:
# flush all chains
iptables -F
iptables -t nat -F
iptables -t mangle -F
# delete all chains
iptables -X
これを実行した後、不浸透性のルールが存続する可能性はありますか?
アイデアは、完全にクリーンなiptables構成を用意することです。これは、新しいルールセット(routes/ifconfigのパラメーターに注意しない)で簡単に置き換えることができます。
質問に簡潔に答えるには、いいえ。すべてのテーブルをフラッシュした後の「残り」のルールはありません。ただし、徹底するために、組み込みの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
これにより、正しく完全にiptablesシステムが非常に基本的な状態にリセットされます。
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
すべてのポリシーはACCEPTにリセットされ、現在使用中のすべてのテーブルがフラッシュされます。組み込みチェーン以外のすべてのチェーンは存在しなくなります。
ファイアウォールを無効にする必要があるときはいつでもこのようなものです:
iptables-save > iptables.bak
service iptables stop
(私はFedoraにいます)カーネルから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
は空の出力を生成します:)
構成をiptables_backup.confにバックアップし、すべてのルールを消去します。
iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore
以前の構成を復元するには:
iptables-restore < iptables_backup.conf
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
最近、すべての接続をブロックする必要がありました。
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} ./
今後の参考にさせていただきます。私が共有すると思いました。
これは私のために働きました(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接続で実行することができました。
( ソース )
すべての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
できた!