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 −a −h −l −v −x 設定構文 add [−46n] src dst protocol spi
[extensions] algorithm ... ; get [−46n] src dst protocol spi ; delete [−46n] src dst protocol spi
; deleteall [−46n] src dst protocol
; flush [protocol] ; dump [protocol] ; spdadd [−46n] src_range dst_range
upperspec policy ; spddelete [−46n] src_range dst_range
upperspec −P direction ; spdflush ; spddump ; メタ引数は下記の通りです: src protocol spi extensions algorithm key は、ダブルクォートで括られた文字列か、一続きの ‘0x’ 付き 16 進数で指定する必要があります。 ealgo, aalgo, calgo が取り得る値は別の節で規定します。 src_range address prefixlen と port は 10 進数で指定する必要があります。 port の周 りの角括弧は、実際に必要です。マニュアルページのメタ文字ではあり ません。 FQDN の解決に関しては、 src と dst に対して適用される ルールがここでも適用されます。 |
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 |
−P direction discard
−P direction none ポリシの方向を 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 の場合、 src と dst は両方省略可能です。 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) を参照してください。 |
アルゴリズム
次の一覧は、サポートされているアルゴリズムを示しています。 protocol と algorithm は、ほぼ直交しています。次に示すのは、 protocol パラメータの −A aalgo で aalgo として使用可能な認証アルゴリズムの一覧です: アルゴリズム 鍵長 (ビット) コメント |
128 |
ah: rfc2403 |
|||||
128 |
ah-old: rfc2085 |
|||||
160 |
ah: rfc2404 |
|||||
160 |
ah-old: 128bit ICV (文書無し) |
|||||
128 |
ah: 96bit ICV (文書無し) |
|||||
128 |
ah-old: rfc1828 |
|||||
160 |
ah: 96bit ICV (文書無し) |
|||||
160 |
ah-old: 128bit ICV (文書無し) |
|||||
0 〜 2048 |
デバッグ用 |
|||||
256 |
ah: 96bit ICV |
|||||
(draft-ietf-ipsec-ciph-sha-256-00) |
||||||
384 |
ah: 96bit ICV (文書無し) |
|||||
384 |
ah-old: 128bit ICV (文書無し) |
|||||
512 |
ah: 96bit ICV (文書無し) |
|||||
512 |
ah-old: 128bit ICV (文書無し) |
|||||
160 |
ah: 96bit ICV (RFC2857) |
|||||
ah-old: 128bit ICV (文書無し) |
||||||
128 |
ah: 96bit ICV (RFC3566) |
|||||
128 |
ah-old: 128bit ICV (文書無し) |
|||||
8 to 640 |
tcp: rfc2385 |
次に示すのは、 protocol パラメータの −E ealgo で ealgo として使用可能な暗 号化アルゴリズムの一覧です: アルゴリズム 鍵長 (ビット) コメント |
64 |
esp-old: rfc1829, esp: rfc2405 |
|||||
192 |
rfc2451 |
|||||
0 〜 2048 |
rfc2410 |
|||||
40 〜 448 |
rfc2451 |
|||||
40 〜 128 |
rfc2451 |
|||||
64 |
ipsec-ciph-des-derived-01 |
|||||
192 |
文書無し |
|||||
128/192/256 |
rfc3602 |
|||||
160/224/288 |
draft-ietf-ipsec-ciph-aes-ctr-03 |
aes-ctr 鍵の最初の 128 ビットは AES 鍵として使用され、残りの 32 ビットは nonce として使用されることに注意してください。 次に示すのは、 protocol パラメータの −C calgo で calgo として使用可能な圧 縮アルゴリズムの一覧です: アルゴリズム コメント |
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_range と dst_range は動作しません。これは、ゲートウェイがパケットを再組み立てしな いからです (上位層ヘッダの検査はできません)。 FreeBSD 10.0 November 20, 2000 FreeBSD 10.0 |