ブログに戻る

CentOS 7でFirewallDを使用したファイアウォールの設定

CentOS 7でFirewallDを使用したファイアウォールの設定

はじめに

Firewalld は、多くのLinuxディストリビューションで利用可能なファイアウォール管理ソリューションです。Linuxカーネルが提供するiptablesパケットフィルタシステムのインターフェースとして機能します。このガイドでは、サーバーのファイアウォールを設定する方法を学びます。また、firewall-cmd管理ツールを使用したファイアウォール管理の基本についても説明します。

Firewalldの基本

FirewallDは、iptablesのチェインやルールではなく、ゾーンとサービスという概念を使用します。設定するゾーンとサービスに応じて、システムへの送受信が許可されるトラフィックと許可されないトラフィックを制御できます。FirewallDは、コマンドラインユーティリティのfirewall-cmdを使用して設定および管理できます。

起動時に開始するようにファイアウォールをインストールして有効にする

ほとんどのLinuxディストリビューションでは、firewallDはすでにインストールされています。ただし、自分でインストールする必要がある場合は、以下の構文を入力してください。

firewallidがインストールされたら、サービスを有効にしてサーバーを再起動できます:

次に、サーバーを再起動します。サーバーの再起動が成功すると、ファイアウォールが有効になります。その後、以下のコマンドを使用してサービスがアクティブ化されたことを確認します:

check firewall state FirewallD

出力は、デフォルトのファイアウォール設定が機能していることを示しています。

デフォルトの確認

このコマンドを使用して、サーバーによって選択されているゾーンを確認できます:

check firewall default zone

以下を入力して、アクティブなゾーンを確認します:

firewall active zones

次の構文を使用して、デフォルトゾーンの設定を出力し、パブリックエリアに関連付けられているルールを確認します:

list all rules FirewallD

出力は、このゾーンがデフォルトゾーンかつアクティブゾーンであることを示しています。また、eth0およびeth1インターフェースがこのゾーンに割り当てられていることも示しています。

代替ゾーンの確認

デフォルトゾーンやアクティブゾーンに加えて、探索できる他のゾーンもあります。利用可能なすべてのゾーンを表示するには、このコマンドを入力します:

firewall check other zones

–list-allコマンドに–zone=パラメータを追加して、ゾーンに割り当てられている特定の構成を確認します:

check zone configuration FirewallD

 インターフェースゾーンの変更

オプション–change-interfaceを使用して、インターフェースゾーンを簡単に変更できます。次のコマンドは、インターフェースeth1をワークスペースに割り当てます:

以下を入力して変更を確認できます:

changing firewall interface zones FirewallD

デフォルトゾーンの変更

デフォルトゾーンを変更するには、–set-default-zoneの後にデフォルトとして設定したいゾーンの名前を指定します。例えば、デフォルトゾーンを変更するには、次のコマンドを実行します:

次に、以下で変更を確認できます:

firewall change default zone

アプリケーションのルールの設定

サービスに対するファイアウォールの例外を定義するために必要な基本事項を確認しましょう:

ゾーンへのサービスの追加

最も簡単な方法は、必要なポートまたはサービスを使用しているゾーンに追加することです。同様に、–get-servicesオプションを使用して、利用可能なすべてのサービスを表示できます:

firewall get services FirewallD

–add-service = パラメーターを使用して、ゾーンのサービスを有効にすることができます。このアクションは、デフォルトのゾーン、または –zone = パラメーターで定義されたゾーンを対象とします。デフォルトでは、現在のファイアウォールセッションのみが設定されます。–permanent フラグを有効にすることで、永続的なファイアウォール設定をセットアップできます。たとえば、通常の HTTP トラフィックを提供する Web サーバーを実行している場合、次のように入力することで、このセッションの “public” ゾーンのインターフェースに対してこのトラフィックを許可できます。

デフォルトのゾーンを変更したい場合は、–zone = を省略できます。操作が成功したかどうかは、–list-all または –list-services 操作で確認できます。

add service to zone

すべてが期待通りに動作していることを確認したら、再起動後もサービスを引き続き利用できるように、永続的なファイアウォールルールを変更したくなるでしょう。次の構文を入力することで、“public” ゾーンへの変更を永続的に適用できます。

–list-services 操作に –permanent フラグを追加することで、これが成功したかどうかを確認できます。すべての永続的な操作には sudo を使用する必要があります。

これで、“public” ゾーンでポート 80 での HTTP トラフィックが許可されました。以下のコマンドを使用して、これを現在のセッションおよび永続的なルールセットに追加できます。

要件に適合するサービスがない場合、この状況に対処するための優れた方法が 2 つあります。

  1. ゾーンのポートを開放する

特定のアプリケーションのサポートを追加する最も簡単な方法は、各ゾーンで使用されるポートを開放することです。開放する必要があるポートのポート番号またはポート範囲と、対応するプロトコルを指定するだけです。たとえば、アプリケーションがポート 5000 で動作し、TCP を使用している場合、–add-port = パラメーターを使用して、このセッションの “public” ゾーンにそれを追加できます。プロトコルは TCP または UDP のいずれかです。

操作が成功したことを確認するには、–list-ports 操作を使用します。

また、範囲内の開始ポートと終了ポートをハイフンで区切ることで、連続したポート範囲を指定することもできます。たとえば、アプリケーションが UDP ポート 4990 から 4999 を使用している場合、次のように記述して “public” でそれらを開放できます。

テスト後、おそらくそれらを永続的なファイアウォールに追加したくなるでしょう。これを行うには、次のように入力します。

adding ports to permanent firewall

  1. サービスの定義

サービスとは、関連付けられた名前と説明を持つポートのコレクションです。サービスはポートよりも管理が容易ですが、最初に少し作業が必要です。最も簡単な開始方法は、既存のスクリプト(/ usr / lib / firewalld / services 内)を /etc/firewalld/services ディレクトリにコピーすることです。たとえば、次のように SSH サービス定義をコピーして “example” サービス定義で使用できます。XML サフィックスを除いたファイル名が、ファイアウォールサービスの一覧におけるサービス名になります。

この時点で、コピーしたファイル内の定義を調整できます。

まず、ファイルにはコピーした SSH 定義が含まれています。

この定義の大部分はメタデータで構成されています。<short> タグ内のサービスのショート名を変更する必要があります。これは判別しやすいサービス名です。今回の “example” サービスでは、TCP 用にポート 7777、UDP 用にポート 8888 を開く必要があると仮定します。i キーを押して INSERT モードに入ることで、既存の定義を変更できます。

次に、ESC キーを押し、:x と入力してファイルを保存して閉じます。その後、新しいサービスにアクセスできるように、以下のコマンドを入力してファイアウォールを再起動します。

その後、以下のコマンドを使用して、利用可能なサービスの一覧を表示します。

get services

このサービスがゾーンで利用可能になりました。

独自のゾーンの作成

定義済みのゾーンはほとんどのユーザーにとって十分である可能性が高いですが、その機能をより詳細に表す独自のゾーンを定義すると便利な場合があります。

ゾーンを追加するときは、永続的なファイアウォール設定に追加します。その後、リロードして設定をセッションに反映させることができます。たとえば、次のように入力して、前に説明した2つのゾーンを作成できます。

次のコマンドを使用して、それらが永続的な設定に存在することを確認できます。

firewall zones

ファイアウォールをリロードして、これらの新しいゾーンをアクティブな設定に反映させます。

これで、適切なサービスとポートをゾーンに割り当てることができます。たとえば、“publicweb”ゾーンには、SSH、HTTP、およびHTTPSサービスを追加するとよいでしょう。

list public web zone

 

また、次のコマンドを使用して、DNSサービスを“privateDNS”ゾーンに追加することもできます。

list privateDNS zone FirewallD

次に、インターフェースをこれらの新しいゾーンに変更してテストできます。

設定をテストして、動作するかどうかを確認します。これらの値が機能する場合は、同じルールを恒久的な設定に追加する必要があります。これは、—permanentインジケーターを指定してルールを再適用することで実行できます。

 

これらのルールを恒久的に適用した後、ネットワークを再起動し、ファイアウォールサービスをリロードできます。

ゾーンが正しく割り当てられていることを確認します。

check active zones FirewallD

さらに、両方のゾーンに正しいサービスが設定されていることを確認します。

いずれかのゾーンを他のインターフェースのデフォルトとして設定したい場合は、次のコマンドを使用して、パラメータ –set-default-zone= でこの動作を設定する必要があります。

まとめ

これで、独自のゾーンの作成に成功しました。日常的に使用するために、CentOSシステムでfirewalldサービスを管理するための基本的な理解が得られたはずです。firewalldサービスを十分に把握することで、そのパワーと柔軟性を最大限に活用できるようになります。

快適なコンピューティングを!

 

author

Akshay Nagpal

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。