マニュアルページセク ション 1M: システム管理コマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

svc.ipfd(1M)

名前

svc.ipfd - IP フィルタファイアウォール監視デーモン

形式

/lib/svc/bin/svc.ipfd
svc:/network/ipfilter:default

説明

svc.ipfd デーモンは、ファイアウォール構成を使用するサービスに対するアクションを監視し、更新サービスの IP フィルタ構成を開始します。このデーモンにより、システムのファイアウォール構成の変更に対して、システムがサービスレベルごとに増分方式で対応できるようになります。

サービスのファイアウォールポリシーは、有効にされたときにはアクティブ化、無効にされたときには非アクティブ化され、その構成プロパティーグループが変更されたときに更新されます。svc.ipfd は、これらのアクションのサービス管理機能 (SMF) リポジトリを監視し、サービスのファイアウォールポリシーを実行するための IP フィルタ規則生成プロセスを起動します。

このデーモンは、start メソッドまたは refresh メソッドのどちらかを介して、network/ipfilter サービスによって起動されます。そのため、このデーモンはそのメソッドから環境変数と資格情報を継承し、すべてのゾーン特権を持つルートとして実行されます。

ファイアウォールの静的な構成

静的な定義には、サービス固有の IPF 規則を生成するために使用される、そのサービスのネットワークリソース構成が記述されます。サービスごとの firewall_context プロパティーグループには、inetd 管理対象サービス内の inetd プロパティーグループと同様に、サービスの静的な定義が含まれます。このプロパティーグループは、次の値をサポートしています。

firewall_context/name

inetd 以外のサービス用。inetd/name プロパティーと同等の IANA 名または RPC 名です。

firewall_context/isrpc

inetd 以外のサービス用。inetd/isrpc プロパティーと同等のブール型プロパティー。ここで、true 値は RPC サービスを示します。RPC サービスの場合、firewall_context/name の値は IANA 名ではなく、RPC プログラム番号または名前のどちらかです。rpc(4) を参照してください。

さらに、一部のサービスでは、独自の IPF 規則を生成して提供するためのメカニズムが必要になる場合があります。オプションのプロパティー ipf_method は、このようなカスタム規則の生成を可能にするためのメカニズムを提供します。

firewall_context/ipf_method

コマンド。通常は、サービスの IPF 規則を生成するスクリプトです。このフレームワークでは、このプロパティー定義を含むサービスの規則は生成しません。代わりに、これらのサービスが独自の規則を提供するものと想定します。

サービスの ipf_method は、追加の引数である独自の障害管理リソース識別子 (FMRI) を受け取り、そのサービスのファイアウォール規則を生成して標準出力に出力するコマンドを指定します。このフレームワークでは、ipf_method プロパティーを備えたサービスの規則を生成するために、ipf_method で指定された (そのサービスの FMRI を追加の引数として渡す) コマンドを実行し、コマンド出力 (その規則) をサービスの規則ファイルにリダイレクトすることによってそのサービスの規則を格納します。ipf_method は、network/ipfilter start または refresh メソッドプロセスのどちらかのコンテキストから exec で実行されるため、実行コンテキストを継承し、ルートとして実行されます。

サービスの静的な構成はサービス開発者によって提供され、ユーザーによる変更は意図されていません。これらのプロパティーは、更新されたサービス定義のインストール時にのみ変更されます。

ファイアウォールポリシーの構成

サービスごとのプロパティーグループ firewall_config は、そのサービスのファイアウォールポリシー構成を格納します。network/ipfilter:default は、(ipfilter(5) で説明しているように) システム全体のポリシーであるグローバルデフォルトとグローバルオーバーライドの 2 つのファイアウォールポリシーを担当しているため、それぞれのシステム全体のポリシーを格納するために firewall_config_defaultfirewall_config_override の 2 つのプロパティーグループを備えています。

各プロパティー、指定できる値、および対応するセマンティクスは次のとおりです。

policy

policy には、次のモードがあります。

none ポリシーモード

アクセス制限はありません。グローバルポリシーの場合、このモードでは、すべての受信トラフィックを許可します。サービスポリシーの場合、このモードでは、そのサービスへのすべての受信トラフィックを許可します。

deny ポリシーモード

none より制限的なモードです。このモードでは、apply_to プロパティーで指定された発信元を除くすべての発信元からの受信トラフィックを許可します。

allow ポリシーモード

もっとも制限的なモードです。このモードでは、apply_to プロパティーで指定された発信元を除くすべての発信元からの受信トラフィックをブロックします。

custom policy mode

ipfilter サービスは、custom_policy_file プロパティーで指定された ipfilter 構成ファイルを使用します。

apply_to

選択されたポリシーモードを適用するネットワークエンティティーの一覧が示された複数値プロパティー。apply_to プロパティーに示されているエンティティーは、ポリシーが deny の場合は拒否され、ポリシーが allow の場合は許可されます。指定可能な値の構文は次のとおりです。

host:           host:IP                 "host:192.168.84.14"
subnet:         network:IP/netmask      "network:129.168.1.5/24"
ippool:         pool:pool number        "pool:77"
interface:      if:interface_name       "if:e1000g0"
exceptions

apply_to リストから除外されるネットワークエンティティーの一覧が示された複数値プロパティー。たとえば、あるサブネットに deny ポリシーが適用されている場合、そのサブネット内の一部のホストを exceptions プロパティーで指定することによって、それらのホストに例外を設定できます。このプロパティーには、apply_to プロパティーと同じ値の構文があります。

個別のネットワークサービスのみの場合

firewall_config/policy

サービスのポリシーを use_global に設定することもできます。use_global ポリシーモードのサービスは、グローバルデフォルトのファイアウォールポリシーを継承します。

グローバルデフォルトのみの場合

firewall_config_default/policy

svc:/network/ipfilter:default 内のグローバルデフォルトポリシー firewall_config プロパティーグループを custom に設定することもできます。 ユーザーは、policycustom に設定することで、このフレームワークで提供できない既存の IP フィルタ構成やカスタム構成など、事前に設定された IP フィルタ構成を使用できます。このグローバルデフォルトのみのポリシーモードでは、ユーザーは、IPF 規則の完全なセットを含むテキストファイルを設定できます。custom モードが選択されている場合、IPF 規則の指定されたセットは「完全」であり、このフレームワークは構成済みのファイアウォールポリシーから IPF 規則を生成しません。

firewall_config_default/custom_policy_file

グローバルデフォルトポリシーが custom に設定されているときに使用されるファイルパス。このファイルには、目的の IP フィルタ構成を提供する IPF 規則のセットが含まれます。たとえば、/etc/ipf/ipf.conf 内に既存の IPF 規則がある場合、ユーザーは次のコマンドを実行してその既存の規則を使用できます。

  1. カスタムポリシーを設定します。

    # svccfg -s ipfilter:default setprop \
    firewall_config_default/policy = astring: "custom"
  2. カスタムファイルを指定します。

    # svccfg -s ipfilter:default setprop \
    firewall_config_default/custom_policy_file = astring: \
    "/etc/ipf/ipf.conf"
    
    
  3. 構成をリフレッシュします。

    # svcadm refresh ipfilter:default
firewall_config_default/open_ports

受信トラフィックを許可する必要があるサービス以外のプログラムは、ファイアウォールがその通信ポートへのトラフィックを許可するよう要求できます。この複数値プロパティーには、プロトコルとポートの組が次の形式で含まれます。

"{tcp | udp}:{PORT | PORT-PORT}"

最初に、システム全体のポリシーが none に設定され、ネットワークサービスのポリシーが use_global に設定されます。システム全体のポリシーが none で、すべてのサービスがそのポリシーを継承するため、network/ipfilter を有効にすると、IP フィルタ規則の空のセットを備えたファイアウォールが有効になります。より制限的なポリシーを構成するには、svccfg(1M) を使用して、ネットワークサービスとシステム全体のポリシーを変更します。

ユーザーは、サービスの firewall_config プロパティーグループを変更することによってファイアウォールポリシーを構成します。ファイアウォールの管理者特権のユーザーに委譲できるようにするため、新しい承認である solaris.smf.value.firewall.config が作成されます。サービスオペレータの特権を持つユーザーがファイアウォールポリシーを構成できるようにするには、この新しい承認が必要です。

ファイアウォールの使用条件

ブート中、有効になっているサービスが起動する前に、これらのサービスのためにファイアウォールが構成されます。そのため、ブート時にはサービスが保護されます。システムの稼働中は、サービスの再起動、有効化、リフレッシュなどの管理操作により、ファイアウォールが構成されている間に実行されるサービスが短時間脆弱な状態になる可能性があります。

svc.ipfd は、サービスの起動イベントと停止イベントを監視し、SMF がそのサービスを起動または停止するのと同時にサービスのファイアウォールを構成または構成解除します。この 2 つの操作は同時に行われるため、ファイアウォールの構成が完了する前にサービスが起動された場合は、危険にさらされやすい期間が (1 秒未満) 発生する可能性があります。通常、RPC サービスは一時アドレス上で待機しまが、このアドレスはサービスが実際に実行されるまで不明です。したがって、サービスが実行されるまでファイアウォールが構成されないため、RPC サービスは同じように危険にさらされやすい状態になります。

開発者向けドキュメント

リモート機能を提供するサービスは、そのサービスへのネットワークアクセスを制御するために、ファイアウォールフレームワークに参加させることをお勧めします。フレームワークの統合は必須ではありませんが、システム全体のポリシーが構成されている場合、このフレームワークに統合されていないサービスへのリモートアクセスは正しく機能しない可能性があります。

このフレームワークへのサービスの統合は、2 つの追加のプロパティーグループとそれに対応するプロパティーをサービスマニフェスト内で定義するだけで完了します。IP フィルタ規則は、ユーザーがそのサービスを有効にしたときに生成されます。カスタム規則を生成するという重要な状況では、シェルスクリプトが必要になりますが、例として使用できるスクリプトがあらかじめ用意されています。

追加のプロパティーグループである firewall_configfirewall_context はそれぞれ、ファイアウォールポリシーの構成の格納と、静的なファイアウォール定義の提供を行います。新しいプロパティーグループとプロパティー、およびそれに対応するデフォルト値のサマリーを次に示します。

ファイアウォールポリシーの構成

firewall_config

システムへのアクセスは、新しい承認定義とユーザー定義のプロパティータイプによって保護されます。この新しい承認は、次のような方法で、このプロパティーグループの value_authorization プロパティーに割り当てるようにしてください。

<propval name='value_authorization' type='astring'
value='solaris.smf.value.firewall.config' />

サードパーティーは、ユーザー定義タイプを生成するために、サービスシンボル名前空間の規則に従うようにしてください。Sun が提供するサービスでは、com.sun,fw_configuration をプロパティータイプとして使用できます。

詳細については、前述の「ファイアウォールポリシーの構成」を参照してください。

firewall_config/policy

サービスは、デフォルトではグローバルデフォルトのファイアウォールポリシーを継承するため、このプロパティーの初期値は use_global にするようにしてください。

firewall_config/apply_to

空のプロパティー。このプロパティーに初期値はありません。

firewall_config/exceptions

空のプロパティー。このプロパティーに初期値はありません。

ファイアウォールの静的な定義

firewall_context

サードパーティーは、ユーザー定義のタイプを生成するために、サービスシンボル名前空間規則に従うようにしてください。Sun が提供するサービスでは、com.sun,fw_definition をプロパティータイプとして使用できます。

詳細については、前述の「ファイアウォールの静的な構成」を参照してください。

firewall_context/name

IANA で定義された既知のポートを備えたサービスで、getservbyname(3SOCKET) によって取得できます。このプロパティーには、このサービスの IANA 名が格納されています。RPC サービスの場合、このプロパティーには RPC プログラム番号が格納されています。

firewall_context/isrpc

RPC サービスの場合、このプロパティーは値を true に設定して作成するようにしてください。

firewall_context/ipf_method

一般に、指定されたファイアウォールポリシーは、firewall_context/name プロパティーから得られる、サービスの通信ポートに対する IP フィルタ規則を生成するために使用されます。IANA で定義されたポートを備えておらず、RPC サービスではないサービスは、独自の IP フィルタ規則を生成する必要があります。独自の規則を生成するサービスは、firewall_context/name プロパティーと firewall_context/isrpc プロパティーを持たないようにできます。次のサービスを参照してください

svc:/network/ftp:default
svc:/network/nfs/server:default
svc:/network/ntp:default

そのほかに、ipf_method を備えたものもガイダンスとして参照してください。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os, network/ipfilter
インタフェースの安定性
確実

関連項目

svcprop(1), svcs(1), ipf(1M), svcadm(1M), svccfg(1M), getservbyname(3SOCKET), rpc(4), attributes(5), ipfilter(5), smf(5)