同じLANに複数のCentOS 7システムがあります。各アプリケーションは複数の異なるアプリケーションと通信し、それぞれ異なるポート(データベース、Webサーバー、ロードバランシングサービスなど)でリッスンする1つ以上のアプリケーションがインストールされています。一般的なネットワークアーキテクチャに関する内容です。
これでfirewalld
、この機能はすべて無効になりました。どこでもアクティブにしたいです。
通常は次のようになります。
systemctl enable firewalld
systemctl start firewalld
firewall-cmd <...>
(ポート、ソース、サービスなどを追加)
問題は、ファイアウォールサービスを開始すると、基本的に手順3を実行する機会があるまでほとんどのコンテンツ1をブロックすることです。そして、追加する必要がある構成(ポート、ソース)の量を考慮すると、サービスを理解するまで、デフォルトではサービスが利用できないかアクセスできなくなります。
私が最も重要に思う機能は次のとおりです。
- 一部のシステムでは、GlusterFSを使用してネットワークファイルシステムを作成し、それを別のシステムにマウントしています。
- 私はCorosync + Pacemakerを使用していくつかのシステム間にいくつかのクラスタを作成していますが、これらのツールはさまざまなポートを使用してハートビートと同様の機能を実装しています。
これらのシステムでファイアウォールをオンにすると、ステートメントがたくさん実行されるまですべてのサービスがすぐにブロックされますfirewall-cmd <...>
。私はこれの結果を知らない。
私の質問は:ステップ2の前にステップ3を実行する方法はありますか?これにより、サービスを開くときにすべてが所定の位置になります。
/etc/firewalld/zones
私の唯一のアイデアは、フォルダ内のXMLファイルを手動で編集することです。しかし、これは非常にエラーが発生しやすいようです。特にそのような編集が簡単にできるほどファイアウォールに慣れていないからです。
1 =私が知っている限り、ポート80/443(HTTP / HTTPS)と22(SSH)のみが開き、他のすべてのポートは明示的に開くまでブロックされます。
答え1
サービスを開始する前に、構成ファイルを介してfirewalld
パラメーターを指定する必要があります。各サービス(GlusterFS、Pacemaker ...)のルールファイルを作成し、そのファイルに必要なすべてのポートを配置することをお勧めします。たとえば(心拍数調整器の場合クラスター・コンポーネントを許可するように iptables ファイアウォールを構成する) /etc/firewalld/services/pacemaker.xml
:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Pacemaker</short>
<description>Pacemaker service</description>
<port protocol="tcp" port="2224"/>
<port protocol="tcp" port="3121"/>
<port protocol="tcp" port="5403"/>
<port protocol="udp" port="5404"/>
<port protocol="udp" port="5405"/>
<port protocol="tcp" port="21064"/>
</service>
より多くの情報と例を得ることができます。FirewallDを使用してCentOS 7でファイアウォールを設定する方法。
それからfirewalld
始めても安全です。
手動編集領域ファイルが破損する可能性がある場合は、firewalld
作業システムに適用する前に仮想環境でテストしてみてください。
答え2
単純な。--permanent
次のすべてのルールにオプションを追加するだけです。
firewall-cmd --zone=trusted --add-port=1234/tcp --permanent
これにより、永続構成にルールが登録されますが、コマンドを実行するまでは適用されません。
firewall-cmd --reload
ところで、これが推奨される作業方法ですfirewalld
。このオプションを無効にすると、--permanent
変更は一時的に有効になり、次にファイアウォールを再ロードまたは再起動したときに削除されます。