web-dev-qa-db-ja.com

Iptablesは再起動後に新しいルールを復元しませんでした

私は以下のような多くの同様の質問を試しましたが、私の場合、仮想ボックス内のDebian OSでVMを使用しました:

  1. buntuでiptablesを起動/停止するには?
  2. https://unix.stackexchange.com/questions/52376/why-do-iptables-rules-disappear-when-restarting-my-debian-system
  3. https://www.digitalocean.com/community/tutorials/how-to-list-and-delete-iptables-firewall-rules
  4. https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04

これらのコマンドでiptablesルールをフラッシュしようとしました。

Sudo iptables -P INPUT ACCEPT
Sudo iptables -P FORWARD ACCEPT
Sudo iptables -P OUTPUT ACCEPT

これらのコマンドをフォローする

Sudo iptables -t nat -F
Sudo iptables -t mangle -F
Sudo iptables -F
Sudo iptables -X

VMを再起動しても、同じルールが適用されます。私はiptables-saveを使おうとしましたが、いつもこのルールを守っていました。

# Generated by iptables-save v1.4.21 on Wed Mar 28 03:44:14 2018
*nat
:PREROUTING ACCEPT [127:23299]
:INPUT ACCEPT [14:1996]
:OUTPUT ACCEPT [32:1947]
:POSTROUTING ACCEPT [32:1947]
:OUTPUT_direct - [0:0]
:POSTROUTING_ZONES - [0:0]
:POSTROUTING_ZONES_SOURCE - [0:0]
:POSTROUTING_direct - [0:0]
:POST_public - [0:0]
:POST_public_allow - [0:0]
:POST_public_deny - [0:0]
:POST_public_log - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A OUTPUT -j OUTPUT_direct
-A POSTROUTING -j POSTROUTING_direct
-A POSTROUTING -j POSTROUTING_ZONES_SOURCE
-A POSTROUTING -j POSTROUTING_ZONES
-A POSTROUTING_ZONES -g POST_public
-A POST_public -j POST_public_log
-A POST_public -j POST_public_deny
-A POST_public -j POST_public_allow
-A PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-A PRE_public -j PRE_public_allow
COMMIT
# Completed on Wed Mar 28 03:44:14 2018
# Generated by iptables-save v1.4.21 on Wed Mar 28 03:44:14 2018
*mangle
:PREROUTING ACCEPT [4925:1051078]
:INPUT ACCEPT [4925:1051078]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4791:1080206]
:POSTROUTING ACCEPT [4791:1080206]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
:POSTROUTING_direct - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A INPUT -j INPUT_direct
-A FORWARD -j FORWARD_direct
-A OUTPUT -j OUTPUT_direct
-A POSTROUTING -j POSTROUTING_direct
-A PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-A PRE_public -j PRE_public_allow
COMMIT
# Completed on Wed Mar 28 03:44:14 2018
# Generated by iptables-save v1.4.21 on Wed Mar 28 03:44:14 2018
*security
:INPUT ACCEPT [4826:1030935]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4814:1084121]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
-A INPUT -j INPUT_direct
-A FORWARD -j FORWARD_direct
-A OUTPUT -j OUTPUT_direct
COMMIT
# Completed on Wed Mar 28 03:44:14 2018
# Generated by iptables-save v1.4.21 on Wed Mar 28 03:44:14 2018
*raw
:PREROUTING ACCEPT [4949:1054264]
:OUTPUT ACCEPT [4815:1084545]
:OUTPUT_direct - [0:0]
:PREROUTING_direct - [0:0]
-A PREROUTING -j PREROUTING_direct
-A OUTPUT -j OUTPUT_direct
COMMIT
# Completed on Wed Mar 28 03:44:14 2018
# Generated by iptables-save v1.4.21 on Wed Mar 28 03:44:14 2018
*filter
:INPUT ACCEPT [2653:591941]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2649:609004]
COMMIT
# Completed on Wed Mar 28 03:44:14 2018

私が欲しいのは以下のルールのようなものです。私はrules.v4を次のコマンドに設定しました:

# Generated by iptables-save v1.4.21 on Tue Mar 27 02:48:59 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Mar 27 02:48:59 2018

しかし、システムを再起動するときはいつでも、常に以前のルールを取得します...

私の設定で何がうまくいかない可能性がありますか?私は何かを逃したのですか

Iptables-persistentをアンインストールして再インストールしようとしましたが、同じルールがまだあります...

3
Gagantous

rules.v4には、システムの起動時に使用されるものが含まれています。実行中の設定iptables-save > rules.v4を保存しておくと、iptables-persistentを実行している場合は再起動後も保持されます

これは、iptables-saveが構成をSTDOUTに出力するだけで、rules.v4ファイルに構成を保存したいためです。

3
Petter H

通常、ファイアウォールスクリプトをすべてのiptablesコマンドを含む/ rootフォルダーに配置します。最後に追加します

iptables-save > /etc/iptables.conf
ip6tables-save > /etc/ip6tables.conf

次に、スクリプトを保存し、chmod + xして実行します。

次に、/ etc/network/interfacesに追加します

pre-up iptables-restore < /etc/iptables.conf
pre-up ip6tables-restore < /etc/ip6tables.conf

iface loセクションへ。

通常、ポリシードロップを使用し、必要なポートのみを開くため、サーバー間でファイアウォール設定をコピーすることもできます。

また、大きなセキュリティ上の懸念:

Sudo iptables -P INPUT ACCEPT

このコマンドは、ポリシーを受け入れるように設定します。これは、マシンのすべてのポートが開くように設定されていることを意味します。常にポリシードロップを使用し、必要なポートのみを開きます。

2
Broco

現在のルールをファイルに保存するには、iptables-saveを使用します。例えば:

iptables-save > /etc/sysconfig/iptables

保存されたルールをそのファイルからロードするには、iptables-restoreを使用します。例えば:

iptables-restore < /etc/sysconfig/iptables
2

UFW(複雑でないファイアウォール)を試しましたか?! https://wiki.debian.org/Uncomplicated%20Firewall%20%28ufw%29

IPTablesを使用するcmd用のフロントエンドプログラム(必要に応じてgufwも使用)により、ライブテーブルをiptablesで簡単に使用できます。

1
Camadas

iptablesはデフォルトでは設定を保存せず、再起動後にルールを復元しません。

全体的な構成とメンテナンスを容易にするiptablesのラッパーであるShorewallの使用を検討してください。 Shorewallには、ルールを保存して再起動後にルールを復元する機能もあります。

iptables save

Sudo iptables-save > /etc/iptables.rules

iptables restore

インターフェイスを起動する前にiptablesのルールを復元する必要があります。そうしないと、攻撃者はネットワークが無防備な小さなウィンドウを開きます。

また、インターフェースがダウンした場合の一連のルールを作成することもできます。

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules
  post-down iptables-restore < /etc/iptables.downrules

https://help.ubuntu.com/community/IptablesHowTo