LinuCレベル2 202試験の例題と解説

主題2.12システムのセキュリティ

2.12.1iptables や firewalld によるパケットフィルタリング

LinuCレベル2 202試験の出題範囲から「2.12.1 iptables や firewalld によるパケットフィルタリング」についての例題を解いてみます。


例題

次のうち、publicゾーンでHTTPサービスの通信を永続的に許可するコマンドとして最も適切なものはどれか。なお、デフォルトゾーンにはtrustedが設定されている。

  1. firewall-cmd --add-service=http --zone=public
  2. firewall-cmd --permanent --add-service=http
  3. firewall-cmd --persistent --zone=public --add-service=http
  4. firewall-cmd --permanent --zone=public --add-service=http

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「4」です。

firewall-cmdコマンドは、firewalldの設定を管理するためのコマンドです。ゾーンやサービスの通信許可・拒否を設定し、永続設定や設定の再読み込みなどを行うために使用します。
firewall-cmdコマンドには、以下のようなオプションがあります。

--zone=<ゾーン名>:操作対象とするゾーンを指定する
--add-service=<サービス名>:指定したサービスからの通信を許可する
--add-port=<ポート>/<プロトコル>:指定したポート/プロトコルからの通信を許可する
--remove-service=<サービス名>:許可されているサービスを削除する
--remove-port=<ポート>/<プロトコル>:許可されているポート/プロトコルを削除する
--permanent (--run,--runtime-to-permanent):恒久設定とする(設定の永続化)
--runtime-to-permanent(--run):ランタイム設定を永続設定へ反映(保存)する
--reload:設定の再読み込みを行う
--list-all:ゾーンに設定されている内容を一覧表示する

firewalldには、ランタイム設定と永続設定の2種類の設定があります。
ランタイム設定は、現在稼働中の firewalld に即時反映される設定であり、 firewall-cmd --reload による設定の再読み込みやシステムの再起動によって失われます。永続設定は設定ファイルとして保存される設定であり、再起動後も設定が維持されます。ただし、永続設定は、設定しただけでは動作中の firewalld には反映されないため、firewall-cmd --reload により反映する必要があります。firewall-cmd コマンドで --permanent を付けて実行すると永続設定を変更し、付けずに実行するとランタイム設定を変更します。また、ランタイム設定を永続設定として保存したい場合は --runtime-to-permanent を使用します。

各選択肢の解説は次の通りです。

1. firewall-cmd --add-service=http --zone=public
誤りです。
この選択肢は、 --zone でpublicゾーンを指定し、 --add-service でHTTP通信を許可する点までは正しいものの、「永続的に」通信を許可するための --permanent オプションが指定されていません。そのため、このコマンドで設定されるHTTP通信許可はランタイム設定となり、 firewall-cmd --reload の実行や systemctl restart firewalld の実行による firewalld サービスの再読み込み・システムの再起動によって、設定は失われます。

2. firewall-cmd --permanent --add-service=http
誤りです。
この選択肢は、 --add-service によりHTTP通信を許可し、 --permanent により永続設定としている点までは正しいものの、publicゾーンを明示的に指定していません。–zone オプションを指定しない場合、コマンドはデフォルトゾーンを対象として実行されます。この問題ではデフォルトゾーンをtrustedに設定しているため、このコマンドを実行すると trusted ゾーンでHTTP通信を永続的に許可する設定が追加されます。しかし、この問題では public ゾーンが対象となっているため、この選択肢は誤りとなります。

3. firewall-cmd --persistent --zone=public --add-service=http
誤りです。
この選択肢は、 --zone で public ゾーンを指定し、 --add-service でHTTP通信を許可する点までは正しいものの、「永続的に」通信を許可するための --permanent オプションが指定されていません。また、指定されている --persistent というオプションは firewall-cmd には存在しないため、このコマンドはエラーとなります。

4. firewall-cmd --permanent --zone=public --add-service=http
正しいです。
この選択肢は、 --zone で public ゾーンを明示的に指定し、 --add-service でHTTP通信を許可しています。また、 --permanent オプションを指定しているため、設定は永続的に保持されます。
以上より、この選択肢は public ゾーンでHTTP通信を永続的に許可するというこの問題の要件をすべて満たしており、正しい選択肢です。

iptablesやfirewalldによるパケットフィルタリングでは、通信を制御するチェインやゾーンの役割、各コマンドやオプションの意味を正しく理解しておくことが重要です。特に、ランタイム設定と永続設定の違いや、設定反映時の挙動を把握し、システムの再起動や設定変更時にも意図した通信制御が維持されるよう適切に管理できるようにしておきましょう。


例題作成者

株式会社デージーネット 経営企画室 大河内 龍馬

ページトップへ