「ipsec.secrets」- 用于IKE/IPsec身份验证的机密

  CREATED BY JENKINSBOT

文件描述

文件ipsec.secrets包含一个机密表。这些机密被StrongSwan的网络密钥交换(IKE)守护程序pluto(IKEv1)和charon(IKEv2)使用,来验证其他主机。

保护这些机密至关重要。 该文件应由超级用户拥有,其权限应设置为阻止其他人访问。

文件内容

该文件是一系列条目并包含指令。如下示例:

	**# /etc/ipsec.secrets - strongSwan IPsec secrets file**
	**192.168.0.1 %any : PSK "v+NkxY9LLZvwj4qCC2o/gGrWDF2d21jL"**
	**: RSA moonKey.pem**
	**alice@strongswan.org : EAP "x3.dEhgN"**
	**carol : XAUTH "4iChxLT3"**
	**dave  : XAUTH "ryftzG4A"**
	**# get secrets from other files**
	**include ipsec.*.secrets**

如上示例包含了可能在一个ipsec.secrets文件中出现的三种类型的内容:机密条目;注释;包含(include)指令。

注释

行末尾的空格将被忽略。在行的开头或空白之后,如果是“#”,则其后直到行尾的文本被视为注释。

包含指令

指令include导致在继续当前文件之前处理指定文件的内容。 文件名受sh(1)中的“globbing”影响,因此每个具有匹配名称的文件都会被处理。 包含可以嵌套到适度的深度(当前为10)。 如果文件名不以/开头,则包含当前文件的目录将添加到名称前面。 include指令是以include开头的一行,后跟空白,后跟文件名(不能包含空格)。

机密条目

文件中的每个条目都是由可选的”ID选择器“,后跟一个“机密”的形式组成。这两个部分由冒号(:)分隔,冒号被空格包围。如果未指定“ID选择器”,则该行必须以冒号开头。

”ID选择器“可以是IP地址、完全限定域名、用户@FQDN、%any、%any6(以后可能会有其他类型)。

匹配”ID选择器“非常简单:它们必须相同。在“Road Warrior(经常出差的人)”连接的情况下,如果没有找到对等ID的相等匹配,并且它是IP地址的形式,则选择器%any将匹配对等方的IP地址(如果IPv4的情况);在IPv6情况中,%any6将匹配对等方的IP地址。目前,可以使用过时的符号0.0.0.0代替%any。

在IKEv1中,在通过预共享密钥进行认证的情况下出现了额外的复杂性:响应者将需要在对等的ID有效载荷被解码之前查找“机密”,因此使用的“ID选择器”将是IP地址。

为了验证两台主机之间的连接,将使用最匹配主机和对等ID的条目。没有选择器的条目将匹配任何主机和对等体。更具体地说,如果“ID选择器”与主机的ID匹配(不考虑对等体),则具有一个选择器的条目将匹配主机和对等体。更具体地说,如果主机ID和对等ID分别与选择器之一匹配,则具有多个选择器的条目将匹配主机和对等体。如果密钥用于非对称认证技术(即诸如RSA的公共密钥系统),则具有多个选择器的条目将匹配主机和对等体,即使仅主机ID与选择器匹配(假设选择器是主机所有标识符)。只要他们就机密或私钥达成一致,两个条目就是最佳匹配是可以接受的。

通过预共享机密进行认证要求两个系统都找到相同的机密(机密实际上不是由IKE协议传输的)。如果主机和对等体都出现在选择器列表中,则相同的条目将适用于两个系统,因此可以使用系统之间的逐字复制。这自然延伸到共享相同机密的较大群体。因此,对于PSK认证,多选择器条目是最适合的。

通过RSA等公钥系统进行身份验证,需要每个主机都有自己的私钥。主机可以合理地为不同的接口和不同的对等体使用不同的私钥。但是在系统之间共享条目是不正常的。因此,无选择器和单选择器形式的入口通常对公钥认证有意义。

条目的“机密”部分必须以表示密钥类型的标记开头。 目前支持以下类型的机密:

	PSK    defines a pre-shared key
	RSA    defines an RSA private key
	ECDSA  defines an ECDSA private key
	P12    defines a PKCS#12 container
	EAP    defines EAP credentials
	NTLM   defines NTLM credentials
	XAUTH  defines XAUTH credentials
	PIN    defines a smartcard PIN

下面给出了每种机密的详细信息。

TYPES OF SECRETS

[ <selectors> ] : PSK <secret>
预共享密钥最方便地表示为字符序列,由双引号字符(”)分隔。序列不能包含换行符或双引号字符。
或者,预共享机密可以表示为十六进制或Base64编码的二进制值。 以0x开头的字符序列被解释为十六进制数字序列。 类似地,以0开头的字符序列被解释为Base64编码的二进制数据

: RSA <private key file> [ <passphrase> | %prompt ]
: ECDSA <private key file> [ <passphrase> | %prompt ]
对于私钥文件,接受相对于/etc/ipsec.d/private的绝对路径或路径。 如果私钥文件已加密,则必须定义密码。 可以使用密码短语%prompt,而不是密码短语,然后在需要解密密钥时使守护进程向用户询问密码。

: P12 <PKCS#12 file> [ <passphrase> | %prompt ]
对于PKCS#12文件,接受相对于/etc/ipsec.d/private的绝对路径或路径。 如果容器已加密,则必须定义passphrase。 可以使用密码短语%prompt,而不是密码短语,然后在需要解密容器时使守护进程向用户询问密码。 从容器中提取私钥,客户端和CA证书。 在连接集中使用此类客户端证书,该证书的主题之一是leftid。

<user id> : EAP <secret>
机密的格式与PSK机密的格式相同。
EAP机密仅限IKEv2。

<user id> : NTLM <secret>
机密的格式与PSK机密的格式相同,但机密存储为NTLM哈希,即MD4(UTF-16LE(机密)),而不是明文。
NTLM机密只能与eap-mschapv2插件一起使用。

[ <servername> ] <username> : XAUTH <password>
密码的格式与PSK机密的格式相同。 XAUTH机密只是IKEv1。

: PIN %smartcard[<slot nr>[@<module>]]:<keyid> <pin code> | %prompt
智能卡选择器始终需要keyid来唯一地选择正确的密钥。 插槽号定义令牌上的插槽,模块名称指的是在strongswan.conf(5)中定义的模块名称。 可以指定%prompt,而不是静态指定pin代码,这会导致守护进程向用户询问pin代码。

注意事项

如果ID为0.0.0.0,则匹配%any;如果它是0::0,它将匹配%any6。

相关手册

ipsec.conf(5), strongswan.conf(5), ipsec(8)

参考文献

man 5 ipsec.secrets