Centos 7はiptables設定を保存します


58

問題:サーバーの再起動後にiptablesがデフォルト設定にリセットされます。

私はこのようなルールを設定しようとしています:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

その後、私は:

service iptables save

そして、それはこのような何かを書き戻します

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

そしてこの後、私はちょうど走った(これは一度行われた):

chkconfig iptables on (再起動後に設定を復元するには、これを行う必要があることを読みました)

その後、リブートして次のコマンドを実行します。

systemctl list-unit-files | grep iptables

iptables.serviceが有効になっていることがわかりますが、(ポート3000を開くための)ルールはもう機能しません。

これらの設定を保持するにはどうすればよいですか?


なぜfirewalldを使用しなかったのですか?おそらくまだ実行中です。
マイケルハンプトン

firewalldは、サーバ環境に適していないおそらくので...
フアン・ヒメネス

回答:


67

CentOS 7は現在FirewallDを使用しています!

例:

firewall-cmd --zone=public --add-port=3000/tcp --permanent

リロードルール:

firewall-cmd --reload

2
AWS AMIのcentos7イメージにfirewallDがない理由。
Saad Masood

5
または、firewalldを無効にし、「iptables-services」パッケージをインストールして、ほぼネイティブのiptables互換性を実現できます:)
vagarwal

1
私は、80ポート転送設定を試してみました- LO(のために> 8180を--zone=trustedfirewalld-CMDとの)が、それは(それがで動作します動作しません--zone=publiciptablesのとそう)sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8180 ; sudo /sbin/iptables -t nat -I OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8180作品(しかし、それぞれがfirewalld --reload元に戻します。この失う)
DJB

@saad:awsはすでにファイアウォールサービスを提供しているため、amiを小さく保つことができます
-roothahn

そうではない!Centos 7 VPSを注文しましたが、デフォルトでiptablesがあります!OSバージョン:7.5.1804(コア)
-codezombie

66

次のコマンドでfirewalldを無効にします。

systemctl disable firewalld

次に、次のコマンドでiptables-serviceをインストールします。

yum install iptables-services

次に、サービスとしてiptablesを有効にします。

systemctl enable iptables

これで、次のコマンドでiptableルールを保存できます。

service iptables save

22

CentOS 7 Minimalでは、iptables-servicesパッケージのインストールが必要になる場合があります(提案については@RichieACCに感謝します)。

sudo yum install -y iptables-services

そして、次を使用してサービスを有効にしますsystemd

sudo systemctl enable iptables.service

そして、initscriptを実行してファイアウォールルールを保存します。

sudo /usr/libexec/iptables/iptables.init save

2

たぶん、このようなスクリプトは誰にとっても役立つでしょうか?

firewalldを削除し、INPUTテーブルの現在のルールをフラッシュするため、現在設定されているものはすべて失うことに注意してください

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

IPv6トラフィックがシステムに到達する可能性がある場合(今またはいつでも)に、同じようにしたいと思います。

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup

1

/ etc / sysconfig / iptablesファイルを直接変更できます。iptablesサービスをリロードして、そのファイルからルールをリロードします。しかし、既にお話ししたように、firewalldはCentosの新しいデフォルトのファイアウォールシステムであり、これを使用する方法を学ぶ良い機会ですよね?


7
CentOS7にこれ以上の/ etc / sysconfig / iptablesファイルが存在しない
roothahn

1
@roothahnを申し訳ありませんが、それは間違いなく存在します...もちろんいくつかのパッケージを見逃さない限り。/usr/lib/systemd/system/iptables.serviceから、実際に起動されるのは「/usr/libexec/iptables/iptables.init start」であることがわかります。これは、通常の古い構成ファイルを探す通常の古いスクリプトです。 / etc / sysconfigに
投石

1
ええ/etc/sysconfig/iptables、私にとっても存在しません。ただし、/etc/sysconfig/iptables-config存在します。ただし、iptablesファイルが以前持っていたように、ファイアウォールルールは内部にありません。
ケントグラフ14

2
デフォルトの最小インストールでもファイルが存在しないことがわかりました。CentOS 7はデフォルトではiptables.serviceをインストールしないようです。「yum install -y iptables.service」はサービスをインストールし、デフォルトの/ etc / sysconfig / iptablesを作成しました。
RichieACC

3
「yum install iptables-services」である必要があります
-qris
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.