Solaris のシステム管理 (IP サービス)

Oracle Solaris IP フィルタのパケットフィルタリング機能の使用

パケットフィルタリング規則セットを使用して、パケットのフィルタリングを設定します。ipf コマンドで、パケットフィルタリング規則セットを処理します。ipf コマンドの詳細については、ipf(1M) コマンドを参照してください。

パケットフィルタリング規則は、ipf コマンドによってコマンド行で作成することも、パケットフィルタリングの構成ファイル内で作成することもできます。起動時にパケットフィルタリング規則をロードする場合は、パケットフィルタリング規則を保存する /etc/ipf/ipf.conf という構成ファイルを作成します。 起動時にパケットフィルタリング規則をロードしない場合は、適当な場所に ipf.conf ファイルを保存し、 ipf コマンドによってパケットフィルタリングを手動でアクティブ化します。

Oracle Solaris IP フィルタには、アクティブ規則セットと非アクティブ規則セットの 2 つのパケットフィルタリング規則セットを格納できます。大部分の場合、作業ではアクティブ規則セットを使用します。ただし、ipf -I コマンドを使用すると、コマンドアクションを非アクティブ規則リストに適用できます。非アクティブ規則リストは、ユーザーが選択しない限り、Oracle Solaris IP フィルタによって使用されることはありません。非アクティブ規則リストによって、アクティブなパケットのフィルタリングに影響を与えずに、規則を保存できます。

Oracle Solaris IP フィルタは、パケットを通過させる、またはブロックする前に、設定された規則リストの最初から最後まで規則を処理します。Oracle Solaris IP フィルタは、パケットを通過させるかどうかを決めるフラグを格納しています。フラグは、規則セット全体を調べ、最後に一致した規則を基にパケットを通過させるか、ブロックするかを決定します。

このプロセスには、2 つの例外があります。最初の例外は、パケットが quick キーワードを含む規則に一致した場合です。規則が quick キーワードを含む場合は、その規則に対する処理が実行され、それ以降の規則はチェックされません。2 番目の例外は、パケットが group キーワードを含む規則に一致した場合です。パケットがグループに一致すると、グループでタグ付けされた規則だけがチェックされます。

パケットのフィルタリング規則の構成

パケットのフィルタリング規則を作成するには、次の構文を使用します。

action [in|out] option keyword, keyword...

  1. 各規則がアクションを開始します。Oracle Solaris IP フィルタは、パケットが規則に一致する場合、アクションを実行します。次の一覧に、パケットに対して実行される一般的なアクションを示します。

    block

    パケットはフィルタを通過できません。

    pass

    パケットはフィルタを通過します。

    log

    パケットをロギングしますが、パケットをブロックするか、通過させるかの決定は行いません。ログを参照するには、ipmon コマンドを使用します。

    count

    フィルタの統計にパケットを含めます。統計を参照するには、 ipfstat コマンドを使用します。

    skip number

    フィルタは number フィルタリング規則をスキップします。

    auth

    パケット情報を確認するユーザープログラムが実行するパケット認証を要求します。このプログラムは、パケットを通過させるか、ブロックするかを決定します。

    preauth

    パケットの処理を決定するにあたって、フィルタが事前認証リストを参照するように要求します。

  2. アクション後の出力は、in または out のはずです。ユーザーの選択により、パケットのフィルタリング規則が、受信パケットと発信パケットのどちらに適用されるのかが決定されます。

  3. 次に、オプションの一覧からオプションを選択します。複数のオプションを使用する場合は、次の順序で使用してください。

    log

    規則が最後に一致した規則の場合、パケットをロギングします。ログを参照するには、ipmon コマンドを使用します。

    quick

    パケットが一致した場合、quick オプションを含む規則を実行します。これ以上の規則チェックは行われません。

    on interface-name

    パケットが指定したインタフェースを出入りする場合だけ、規則を適用します。

    dup-to interface-name

    パケットをコピーし、interface-name 上の複製を任意で指定した IP アドレスに送信します。

    to interface-name

    パケットを interface-name の出力キューに移動します。

  4. オプションの指定後、パケットが規則に一致するかどうかを決定するさまざまなキーワードを選択できます。次のキーワードは、以下の順序で使用してください。


    注 –

    デフォルトでは、構成ファイルのいずれの規則にも一致しないパケットは、すべてフィルタを通過します。


    tos

    16 進数または 10 進数の整数で表されたサービスタイプの値を基に、パケットをフィルタリングします。

    ttl

    生存期間の値を基に、パケットの一致を取ります。パケットに保存されている生存期間の値は、破棄される前にパケットがネットワーク上に存在できる期間を示します。

    proto

    特定のプロトコルに対して一致を取ります。/etc/protocols ファイルに指定されている任意のプロトコル名を使用したり、そのプロトコルを表す 10 進数の数を指定したりできます。キーワード tcp/udp は、TCP または UDP パケットとの一致を取るために使用できます。

    from/to/all/ any

    発信元 IP アドレス、宛先 IP アドレス およびポート番号のいずれか、 またはすべてに対して一致を取ります。all キーワードは、すべての発信元からのパケットおよびすべての宛先へのパケットを受諾するために使用します。

    with

    パケットに関連する指定された属性に対して一致を取ります。オプションがない場合にパケットを一致させるには、キーワードの前に not または no と記述します。

    flags

    設定されている TCP フラグを基にフィルタリングを行う TCP で使用します。TCP フラグについては、ipf(4) のマニュアルページを参照してください。

    icmp-type

    ICMP のタイプによってフィルタリングを行います。このキーワードは proto オプションが icmp に設定されているときに使用され、flags オプションが指定されているときは使用されません。

    keep keep-options

    保存しておくパケットの情報を決定します。使用可能な keep-options には、state オプションと frags オプションなどがあります。state オプションは、セッションに関する情報を、TCP、UDP、および ICMP パケットで保存できます。frags オプションは、パケットのフラグメントに関する情報を保存し、後のフラグメントにその情報を適用します。keep-options は、一致したパケットをアクセス制御リストのチェックなしで、通過させます。

    head number

    番号 number で指定されるフィルタリング規則に対して、新しいグループを作成します。

    group number

    デフォルトグループではなく、グループ番号 number のグループに規則を追加します。ほかのグループを指定しない場合は、すべてのフィルタリング規則がグループ 0 に保存されます。

次の例は、規則を作成するためにパケットのフィルタリング規則構文をまとめる方法を示しています。IP アドレス 192.168.0.0/16 からの受信トラフィックをブロックするには、規則リストに次の規則を含めます。


block in quick from 192.168.0.0/16 to any

パケットフィルタリング規則を記述するときの詳細な文法および構文については、ipf(4) のマニュアルページを参照してください。パケットのフィルタリングに関する作業については、「Oracle Solaris IP フィルタのパケットフィルタリング規則セットの管理」を参照してください。この例の IP アドレススキーム (192.168.0.0/16 ) については、 第 2 章TCP/IP ネットワークの計画 (手順)を参照してください。