スポンサーリンク

SETKEY(8) FreeBSD システム管理者マニュアル SETKEY(8)

名称

setkey − 手動で IPsec の SA/SP データベースを操作する

書式

setkey [−v] −c

setkey [−v] −f filename

setkey [−aPlv] −D

setkey [−Pv] −F

setkey [−h] −x

解説

setkey ユーティリティは、カーネル内のセキュリティアソシエーションデータ ベース (SAD) エントリとセキュリティポリシデータベース (SPD) エントリを、 追加・更新・内容列挙・削除します。

setkey ユーティリティは、一連の操作を標準入力から受け取るか ( −c 付で起動 された場合)、 filename という名前のファイルから受け取ります ( −f filename 付で起動された場合)。

       −D

SAD エントリをダンプします。 −P 付の場合、SPD エントリをダンプし ます。

−F
SAD エントリを捨てます。 −P 付の場合、SPD を捨てます。

−a
setkey
は通常、 −D では、死んだ SAD エントリを表示しません。 −a 付の場合、死んだ SAD エントリも表示します。死んだ SAD エントリと は、期限切れではあるものの、 SPD エントリから参照されているために システム中に残っているものを指します。

−h
−x
モードにおいて、16 進数ダンプを追加します。

−l
−D
において、短い出力で無限ループします。

−v
冗長になります。プログラムは、 PF_KEY ソケット上で交換したメッ セージをダンプします。これには他プロセスからカーネルに送られた メッセージを含みます。

−x
無限ループし、 PF_KEY ソケットへ送られる全メッセージをダンプしま す。 −xx は、各タイムスタンプのフォーマットをやめます。

設定構文
−c
もしくは −f がコマンドラインにあると、 setkey は次の設定構文を受け付け ます。ハッシュマーク (‘#’) で始まる行はコメント行として扱われます。

add [−46n] src dst protocol spi [extensions] algorithm ... ;
単一の SAD エントリを追加します。 add の失敗にはいくつか理由があ り、鍵の長さが指定したアルゴリズムに合致しない場合が含まれます。

get [−46n] src dst protocol spi ;
単一の SAD エントリを表示します。

delete [−46n] src dst protocol spi ;
単一の SAD エントリを削除します。

deleteall [−46n] src dst protocol ;
指定に適合するすべての SAD エントリを削除します。

flush [protocol] ;
オプションに適合する全 SAD エントリをクリアします。コマンドライン に −F を指定すると、同じ効果が得られます。

dump [protocol] ;
オプションに適合する全 SAD エントリをダンプします。コマンドライン に −D を指定すると、同じ効果が得られます。

spdadd [−46n] src_range dst_range upperspec policy ;
単一の SPD エントリを追加します。

spddelete [−46n] src_range dst_range upperspec −P direction ;
単一の SPD エントリを削除します。

spdflush ;
全 SPD エントリをクリアします。コマンドラインに −FP を指定する と、同じ効果が得られます。

spddump ;
全 SPD エントリをダンプします。コマンドラインに −DP を指定する と、同じ効果が得られます。

メタ引数は下記の通りです:

src
dst

セキュアコミュニケーションの始点/終点を IPv4/v6 アドレスで指定し ます。 setkey ユーティリティは FQDN を数値アドレスに解決可能で す。 FQDN が複数のアドレスに解決された場合、 setkey はすべての組 み合わせを試みて、複数の SAD/SPD エントリをカーネルにインストール します。 −4, −6, −n は、FQDN の解決を制限します。 −4−6 はそれ ぞれ、結果が IPv4/v6 アドレスのみになるよう制限します。 −n は FQDN の解決を防止し、アドレスが数値アドレスであることを要求しま す。

protocol
protocol
は次のいずれか 1 つです:
esp
rfc2406 を基にした暗号ペイロード
esp-old
rfc1827 を基にした暗号ペイロード
ah
rfc2402 を基にした認証ヘッダ
ah-old
rfc1826 を基にした認証ヘッダ
ipcomp
IPComp
tcp
rfc2385 を基にした TCP-MD5

spi
SAD および SPD 用の、セキュリティパラメータインデックス (SPI)。 spi は 10 進数または ‘0x’ 付きの 16 進数で指定する必要がありま す。範囲 0 から 255 の SPI 値は、将来の使用のために IANA が予約し ており、使用できません。 TCP-MD5 関係は 0x1000 を使わないとなりま せんので、現時点ではホストごとの粒度しかありません。

extensions
次に示す引数を受け付けます:
−m
mode
使用するセキュリティプロトコルモードを指定します。 mode は次のいずれか 1 つです: transport, tunnel, any 。デフォルト値は any です。
−r
size
繰り返し攻撃を防ぐためのウィンドウサイズをバイト数で 指定します。 size は 32 ビットワードの 10 進数で指定 する必要があります。 size が 0 または指定されなかった 場合、繰り返しのチェックは行われません。
−u
id
SAD 中のポリシエントリの識別子を指定します。 policy を参照してください。
−f
pad_option
ESP パディングの内容を指定します。 pad_option は次の いずれか 1 つです:
zero-pad
パディングはすべて 0。
random-pad
一連の乱数値を設定。
seq-pad
1 から開始して増加する一連の数を設定。
−f
nocyclic-seq
周期的な順序番号を許可しません。
−lh
time
−ls
time
SA のハード有効期間/ソフト有効期間を指定します。

algorithm
−E
ealgo key
ESP 用に暗号化アルゴリズム ealgo を指定します。
−E
ealgo key −A aalgo key
ESP 用に暗号化アルゴリズム ealgo とペイロード認証アル ゴリズム aalgo を指定します。
−A
aalgo key
AH 用に認証アルゴリズムを指定します。
−C
calgo [−R]
IPComp 用に圧縮アルゴリズムを指定します。 −R が指定さ れると、 spi フィールド上の値が、ワイヤ上にそのまま IPComp CPI (compression parameter index) フィールドと して使用されます。 −R が指定されないと、カーネルはワ イヤ上に良く知られた CPI を使用し、 spi フィールドは カーネル内部使用のためのインデックスとしてのみ使用さ れます。

key は、ダブルクォートで括られた文字列か、一続きの ‘0x’ 付き 16 進数で指定する必要があります。

ealgo, aalgo, calgo が取り得る値は別の節で規定します。

src_range
dst_range

セキュアコミュニケーションの選択であり、 IPv4/v6 アドレスまたは IPv4/v6 アドレス範囲で指定します。 TCP/UDP ポート指定を付加するこ とも可能です。次の形式を受け付けます:

address
address/prefixlen
address[port]
address/prefixlen[port]

prefixlenport は 10 進数で指定する必要があります。 port の周 りの角括弧は、実際に必要です。マニュアルページのメタ文字ではあり ません。 FQDN の解決に関しては、 srcdst に対して適用される ルールがここでも適用されます。

       upperspec

使用する上位層プロトコル。 upperspec として、 /etc/protocols 中の 1 語を使用可能です。または、 icmp6, ip4, any を指定可能です。 any は ‘‘任意のプロトコル’’ を意味します。また、プロトコル番号を使用 可能です。上位層が ICMPv6 の場合、ICMPv6 用のタイプやコードを指定 可能です。仕様は icmp6 の後に置きます。タイプは、単一のコンマで区 切ります。コードは常に指定することが必要です。 0 が指定された場 合、カーネルはこれをワイルドカードとして扱います。カーネルはワイ ルドカードと ICMPv6 タイプ 0 とを区別できないことに注意してくださ い。例えば下記は、入力の近隣要請に対して IPsec が不要というポリシ を意味します。

spdadd ::/0 ::/0 icmp6 135,0 -P in none;

注: upperspec は、現時点では転送に対して機能しません。転送ノード において、追加の再構成 (現時点では未実装) が必要となるからです。 /etc/protocols には多数のプロトコルが登録されていますが、 TCP, UDP, ICMP 以外は IPSec と共に使用するには不適切かもしれません。そ のようなプロトコルの使用には、注意してください。

policy
policy
は次の 3 種類の形式のうちいずれか 1 つです:

             −P direction discard

−P direction none
−P
direction ipsec protocol/mode/src-dst/level [...]

ポリシの方向を direction で指定する必要があります。 out または in が使用されます。 discard は、インデックスに適合するパケットが捨て られることを意味します。 none は、パケットに対して IPsec 操作が実 施されないことを意味します。 ipsec は、パケットに対して IPsec 操 作が実施されることを意味します。 protocol/mode/src-dst/level の部 分は、パケット処理方法のルールを指定します。 ah, esp, ipcomp のい ずれかを、 protocol として設定します。 mode は transport または tunnel のいずれかです。 mode が tunnel の場合、 SA の末端アドレス を、 src および dst で、両アドレス間に ‘-’ を付けて指定する必要が あります。これは、使用する SA を指定するために用いられます。 mode が transport の場合、 srcdst は両方省略可能です。 level は次 のいずれかです: default, use, require, unique 。すべてのレベルに おいて SA が利用可能でない場合、 SA 取得要求をカーネルは鍵交換 デーモンに送ります。 default は、カーネルがパケットを処理すると き、指定したプロトコルについて、システム全体のデフォルトを問い合 わせることを意味します。これは例えば sysctl 変数 esp_trans_deflev を指します。 use は、カーネルが SA を使用可能であれば使用し、使用 不能の場合には通常操作を続けることを意味します。 require は、ポリ シに適合するパケットをカーネルが送る時にはいつも SA が必要である ことを意味します。 unique は require と同じです。更に、ポリシが一 意な外向き SA に結合することを許します。ポリシレベルには unique を指定するだけで良く、 racoon(8) がそのポリシのために SA を設定し てくれます。そのポリシ用に手動キー入力で SA を設定する場合、 unique の後にコロン ‘:’ で区切った後に 10 進数でポリシ識別子を指 定可能であり、次のようにします: unique:number 。これでこのポリシ が SA に結合されます。 number は 1 から 32767 の範囲にあることが 必要です。これは、手動 SA 設定の extensions −u に対応します。 SA バンドルを使用したい場合、複数のルールを定義可能です。例えば、IP ヘッダ、AH ヘッダ、ESP ヘッダ、上位層プロトコルヘッダと続く場合、 ルールは次のようになります:

esp/transport//require ah/transport//require;

ルールの順序は非常に重要です。

‘‘discard’’ と ‘‘none’’ は ipsec_set_policy(3) に記述されている構 文には存在しないことに注意してください。両者の構文にはちょっとし た違いがあります。詳細は ipsec_set_policy(3) を参照してください。

アルゴリズム

次の一覧は、サポートされているアルゴリズムを示しています。 protocolalgorithm は、ほぼ直交しています。次に示すのは、 protocol パラメータの −A aalgoaalgo として使用可能な認証アルゴリズムの一覧です:

      アルゴリズム    鍵長 (ビット)   コメント

hmac-md5

128

ah: rfc2403

128

ah-old: rfc2085
hmac-sha1

160

ah: rfc2404

160

ah-old: 128bit ICV (文書無し)
keyed-md5

128

ah: 96bit ICV (文書無し)

128

ah-old: rfc1828
keyed-sha1

160

ah: 96bit ICV (文書無し)

160

ah-old: 128bit ICV (文書無し)
null

0 〜 2048

デバッグ用
hmac-sha2-256

256

ah: 96bit ICV

(draft-ietf-ipsec-ciph-sha-256-00)
hmac-sha2-384

384

ah: 96bit ICV (文書無し)

384

ah-old: 128bit ICV (文書無し)
hmac-sha2-512

512

ah: 96bit ICV (文書無し)

512

ah-old: 128bit ICV (文書無し)
hmac-ripemd160

160

ah: 96bit ICV (RFC2857)

ah-old: 128bit ICV (文書無し)
aes-xcbc-mac

128

ah: 96bit ICV (RFC3566)

128

ah-old: 128bit ICV (文書無し)
tcp-md5

8 to 640

tcp: rfc2385

次に示すのは、 protocol パラメータの −E ealgoealgo として使用可能な暗 号化アルゴリズムの一覧です:

      アルゴリズム    鍵長 (ビット)   コメント

des-cbc

64

esp-old: rfc1829, esp: rfc2405
3des-cbc

192

rfc2451
null

0 〜 2048

rfc2410
blowfish-cbc

40 〜 448

rfc2451
cast128-cbc

40 〜 128

rfc2451
des-deriv

64

ipsec-ciph-des-derived-01
3des-deriv

192

文書無し
rijndael-cbc

128/192/256

rfc3602
aes-ctr

160/224/288

draft-ietf-ipsec-ciph-aes-ctr-03

aes-ctr 鍵の最初の 128 ビットは AES 鍵として使用され、残りの 32 ビットは nonce として使用されることに注意してください。

次に示すのは、 protocol パラメータの −C calgocalgo として使用可能な圧 縮アルゴリズムの一覧です:

      アルゴリズム    コメント

deflate

rfc2394

診断

ユーティリティ setkey は、成功すると 0 で、エラーがあった場合は >0 で終了 します。

使用例

add 3ffe:501:4819::1 3ffe:501:481d::1 esp 123457

-E des-cbc 0x3ffe05014819ffff ;

add -6 myhost.example.com yourhost.example.com ah 123456

-A hmac-sha1 "AH SA configuration!" ;

add 10.0.11.41 10.0.11.33 esp 0x10001

-E des-cbc 0x3ffe05014819ffff

-A hmac-md5 "authentication!!" ;

get 3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ;

flush ;

dump esp ;

spdadd 10.0.11.41/32[21] 10.0.11.33/32[any] any

-P out ipsec esp/tunnel/192.168.0.1-192.168.1.2/require ;

add 10.1.10.34 10.1.10.36 tcp 0x1000 -A tcp-md5 "TCP-MD5 BGP secret" ;

関連項目

ipsec_set_policy(3), racoon(8), sysctl(8)

       Changed manual key configuration for IPsec,                                                     October 1999,     http://www.kame.net/newsletter/19991007/.

歴史

setkey ユーティリティは WIDE Hydrangea IPv6 プロトコルスタックキットでは じめて登場しました。本ユーティリティは 1998 年 6 月に、完全に再デザインさ れました。

バグ

setkey ユーティリティは、構文エラーをよりよく報告し、扱えるべきです。

IPsec ゲートウェイ設定では、 TCP/UDP ポート番号付きの src_rangedst_range は動作しません。これは、ゲートウェイがパケットを再組み立てしな いからです (上位層ヘッダの検査はできません)。

FreeBSD 10.0 November 20, 2000 FreeBSD 10.0

スポンサーリンク