ipfwadm(8) IP ファイヤーウォールとアカウント制御の管理

書式

ipfwadm -A コマンド パラメータ [オプション]
ipfwadm -I コマンド パラメータ [オプション]
ipfwadm -O コマンド パラメータ [オプション]
ipfwadm -F コマンド パラメータ [オプション]
ipfwadm -M [ -l | -s ] [オプション]

説明

Ipfwadm は、LinuxカーネルでのIPファイヤーウォールとアカウント制御の規則を 設定・更新および調査するためのものである。 これらの制御規則は4つの種類に分ける事ができる。それらはすなわち、 IPパケットのアカウント制御(accounting of IP packets)、 IP入力ファイヤーウォール(the IP input firewall)、 IP出力ファイヤーウォール(the IP output firewall)、 そしてIP転送ファイヤーウォール(the IP forwarding firewall) である。 これらそれぞれの種類は、それぞれ別の条件リストで制御される。

詳細は ipfw(4) を参照の事。

オプション

ipfwadm で指定可能なオプションはいくつかのグループに分類できる。

CATEGORIES

以下に示すフラグはコマンドに与える条件の種類を指定するのに用いる。:
-A [direction]
IPアカウント規則 オプションとして、 direction(方向) を指定する事ができる (in(入力方向), out(出力方向), or both(双方向)), 指定された入力方向または出力方向のパケットのみがカウントされる。 デフォルトでは both(双方向) である。
-I
IP 入力ファイヤーウォール条件。
-O
IP 出力ファイヤーウォール条件。
-F
IP 転送ファイヤーウォール。
-M
IP マスカレード設定。

この設定は -l (list:リスト) または -s (set timeout values:タイムアウト値設定) コマンドとの組み合わせでのみ使用可能である。

厳密には、これらのオプションのうち一つを必ず指定する事。

COMMANDS

次に示すオプションは実際の動作を指定するものである。 これらのうち一つだけを書式で示された方法でコマンドラインにて指定する。
-a [policy]
設定した条件の最後に一つ以上の条件を追加する。 アカウント条件の設定の場合は、policyの設定を行わない事。 ファイヤーウォール条件の設定の場合は、以下に示すうちの一つを指定する事。 accept(許可), deny(不許可), または reject(拒絶)

ソース(元) とデスティネーション(先)のホスト名が一つ以上の アドレスであった場合はそれらの考えられうる組み合わせが追加される。

-i [policy]
設定した条件の先頭に一つ以上の条件を挿入する。 詳細な書式については -a を参照の事
-d [policy]
設定した条件のうち、一つ以上の条件を削除する。 意味合いとしては追加/挿入コマンドと同じである。 指定するパラメータはすでに追加/挿入したコマンドと全く同じにする事。 異なる場合は不一致となり、その条件は削除されない。 また、最初に一致した条件だけが削除される。
-l
設定した条件の一覧を表示する。 このコマンドは -z (reset counters to zero:カウンタの0リセット)コマンドと 組み合わせて使用できる 。 この場合、パケットとバイトカウンタは、現在の値を表示した直後に リセットされる。 -x オプションを付けないと、パケットとバイトカウンタ(が指定されていれば) は 数値K または 数値M で表示される。 ここで、1Kは1000であり、1Mは1000Kを意味する。(最も近い整数に丸められる) 下記の -e-x のフラグの多くの機能も参照の事。
-z
設定した条件のパケット数とバイト数のカウンタをリセットする。 このコマンドは -l (リスト:list)コマンドとの組み合わせて使用する事が多いであろう。
-f
設定した条件を抹消する。
-p policy
選択したファイヤーウォールタイプのデフォルトの"policy"を変更する。 与えるべき"policy"は acceptdeny、 または reject の内の一つでなければならない。 デフォルト"policy"は一致する条件がない場合に使用する。 この設定はIPファイヤーウォールにのみ有効である。よって下記の -I-O、 または -F のフラグとの組み合わせで使用する。
-s tcp tcpfin udp
IPマスカレードで使用するタイムアウト値を変更する。 このコマンドは常に3つのパラメータをとり、それらはそれぞれ 秒の単位でTCPセション、FINパケットを受けた後のTCPセション、 UDPパケットのタイムアウト値を記述する。 タイムアウト値として0を指定した場合は、現在そのエントリで 使用している値がそのまま引き継がれる。 この設定は、 -M フラグとの組み合わせでのみ有効である。
-c
選択したファイヤーウォールにおいて、このIPパケットがaccept(許可)、 deny (不許可)、またはreject (拒絶)であるかどうかを確認する。 この設定は、 -I, -O, または -F フラグとの組み合わせでのみ有効である。
-h
Help(ヘルプ)である。 コマンドの記法を(現在は非常に簡単に)表示する。

PARAMETERS

以下に示すパラメータはappend(追加)、insert(挿入)、delete(削除) またはcheck(確認)と組み合わせて使用可能である。
-P protocol
設定条件または確認すべきパケットのプロトコルを示す。 記述する事ができるプロトコルとしては tcpudpicmp、 または all(全て) のプロトコルのうちの一つである。 all を指定した場合はこのオプションが省略されている場合にとりうる すべてのプロトコルが対象になる。 All はcheck(確認)コマンドとの組み合わせで用いる事はないであろう。
-S address[/mask] [port ...]
ソースの指定(オプション)。 Address はhost名、ネットワーク名およびIPアドレスによる指定が可能である。 mask はネットワークマスクによる指定と数値による指定が可能であり、 数値による指定は左側からのネットマスクビット数を指定する。 よって、マスク値 24255.255.255.0 と等価である。

ソースは一つ以上のポートまたはICMPタイプを含む。 それぞれの指定はservice名、port番号、または(数値での)ICMP タイプで指定できる。 この章の残りの部分で記述する port は、port番号またはICMPタイプを示す。 これらの指定の内、port番号の範囲を指定する場合は、 port:port と、記述する。 さらに、ソース(元)とデスティネーション(先)の指定できる合計port 数は IP_FW_MAX_PORTS (現状 10)を超えてはならない。 ここで、portの範囲指定の場合は2と数える。

TCP、UDPまたはICMPパケットの「最初のフラグメントでない」部分は常に ファイヤーウォールに許可される。 アカウント制御においては、これらの二番目以降のフラグメントは 特別に扱われ、種々の方法でカウントできる。 port番号0xFFFF(65535)が二番目以降のTCPまたはUDPパケットとして 扱われる。 これらのport番号0xFFFFのパケットはアカウント目的で用いられる。 0xFF (255)はICMPパケットの二番目以降に相当するものとして扱われる。 また、ICMPタイプが0xFFのパケットはアカウント目的で用いられる。 注意すべきは、記述したコマンドやプロトコルは、portを暗黙に制限する。 portは下記プロトコルとの組み合わせで使用する。 tcpudp、 または icmp

このオプションが省略された場合は、デフォルトのアドレス/ネットマスクとして 0.0.0.0/0 (すべてのアドレスに適合するもの)がソースアドレスとして使用される。 チェックコマンドにおいてはこのオプションが必須であり、必ず1つのポートが 指定されていなければならない。

-D address[/mask] [port ...]
デスティネーション(先)を指定する。(オプション) 記法の詳細に関しては -S 記法、省略時標準値、その他の指定項目については(source:ソース)フラグの項を 参照の事。 注意すべきは、ICMPタイプは -D フラグとの組み合わせでは使用できない。すなわち、 -S フラグの後に指定する事。
-V address
オプションとして、パケットが受け取られるまたは送られる時に 経由するインタフェースのアドレスを指定する。 Address はhost名でも数値によるIPアドレスでもよい。 host名が指定された場合は、ただ一つのIPアドレスに割り当てられる。 このオプションが省略された場合は、アドレスは 0.0.0.0 が仮定され、特別にどのインタフェースアドレスも適合される。 チェックコマンドにおいてはこのオプションが必須である。
-W name
オプションとして、パケットが受け取られるまたは送られる時に 経由するインタフェースの名前を指定する。 このオプションが省略された場合は、名前はempty string(空文字列)が 仮定され、特別にどのインタフェース名も適合される。 チェックコマンドにおいてはこのオプションが必須である。

OTHER OPTIONS

以下に示すオプションが使用可能である。
-b
Bidirectional(双方向)モード。

指定した条件を双方向のIPパケットに適合する。 このオプションはappend(追加)、insert(挿入)またはdelete(削除) コマンドと組み合わせて使用可能である。

-e
Extended output(拡張出力)。 このオプションを指定するとlist(リスト)コマンドでの出力で インタフェースと(もしあれば)設定条件を表示する。 ファイヤーウォールリストにおいては、パケットとバイトカウンタ値 (デフォルトの状態では、アカウント制御を行っているバイトカウンタ値 のみが表示される)およびTOSマスクを出力する。 -M との組み合わせで使用した場合は、delta sequence numbersに関連した 情報が表示される。 このオプションはlist(リスト)コマンドとの組み合わせでのみ有効である。
-k
TCPパケットのACKビットがセットされているもののみ適合する。 (このオプションは他のプロトコルでは無視される) このオプションはappend(追加)、insert(挿入)またはdelete(削除) コマンドと組み合わせて使用可能である。
-m
転送用のマスカレードパケットの許可。

このオプションを指定した場合、パケットがローカルホストからの ものであればマスカレードパケットとして扱われる。 さらに、逆向きのパケットは自動的に逆マスカレードパケットとして 扱われ、ファイヤーウォールをバイパスする。 このオプションは、転送ファイヤーウォールの場合で"policy"として accept (またはデフォルトの"policy"として accept が指定されている場合)に使用可能で、さらにカーネルコンパイル時に

CONFIG_IP_MASQUERADE が定義されていなければならない。

-n
Numeric output(数値での出力)。 IPアドレスとport番号を数値で表示する。 デフォルトでは、それらを(できるならば)host名、ネットワーク名 およびservice名で表示する。
-o
適合したパケットに対するカーネルロギングを行う。 ある条件に対してこのオプションを設定するとLinuxカーネルは 適合したパケット(IPヘッダフィールドのほとんど)の情報を printk() 関数を使って出力する。 このオプションはLinuxカーネルコンパイル時に CONFIG_IP_FIREWALL_VERBOSE を定義した場合に有効である。 このオプションはappend(追加)、insert(挿入)またはdelete(削除) コマンドと組み合わせでのみ有効である。
-r [port]
ローカルソケットにリダイレクトする。 このオプションが設定されている場合は、もしそのパケットがリモートの ホストから送られたものであってもこの条件にしたがってローカルの ソケットにリダイレクトされる。 リダイレクトを行うポート番号が0の場合(デフォルトである)は、 そのパケットのデスティネーションポートがリダイレクトされる ポートとして用いられる。

このオプションは、入力ファイヤーウォールの場合で"policy"として accept が指定されている場合に使用可能で、さらにカーネルコンパイル時に CONFIG_IP_TRANSPARENT_PROXY が定義されていなければならない。

-t andmask xormask
IPヘッダのTOSフィールドを改変するときに用いるマスク (マスカレードの有無に関わらず)ファイヤーウォールの条件により パケットが許可された場合に、そのパケットのTOSフィールドに対して 初めに指定したマスク値とビット毎にAND(論理積)し、さらにその結果に 対して次のマスク値とビット毎にXOR(排他的論理和)を行う。 それぞれのマスクは16進数の8ビットで指定する。 このオプションはappend(追加)、insert(挿入)またはdelete(削除) コマンドと組み合わせてでのみ有効であり、アカウント制御や、 reject(拒絶)やdeny(不許可)のファイヤーウォール制御のコマンド時には 意味を持たない。
-v
Verbose output(詳細出力)。

条件やパケットの追加、削除および確認において詳細情報を出力する。 このオプションはappend(追加)、insert(挿入)、delete(削除) またはcheck(確認)コマンドと組み合わせでのみ有効である。

-x
Expand numbers(拡張数値出力)。 パケット数およびバイトカウンタ値の出力において、K(1000倍)や M(1000K倍)といった丸めた値ではなく、正確な値を出力する。 このオプションはカウント値が出力される場合にのみ有効である。 (オプション -e 参照の事)。
-y
TCPパケットのSYNビットがセットされており、ACKビットがリセット されているもののみ適合する。 (このオプションは他のプロトコルでは無視される) このオプションはappend(追加)、insert(挿入)またはdelete(削除) コマンドと組み合わせて使用可能である。

ファイル

/proc/net/ip_acct
/proc/net/ip_input
/proc/net/ip_output
/proc/net/ip_forward
/proc/net/ip_masquerade

著者

Jos Vos <[email protected]>
X/OS Experts in Open Systems BV, Amsterdam, The Netherlands

訳者

柴田 (ひ) 尚明 <[email protected]> 1997/02/15 ver. 0.0