CentOS 7でファイアウォールポートを開く


339

CentOS 7を使用していますが、ポート2888および3888が開いていることを確認する必要があります。

私はこの記事を読みましたが、CentOS 7 OSにはiptables saveコマンドがないため、これは機能しませんでした。

誰かが上記のURLは、CentOSの7には有効ではありませんし、私は従うべきことを教えてくれましたこれを。しかし、この記事では、どのコマンドを実行する必要があるのか​​正確にはわかりません。

私も見つけた

firewall-cmd --zone=public --add-port=2888/tcp 

ただし、これは再起動後は残りません。

では、どのようにしてポートを開いて再起動後も存続させることができますか?


Stack Overflowは、プログラミングと開発に関する質問のためのサイトです。この質問はプログラミングや開発に関するものではないため、トピックから外れているようです。ヘルプセンターで、どのようなトピックについて質問できますかをご覧ください。おそらく、スーパーユーザーまたはUnix&Linux Stack Exchangeのほうがよいでしょう。
JWW

回答:


653

次のコマンドを使用して、アクティブなゾーンを見つけます。

firewall-cmd --get-active-zones

public、dmz、またはその他のいずれかと表示されます。必要なゾーンにのみ適用する必要があります。

一般公開の場合:

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

次に、変更を有効にするためにファイアウォールをリロードすることを忘れないでください。

firewall-cmd --reload

それ以外の場合、たとえばゾーンがdmzの場合は、ゾーンをpublicに置き換えます。

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent

29
私はこのコマンドを使用しましたが、機能しませんでした。次のように変更さ--zone=dmzれました--zone=public
Tom Hall

2
はい、パブリックも使用すると便利です。修正についても、Sotsirによる以下のコマンドを確認してください。
ganeshragav 14

23
ここでの上位2つの回答はどちらも実際には何をするのかを説明して--permanentいません。彼らはそうするように言っています。答えがどのように機能するかが説明されていれば、どちらもより完全で有用な答えになります。OPのリソースの1つから:「ルールは--permanentオプション[...]を追加することで永続化できます。ルールを永続化しない場合は、開始、再起動、またはリロードメッセージを受信した後、毎回適用する必要があります。 D-BUSを使用してfirewalldから。」
dKen

9
正しいポートに到達するまで、すべてのゾーンのポートを盲目的に有効にしないでください。使用するfirewall-cmd --get-active-zonesゾーンがシステム上で使用されているものを見つけるために。また、man firewall-cmd。
基本6 2015

1
fedoraのドキュメントを読む 際にそれは述べていThe --permanent option needs to be the first option for all permanent callsます。上記を使用してもエラーは発生しませんでしたが、これが他の人に問題を引き起こす可能性があるかどうかはわかりません。
Marc

113

ganeshragavによる答えは正しいですが、あなたが使用できることを知ることも役に立ちます:

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

ただし、既知のサービスの場合は、以下を使用できます。

firewall-cmd --permanent --zone=public --add-service=http 

ファイアウォールをリロードします

firewall-cmd --reload

[回答はMartin Peterのコメントを反映するように変更され、元の回答--permanentはコマンドラインの最後にありました]


8
--permanentステートメントの最後でオプションを使用することには依存しません。ドキュメントは、それが最初のオプションであるべきであることを明確に指摘しています。
マーティンピーター

1
@MartinPeter man firewall-cmdは私のマシン(Fedora 21)でそのような表示をしません。
Jonathon Reinhart、2015年

私が参照してる@JonathonReinhart FedoraのFirewallDウィキ:明記 The --permanent option needs to be the first option for all permanent calls.
マーティン・ピーター

FirewallDが実行されていない
Rahul Tathod

50

CentOS(RHEL)7 firewall-cmdは、Windowsバージョンのパブリック、ホーム、プライベートネットワークのようなゾーンの概念を使用するファイアウォールを変更しました。ここを見て、どれを使用するべきかを判断してください。EL7はpublicデフォルトで使用するため、以下の例ではこれを使用しています。

で使用しているゾーンを確認しfirewall-cmd --list-all、で変更できますfirewall-cmd --set-default-zone=<zone>

次に、サービス(またはポート)を許可するゾーンを確認します。

firewall-cmd --permanent --zone=<zone> --add-service=http

firewall-cmd --permanent --zone=<zone> --add-port=80/tcp

次のコマンドを実行して、ポートが実際に開いているかどうかを確認できます。

firewall-cmd --zone=<zone> --query-port=80/tcp

firewall-cmd --zone=<zone> --query-service=http

ドキュメントによると、

永続モードでファイアウォール設定を変更する場合、選択内容は、ファイアウォールをリロードするか、システムが再起動したときにのみ有効になります。

ファイアウォール設定は次のコマンドでリロードできますfirewall-cmd --reload



23

開いているポートを表示するには、次のコマンドを使用します。

firewall-cmd --list-ports

以下を使用して、ポートが開いているサービスを確認します。

firewall-cmd --list-services

以下を使用して、ポートが開いているサービスと開いているポートを確認します

firewall-cmd --list-all

ファイアウォールにサービスを追加するには、次のコマンドを使用します。この場合、サービスは任意のポートを使用してファイアウォールで開きます。

firewall-cmd --add-services=ntp 

このサービスを永続的に開くには、次のコマンドを使用します。

firewall-cmd —add-service=ntp --permanent 

ポートを追加するには、次のコマンドを使用します

firewall-cmd --add-port=132/tcp  --permanent

ファイアウォールを実行するには、次のコマンドを使用してリロードする必要があります。

firewall-cmd --reload

ヤーアリ


上記の「firewall-cmd -add-service = ntp --permanent」は「firewall-cmd --add-service = ntp --permanent」として変更する必要があります
Maduranga Siriwardena

14

一方でganeshragavSotsirが正しいと直接適用アプローチを提供し、それはあなたがあなた自身のサービスを追加することができますことに注意することは有益です/etc/firewalld/services。インスピレーションについて/usr/lib/firewalld/services/は、firewalldの定義済みサービスが配置されているをご覧ください。

この方法の利点は、サービスファイルで説明したように、後でこれらのポートが開いている理由がわかることです。また、タイプミスのリスクなしに任意のゾーンに適用できるようになりました。さらに、サービスへの変更は、すべてのゾーンに個別に適用する必要はなく、サービスファイルにのみ適用する必要があります。

たとえば、次のものを作成できます/etc/firewalld/services/foobar.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>FooBar</short>
  <description>
    This option allows you to create FooBar connections between
    your computer and mobile device. You need to have FooBar
    installed on both sides for this option to be useful.
  </description>
  <port protocol="tcp" port="2888"/>
  <port protocol="tcp" port="3888"/>
</service>

(構文については、を実行してくださいman firewalld.service。)

このファイルを作成したらfirewall-cmd --reload、それを使用可能にして、次のようにしてゾーンに永続的に追加できます。

firewall-cmd --permanent --zone=<zone> --add-service=foobar

その後firewall-cmd --reloadすぐにアクティブにします。


6

開いているポートを表示するには、次のコマンドを使用します。

firewall-cmd --list-ports

以下を使用して、ポートが開いているサービスを確認します。

firewall-cmd --list-services

以下を使用して、ポートが開いているサービスと開いているポートを確認します。

firewall-cmd --list-all

ファイアウォールにサービスを追加するには、次のコマンドを使用します。この場合、サービスは任意のポートを使用してファイアウォールで開きます。

firewall-cmd --add-services=ntp 

このサービスを永続的に開くには、次のコマンドを使用します。

firewall-cmd -add-service=ntp --permanent 

ポートを追加するには、次のコマンドを使用します。

firewall-cmd --add-port=132/tcp  --permanent

4

ここでのトップの回答は機能しますが、関連する質問に対するマイケルハンプトンの回答でよりエレガントなものが見つかりました。「新しい」(firewalld-0.3.9-11 +)--runtime-to-permanentオプションをfirewall-cmd使用すると、ランタイムルールを作成し、永続化する前にテストできます。

$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent

または、ランタイムのみの変更を元に戻すには:

$ firewall-cmd --reload

Antony Nguyenのコメントも参照してください。どうやらfirewall-cmd --reloadは、ルールが削除されている場合、正しく機能しない場合があります。その場合は、firewalldサービスを再起動することをお勧めします。

$ systemctl restart firewalld

1

Centos 7 FIrewalldで許可するポートが複数ある場合は、次のコマンドを使用できます。

#firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent

#firewall-cmd --reload


And check the Port opened or not after reloading the firewall.


#firewall-cmd --list-port


For other configuration [Linuxwindo.com][1]

0

CentOS 6以前のようにiptablesサービスに精通している場合でも、手動インストールでiptablesサービスを使用できます。

ステップ1 => epelリポジトリをインストール

yum install epel-release

ステップ2 => iptablesサービスをインストールする

yum install iptables-services

ステップ3 => firewalldサービスを停止する

systemctl stop firewalld

ステップ4 =>起動時にFirewalldサービスを無効にする

systemctl disable firewalld

ステップ5 => iptablesサービスを開始する

systemctl start iptables

ステップ6 =>起動時にiptablesを有効にする

systemctl enable iptables

最後に、/ etc / sysconfig / iptablesでiptables設定を編集できます。

だから->ルールを編集->リロード/再起動。

firewalldと同じ機能を持つ古いCentOSのようにします。


0

Firewalldは、iptablesのベテランには少し直感的ではありません。簡単に構成可能なツリーでiptablesに似た構文を持つiptables駆動のファイアウォールを好む人は、firewalldをfwtreeに置き換えてみてくださいhttps ://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ そして、以下をせよ:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 

0

Centos 7 firewall-cmdでこんにちは。はい、firewall-cmd --zone = public --add-port = 2888 / tcpを使用している場合は正しいですが、firewal firewall-cmd --reloadをリロードした場合

あなたの設定は保存されません

キーを追加する必要があります

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

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