CentOS 7でiptablesを使用するにはどうすればよいですか?[閉まっている]


154

CentOS 7を最小限の構成(OS +開発ツール)でインストールしました。httpdサービス用に80ポートを開こうとしていますが、iptablesサービスに何か問題があります...何が問題になっていますか?何が悪いのですか?

# ifconfig/sbin/service iptables save
bash: ifconfig/sbin/service: No such file or directory


# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables status
Redirecting to /bin/systemctl status  iptables.service
iptables.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

# /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

# sudo service iptables start
Redirecting to /bin/systemctl start  iptables.service
Failed to issue method call: Unit iptables.service failed to load: No such file or directory.

この/etc/init.d/iptables保存を試してください
Satya

8
私はここで答えを得まし。RHEL 7はファイアウォールで保護されたiptablesの
Meiblorn

回答:


333

RHEL 7 / CentOS 7では、iptablesを管理するためにfirewalldが導入されました。IMHO、firewalldはサーバー環境よりもワークステーションに適しています。

より古典的なiptables設定に戻ることが可能です。まず、firewalldサービスを停止してマスクします。

systemctl stop firewalld
systemctl mask firewalld

次に、iptables-servicesパッケージをインストールします。

yum install iptables-services

起動時にサービスを有効にします。

systemctl enable iptables

サービスの管理

systemctl [stop|start|restart] iptables

ファイアウォールルールを保存するには、次の手順を実行します。

service iptables save

または

/usr/libexec/iptables/iptables.init save

5
iptablesを保存していません。サーバーを再起動すると、すべての変更が失われます。
ルーズベルト

2
私のシステムでは、iptablesは正しく保存されています。起動時にiptablesサービスが開始されていることを確認しましたか?これを行うには、「systemctl enable iptables」を実行します
Sgaduuw

1
また、firewalldを実行して、追加のiptablesルールをリストに追加することもできます(システムを再起動するたびに)。firewalldを停止するには、「systemctl mask firewalld」を実行します
TroodoN-Mike

@ TroodoN-Mikeが示唆したように、ファイアウォールでのマスキングに関する情報を回答に追加しました
Sgaduuw 2014

8
@Sgaduuw fitewalldがサーバーに適していないと思われる理由について詳しく説明していただけますか?
AlexanderGroß2014年

98

RHELとCentOS 7はiptablesの代わりにfirewall-cmdを使用します。次のようなコマンドを使用する必要があります。

# add ssh port as permanent opened port
firewall-cmd --zone=public --add-port=22/tcp --permanent

次に、ルールを再読み込みして、すべてが正常であることを確認します

firewall-cmd --reload

lxcまたはdockerコンテナーを使用する場合は、iptable-saveを使用するよりも、特別に使用する方が適切です。Dockerサービスを起動すると、iptable-saveコマンドがプロンプトするいくつかのルールが追加されます。結果を保存すると、保存してはならないルールがたくさんあります。Dockerコンテナは次回の再起動時にIPアドレスを変更できるためです。

そのためには、永久オプション付きのファイアウォールコマンドが適しています。

「man firewall-cmd」をチェックするか、公式のfirewalldドキュメントチェックしてオプションを確認してください。ゾーン、設定、動作方法をチェックするオプションはたくさんあります... manページは本当に完全です。

Centos 7以降、iptables-serviceを使用しないことを強くお勧めします


1
素晴らしい説明-私には完璧に働きました。ありがとう!
digitalformula 2015年

1
firewall-cmd --reloadが機能していません。変更を有効にするには、「systemctl restart firewalld」を使用して再起動する必要がありました。
バジルムーサ2015

「firewalldは動的なので、いつでも構成を変更でき、すぐに実装されます。ファイアウォールの一部をリロードする必要がないため、既存のネットワーク接続が意図せずに中断されることはありません」- 公式のFirewalldドキュメントから
yicone

効率的でクリーン。おかげでたくさん
バイバブ

17

再起動してもiptablesが起動しないという問題がありました。

これはそれを修正しました:

yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables

CentOSの7が動作しない場合:# systemctl start iptables与えます Failed to start iptables.service: Unit not found.# systemctl start ip6tablesなりますFailed to start ip6tables.service: Unit not found.
PKHunter


5

私は/etc/sysconfig/ip6tables-configファイルを変更して変更しました:

IP6TABLES_SAVE_ON_STOP="no"

に:

IP6TABLES_SAVE_ON_STOP="yes"

この:

IP6TABLES_SAVE_ON_RESTART="no"

に:

IP6TABLES_SAVE_ON_RESTART="yes"

これにより、再起動によってiptablesコマンドを使用して行った変更が保存されたようです。


1

IPtablesの設定を従来のファイルに入れれば、ブート後にロードされます:

/ etc / sysconfig / iptables


1

先月、LXC VMコンテナーでiptablesを構成しようとしましたが、再起動後に毎回iptables構成が自動的にロードされませんでした。

私がそれを機能させる唯一の方法は、次のコマンドを実行することでした:

yum -y install iptables-services; systemctl disable firewalld; systemctlマスクfirewalld; service iptables restart; サービスiptables保存


0

さらに、systemctl mask firewalldコマンドを実行した後、ip6tablesに対しても同じことができるはずです。

    systemctl start ip6tables.service
    systemctl enable ip6tables.service

0

その場合、fail2banを使用している場合は、適切なフィルター/アクションを有効にする必要があります。

次の行を入れます /etc/fail2ban/jail.d/sshd.local

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 5
bantime = 86400

fail2banを有効にして開始します。

systemctl enable fail2ban
systemctl start fail2ban

リファレンス:http : //blog.iopsl.com/fail2ban-on-centos-7-to-protect-ssh-part-ii/

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