Reviewed by: Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: horikawa@jp.freebsd.org
		
			
				
	
	
		
			510 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			510 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .Dd July 20, 1996
 | |
| .\" jpman %Id: ipfw.8,v 1.4 1997/05/19 17:19:51 horikawa Stab %
 | |
| .Dt IPFW 8 SMM
 | |
| .Os FreeBSD
 | |
| .Sh 名称
 | |
| .Nm ipfw
 | |
| .Nd IPファイアウォール制御ユーティリィティ
 | |
| .Sh 書式
 | |
| .Nm
 | |
| .Ar file
 | |
| .Nm ipfw
 | |
| .Oo
 | |
| .Fl f
 | |
| |
 | |
| .Fl q
 | |
| .Oc
 | |
| flush
 | |
| .Nm ipfw
 | |
| .Oo
 | |
| .Fl q
 | |
| .Oc
 | |
| zero
 | |
| .Op Ar number ...
 | |
| .Nm ipfw
 | |
| delete
 | |
| .Ar number ...
 | |
| .Nm ipfw
 | |
| .Op Fl aftN
 | |
| list
 | |
| .Op Ar number ...
 | |
| .Nm ipfw
 | |
| .Oo
 | |
| .Fl ftN
 | |
| .Oc
 | |
| show
 | |
| .Op Ar number ...
 | |
| .Nm ipfw
 | |
| .Oo
 | |
| .Fl q
 | |
| .Oc
 | |
| add
 | |
| .Op Ar number
 | |
| .Ar action 
 | |
| .Op log
 | |
| .Ar proto
 | |
| from
 | |
| .Ar src
 | |
| to
 | |
| .Ar dst
 | |
| .Op via Ar name | ipno
 | |
| .Op Ar options
 | |
| .Sh 解説
 | |
| 書式の 1 行目のようにファイル名を指定した場合は、
 | |
| .Ar file
 | |
| を 1 行ずつ、引数として読み込みます。
 | |
| .Pp
 | |
| .Nm
 | |
| はパケットごとに、マッチするルールが見つかるまでルールリストを調べます。
 | |
| 各ルールにはパケット数とパケットサイズの 2 つのカウンタが用意されていて、
 | |
| パケットがマッチするとカウンタ値は更新されます。
 | |
| .Pp
 | |
| 全ルールは 1 から 65534 の範囲の行番号で順序付けられます。この番号によって
 | |
| ルールの並べ変えと削除を行ないます。
 | |
| ルールのマッチングは昇順で行なわれ、最初にマッチしたものが適用されます。
 | |
| 複数のルールが同じ番号を共有することも可能です。この場合はルールが追加された
 | |
| 順序でマッチングが行なわれます。
 | |
| .Pp
 | |
| 番号を指定せずにルールを追加した場合は、直前のルールの番号に 100 を加えたものと
 | |
| なります。
 | |
| ルールの番号が 65434 より大きい場合は、新しいルールは最後のルールに追加されます
 | |
| 。
 | |
| .Pp
 | |
| delete 操作は
 | |
| .Ar number 
 | |
| で指定された番号を持つ最初のルールを、もし有れば、削除します。
 | |
| .Pp
 | |
| list 操作は現在のルール一覧を出力します。
 | |
| .Pp
 | |
| show 操作は `ipfw -a list' と同じ結果を出力します。
 | |
| .Pp
 | |
| zero 操作は
 | |
| .Ar number
 | |
| で指定された番号を持つルールのカウンタをクリアします。
 | |
| .Pp
 | |
| flush 操作は全ルールを削除します。
 | |
| .Pp
 | |
| 記号 `#' で始まる行および空行は無視されます。
 | |
| .Pp
 | |
| どんな場合でも次のルールは存在します:
 | |
| .Bd -literal -offset center
 | |
| 65535 deny all from any to any
 | |
| .Ed
 | |
| .Pp
 | |
| 全パケットを拒否するのがデフォルトのポリシーです。
 | |
| これを修正し、必要なルールを設定して下さい。
 | |
| .Pp
 | |
| オプションは以下のものが利用可能です。
 | |
| .Bl -tag -width flag
 | |
| .It Fl a
 | |
| list 操作の時、カウンタの値を表示します。
 | |
| show の項を参照のこと。
 | |
| .It Fl f
 | |
| 操作を実行する際に確認メッセージを表示しません。
 | |
| flush 操作も無条件に実行されます。
 | |
| .Ar (注意)
 | |
| プロセスに tty が関連付けられていない場合には、
 | |
| このオプションが指定されているものとして実行されます。
 | |
| .It Fl q
 | |
| ルールを add, zero, flush する際に、メッセージの出力を抑制します
 | |
| ('-f' も含まれます)。
 | |
| このオプションは、リモートログインセッションでルールを調整する際に、
 | |
| (例えば sh /etc/rc.firewall のようにして)スクリプトの中から複数の ipfw コマンド
 | |
| を
 | |
| 実行する場合や、
 | |
| 多数の ipfw ルールを記述したファイルを用いる場合に
 | |
| 便利です。
 | |
| flush 操作が通常の(冗舌な)状態で実行されると、メッセージが出力されます。
 | |
| ここで、すべてのルールは削除されるので、メッセージをログインセッションに
 | |
| 送ることができず、ログインセッションがクローズされてしまうので、
 | |
| 残りのルールセットは実行されません。
 | |
| この状態を修復するにはコンソールへのアクセスが必要となります。
 | |
| .It Fl t
 | |
| list 操作の時に、最後にマッチしたパケットのタイムスタンプを表示します。
 | |
| .It Fl N
 | |
| IPアドレスとサービス名をリゾルブしてホスト名で表示します。
 | |
| .El
 | |
| .Pp
 | |
| .Ar action :
 | |
| .Bl -hang -offset flag -width 1234567890123456
 | |
| .It Ar allow
 | |
| マッチするパケットを通過させ、マッチングを終了します。
 | |
| .Ar pass ,
 | |
| .Ar permit ,
 | |
| .Ar accept
 | |
| と同じです。
 | |
| .It Ar deny
 | |
| マッチするパケットを破棄し、マッチングを終了します。
 | |
| .Ar drop
 | |
| は
 | |
| .Ar deny
 | |
| と同じです。
 | |
| .It Ar reject
 | |
| (パケットを送らないよう嘆願) マッチするパケットを破棄し、
 | |
| ICMP の host unreachable を送信して、終了します。
 | |
| .It Ar unreach code
 | |
| パケットを破棄し、ICMP の unreachable に
 | |
| .Ar code
 | |
| を付けて送信します。
 | |
| .Ar code
 | |
| は、 0 から 256 までの数字、もしくは、以下に列挙する別名のいずれかです:
 | |
| .Ar net,
 | |
| .Ar host ,
 | |
| .Ar protocol ,
 | |
| .Ar port ,
 | |
| .Ar needfrag ,
 | |
| .Ar srcfail ,
 | |
| .Ar net-unknown ,
 | |
| .Ar host-unknown ,
 | |
| .Ar isolated ,
 | |
| .Ar net-prohib ,
 | |
| .Ar host-prohib ,
 | |
| .Ar tosnet ,
 | |
| .Ar toshost ,
 | |
| .Ar filter-prohib ,
 | |
| .Ar host-precedence ,
 | |
| .Ar precedence-cutoff
 | |
| 。送信後、終了します。
 | |
| .It Ar reset
 | |
| TCP パケットのみに対応。
 | |
| パケットを破棄し、TCP の (RST) を送信し、終了します。
 | |
| .It Ar count
 | |
| マッチするパケットのカウンタを更新し、引続きマッチングを行ないます。
 | |
| .It Ar divert port
 | |
| マッチするパケットを
 | |
| .Ar port 
 | |
| で指定されたポートにバインドされている
 | |
| .Xr divert 4
 | |
| ソケットに送り、マッチングを終了します。
 | |
| .It Ar tee port
 | |
| マッチするパケットのコピーを
 | |
| .Ar port
 | |
| で指定されたポートにバインドされている
 | |
| .Xr divert 4
 | |
| ソケットに送り、引続きマッチングを行ないます。
 | |
| .It Ar skipto number
 | |
| .Ar number
 | |
| より小さな番号のルールを飛び越して、
 | |
| .Ar number
 | |
| 以上の番号のルールで最初に存在するものから、マッチングを継続します。
 | |
| .El
 | |
| .Pp
 | |
| パケットが
 | |
| .Ar divert
 | |
| や
 | |
| .Ar tee
 | |
| のどちらかひとつ以上、もしくは両方の組合せの、複数のルールにマッチした場合、
 | |
| 最後のものを除き、無視します。
 | |
| .Pp
 | |
| カーネルが
 | |
| .Dv IPFIREWALL_VERBOSE
 | |
| オプション付きでコンパイルされている場合に、``log'' が指定されているルールと
 | |
| マッチした時は、メッセージをコンソールに表示します。
 | |
| もし、
 | |
| .Dv IPFIREWALL_VERBOSE_LIMIT
 | |
| オプション付きでコンパイルされている場合、一連のルールに対し指定されたパケット
 | |
| 数を受信した後、メッセージの表示を中止します。
 | |
| パケットのカウンタをクリアすれば再びメッセージを出力します。
 | |
| .Pp
 | |
| コンソールへの表示とその制限数は、
 | |
| .Xr sysctl 8
 | |
| を通し、直接設定できます。
 | |
| .Pp
 | |
| .Ar proto :
 | |
| .Bl -hang -offset flag -width 1234567890123456
 | |
| .It Ar ip
 | |
| 全パケットがマッチします。別名
 | |
| .Ar all
 | |
| も使えます。
 | |
| .It Ar tcp
 | |
| TCP パケットのみマッチします。
 | |
| .It Ar udp
 | |
| UDP パケットのみマッチします。
 | |
| .It Ar icmp
 | |
| ICMP パケットのみマッチします。
 | |
| .It Ar <number|name>
 | |
| 指定されたプロトコルのパケットのみマッチします (
 | |
| .Pa /etc/protocols
 | |
| のリストを参照の事)
 | |
| .El
 | |
| .Pp
 | |
| .Ar src 
 | |
| と
 | |
| .Ar dst :
 | |
| .Pp
 | |
| .Bl -hang -offset flag
 | |
| .It Ar <address/mask>
 | |
| .Op Ar ports
 | |
| .El
 | |
| .Pp
 | |
| .Em <address/mask>
 | |
| は以下のように指定できます。
 | |
| .Bl -hang -offset flag -width 1234567890123456
 | |
| .It Ar ipno
 | |
| IP番号を 1.2.3.4 の形式で指定します。指定されたアドレスのみがマッチします。
 | |
| .It Ar ipno/bits
 | |
| IP番号とネットマスクの幅を 1.2.3.4/24 の形式で指定します。
 | |
| この場合は 1.2.3.0 から 1.2.3.255 のアドレスがマッチします。
 | |
| .It Ar ipno:mask
 | |
| IP番号とネットマスクの幅を 1.2.3.4:255.255.240.0 の形式で指定します。
 | |
| この場合は 1.2.0.0 から 1.2.15.255 のアドレスがマッチします。
 | |
| .El
 | |
| .Pp
 | |
| アドレスの前に ``not'' を付けることによって、マッチの意味を反転させる
 | |
| ことができます(指定されたアドレス以外の総てのアドレスがマッチします)。
 | |
| これはポート番号には影響しません。
 | |
| .Pp
 | |
| TCP と UDP ではさらに、
 | |
| .Em ports
 | |
| を以下のように指定できます。
 | |
| .Pp
 | |
| .Bl -hang -offset flag
 | |
| .It Ns {port|port-port} Ns Op ,port Ns Op ,...
 | |
| .El
 | |
| .Pp
 | |
| ポート番号の代わりに(ファイル
 | |
| .Pa /etc/services
 | |
| から取った)サービス名を使用できます。
 | |
| port-port の書式で、最初の値に限り範囲指定できます。
 | |
| 列挙出来るポート数は  
 | |
| .Pa /usr/src/sys/netinet/ip_fw.h 
 | |
| で
 | |
| .Dv IP_FW_MAX_PORTS
 | |
| として定義されています。
 | |
| .Pp
 | |
| 断片化されたパケットでオフセットが非 0 のもの
 | |
| (すなわち、最初の断片ではないもの) は、
 | |
| 一つ以上のポート仕様を持つルールにはマッチしません。?
 | |
| 断片化されたパケットへのマッチングに関する詳細は
 | |
| .Ar frag
 | |
| オプションを参照してください。
 | |
| .Pp
 | |
| マッチングのルールは、入ってくるパケットか、出ていくパケット、もしくはその両方
 | |
| に対し適応されます。
 | |
| .Ar in
 | |
| を指定すれば、入ってくるパケットのみにルールを適応します。
 | |
| .Ar out
 | |
| を指定すれば、出ていくパケットのみに適応します。
 | |
| .Pp
 | |
| 特定のインタフェースを通過するパケットには、
 | |
| .Ar via
 | |
| を用いてインタフェースを指定します:
 | |
| .Bl -hang -offset flag -width 1234567890123456
 | |
| .It Ar via ifX
 | |
| .Ar ifX
 | |
| を通過するパケットを指定します。
 | |
| .It Ar via if*
 | |
| .Ar ifX
 | |
| を通過するパケットを指定します。X はいずれかのユニットの番号です。
 | |
| .It Ar via any
 | |
| .Em いずれか
 | |
| のインタフェースを通過するパケットを指定します。
 | |
| .It Ar via ipno
 | |
| IP アドレスが
 | |
| .Ar ipno
 | |
| のインタフェースを通過するパケットを指定します。
 | |
| .El
 | |
| .Pp
 | |
| .Ar via
 | |
| を用いると、常時指定されたインタフェースがチェックされます。
 | |
| .Ar recv
 | |
| や
 | |
| .Ar xmit
 | |
| を、
 | |
| .Ar via
 | |
| の代わりに指定すると、
 | |
| 受信、もしくは送信インタフェースのみが(各々に)チェックされます。
 | |
| 両方を指定すれば、
 | |
| 受信と送信の両方のインタフェースを通るパケットを指定できます。
 | |
| 例 :
 | |
| .Pp
 | |
| .Dl "ipfw add 100 deny ip from any to any out recv ed0 xmit ed1"
 | |
| .Pp
 | |
| .Ar recv
 | |
| で指定したインタフェースでは、受信と送信、両方のパケットをチェックできます。
 | |
| それに対し、
 | |
| .Ar xmit
 | |
| で指定したインタフェースでは、送信パケットのみとなります。
 | |
| それゆえに、
 | |
| .Ar xmit
 | |
| を指定すると
 | |
| .Ar out
 | |
| が、必須です(
 | |
| .Ar in
 | |
| は不可)。
 | |
| .Ar via
 | |
| と共に
 | |
| .Ar xmit
 | |
| もしくは、
 | |
| .Ar recv
 | |
| を指定する事はできません。
 | |
| .Pp
 | |
| 個々のパケットは、受信用ないし送信用インタフェースを持たないかもしれません。
 | |
| ローカルホストで発生したパケットには受信用のインタフェースはないし、
 | |
| ローカルホスト内宛のパケットは、送信用インタフェースが有りません。
 | |
| .Pp
 | |
| 追加用
 | |
| .Ar options :
 | |
| .Bl -hang -offset flag -width 1234567890123456
 | |
| .It frag
 | |
| パケットが断片(フラグメント)化されたデータグラムの一部で、かつデータグラムの
 | |
| 先頭の断片でない場合にマッチします。
 | |
| .Ar frag
 | |
| を、
 | |
| .Ar tcpflags
 | |
| や TCP/UDP ポート仕様と共に使用することはできません。
 | |
| .It in
 | |
| ネットワークから受信したパケットのみマッチします。
 | |
| .It out
 | |
| ネットワークへ送信するパケットのみマッチします。
 | |
| .It ipoptions Ar spec
 | |
| IP ヘッダが、
 | |
| .Ar spec 
 | |
| に指定されたコンマで区切られたオプションのリストを含む場合にのみマッチします。
 | |
| サポートされている IP オプションは
 | |
| .Ar ssrr 
 | |
| (strict source route),
 | |
| .Ar lsrr 
 | |
| (loose source route),
 | |
| .Ar rr 
 | |
| (record packet route),
 | |
| .Ar ts 
 | |
| (timestamp) です。
 | |
| ``!'' によって、特定のオプションを含めないよう指定できます。
 | |
| .It established
 | |
| RST または ACK ビットがセットされているパケットのみマッチします。
 | |
| このビットがセットされることがあるのは TCP のパケットのみです。
 | |
| .It setup
 | |
| SYN ビットがセットされ ACK がセットされていないパケットのみマッチします。
 | |
| このビットがセットされることがあるのは TCP のパケットのみです。
 | |
| .It tcpflags Ar spec
 | |
| TCP ヘッダが
 | |
| .Ar spec 
 | |
| に指定されたコンマで区切られたフラグのリストを含む場合にのみマッチします。
 | |
| サポートされているフラグは、
 | |
| .Ar fin ,
 | |
| .Ar syn ,
 | |
| .Ar rst ,
 | |
| .Ar psh ,
 | |
| .Ar ack ,
 | |
| .Ar urg 
 | |
| です。
 | |
| ``!'' によって、特定のフラグを含めないよう指定できます。
 | |
| .Ar tcpflags
 | |
| 仕様を含むルールは非 0 のオフセットを持つ断片化されたパケットに
 | |
| マッチすることはありません。
 | |
| 断片化されたパケットに関するマッチについての詳細は
 | |
| .Ar frag
 | |
| オプションを参照してください。
 | |
| .It icmptypes Ar types
 | |
| ICMP タイプが
 | |
| .Ar types 
 | |
| で指定されたリスト中に存在する場合にのみ適用されるルールとなります。
 | |
| リストはレンジの組み合わせでも、各タイプをコンマで区切ったものでもどちらでも
 | |
| かまいません。
 | |
| .El
 | |
| .Sh チェックリスト
 | |
| ルールを構成する際に考慮すべき重要な点を述べます。
 | |
| .Bl -bullet -hang -offset flag 
 | |
| .It 
 | |
| かならず送信パケットと受信パケットの両方のパケットをフィルタリングします。
 | |
| ほとんどのネットワークコネクションではパケットが双方向に流れることが必要です。
 | |
| .It
 | |
| テストは細心の注意を払って行ないます。テストの際にはコンソールの近くにいる
 | |
| のがよいでしょう。
 | |
| .It
 | |
| ループバックインタフェースのことを忘れてはなりません。
 | |
| .El
 | |
| .Sh 長所
 | |
| ファイアウォールが常に破棄するパケットが 1 種類あります。
 | |
| フラグメントオフセットが 1 のフラグメントパケットです。
 | |
| これはパケットとしては有効なものですが、利用目的はファイアウォールを
 | |
| かいくぐることしかありません。
 | |
| .Pp
 | |
| ネットワーク越しにログインしている場合、LKM 版の
 | |
| .Nm
 | |
| をロードすることはそれほど単純なことではありません。
 | |
| 以下のコマンドを奨めます。
 | |
| .Bd -literal -offset center
 | |
| modload /lkm/ipfw_mod.o && \e
 | |
| ipfw add 32000 allow all from any to any
 | |
| .Ed
 | |
| .Pp
 | |
| これに引続き、同じような状況で
 | |
| .Bd -literal -offset center
 | |
| ipfw flush
 | |
| .Ed
 | |
| .Pp
 | |
| とするのは良くありません。
 | |
| .Sh パケットの行き先変更
 | |
| 指定されたポートを見ているソケットは、そのポートへ行き先変更されたパケットを、
 | |
| 全部受けとります。
 | |
| .Xr divert 4 
 | |
| を参照して下さい。ポートを見ているソケットがない場合やカーネルがパケットの行き
 | |
| 先変更をサポートするようにはコンパイルされていない場合、パケットは破棄されます
 | |
| 。
 | |
| .Sh 使用例
 | |
| 次のコマンドは
 | |
| .Em hacker.evil.org
 | |
| から
 | |
| .Em wolf.tambov.su
 | |
| の telnet ポートへ送られる全ての TCP パケットを拒否するルールを追加します。
 | |
| .Pp
 | |
| .Dl ipfw add deny tcp from hacker.evil.org to wolf.tambov.su 23
 | |
| .Pp 
 | |
| 次のコマンドはネットワーク hackers からホスト my への全てのコネクションを
 | |
| 拒否します。
 | |
| .Pp
 | |
| .Dl ipfw add deny all from 123.45.67.0/24 to my.host.org
 | |
| .Pp
 | |
| 次はカウントされている情報とタイムスタンプを見る例です
 | |
| .Pp
 | |
| .Dl ipfw -at l
 | |
| .Pp
 | |
| これはタイムスタンプを省略して次のように指定できます。
 | |
| .Pp
 | |
| .Dl ipfw -a l
 | |
| .Pp
 | |
| 次のルールは 192.168.2.0/24 からの全ての受信パケットを、5000番のポートに
 | |
| 行き先変更するものです。
 | |
| .Pp
 | |
| .Dl ipfw divert 5000 all from 192.168.2.0/24 to any in
 | |
| .Sh 関連項目
 | |
| .Xr ip 4 ,
 | |
| .Xr ipfirewall 4 ,
 | |
| .Xr divert 4 ,
 | |
| .Xr protocols 5 ,
 | |
| .Xr services 5 ,
 | |
| .Xr reboot 8 ,
 | |
| .Xr syslogd 8 ,
 | |
| .Xr sysctl 8
 | |
| .Sh バグ
 | |
| .Pp
 | |
| .Em WARNING!!WARNING!!WARNING!!WARNING!!WARNING!!WARNING!!WARNING!!
 | |
| .Pp
 | |
| このプログラムはコンピュータをかなり使いにくい状態にしてしまう可能性があります
 | |
| 。
 | |
| はじめて使用する時はコンソール上で実行し、理解していない操作は
 | |
| .Em 絶対に実行しない
 | |
| ようにして下さい。
 | |
| .Pp
 | |
| 連続したエントリの操作もしくは追加に際し、サービス名やプロトコル名は使用できま
 | |
| せん。
 | |
| .Pp
 | |
| 入ってきたパケットの断片(フラグメント)が
 | |
| .Ar divert
 | |
| によって行き先を変更されると、ソケットに配送される前に、組み立て直しをします。
 | |
| それに対し、
 | |
| .Ar tee
 | |
| を経由した断片(フラグメント)は、組み立て直しされません。
 | |
| .Pp
 | |
| ポートの別名でダッシュ (-) を含むものは、リストの最初には書けません。
 | |
| .Sh 作者
 | |
| Ugen J. S. Antsilevich,
 | |
| Poul-Henning Kamp,
 | |
| Alex Nash,
 | |
| Archie Cobbs.
 | |
| API based upon code written by Daniel Boulet for BSDI.
 | |
| .Sh 歴史
 | |
| .Nm
 | |
| は、FreeBSD 2.0 で最初に現れました。
 |