strongSwan之ipsec.secrets配置手册

简介: strongSwan之ipsec.secrets配置手册

strongSwan是一个开源的基于IPsec的VPN解决方案,ipsec.secrets是strongSwan的关键配置,文件保存了strongSwan IPsec子系统用于IKE身份验证的密钥表信息。这些密钥被strongSwan互联网密钥交换(Internet Key Exchange,IKE)守护程序pluto(IKEv1)和charon(IKEv2)用于验证其他主机。这些密钥必须被妥善保管,该文件应为超级用户所有,其权限应设置为阻止其他人的所有访问。


strongSwan的配置和控制信息配置保存在ipsec.conf文件中。


该文件是一系列条目和include指令。下面是一个例子。



 # /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"
 # 从其他文件中获取密钥
 include ipsec.*.secrets

文件中的每个条目都是可选的ID选择器列表,后跟一个密钥。这两部分由一个冒号(:)分隔,冒号前后有空格。如果未指定ID选择器,则该行必须以冒号开头。


选择器可以是一个IP地址,一个完全限定的域名,user@FQDN,%any或%any6(可能会有其他种类)。


将ID与选择器匹配相当简单:它们必须相等。在“Road Warrior”连接的情况下,如果找不到对等体ID的相同匹配项,并且它是IP地址的形式,则%any的选择器将匹配对等体的IP地址(如果是IPV4),而%any6的选择器将匹配对等体的IP地址(如果是IPV6)。目前,可以使用过时的符号0.0.0.0代替%any。


在IKEv1中,在通过预共享密钥进行身份验证的情况下,会产生额外的复杂性:响应者需要在对等体的ID有效载荷被解码之前查找该密钥,因此使用的ID将是IP地址。


为了验证两台主机之间的连接,将使用与主机和对等体ID最匹配的条目。没有选择器的条目将匹配任何主机和对等体。更具体地说,如果选择器匹配主机ID(不考虑对等体),则带有一个选择器的条目将匹配主机和对等体。更具体地说,如果主机ID和对等体ID都与其中一个选择器匹配,则具有多个选择器的条目将与主机和对等体匹配。如果密钥用于非对称身份验证技术(即RSA等公钥系统),则具有多个选择器的条目将与主机和对等体匹配,即使只有主机ID与选择器匹配(假定选择器都是主机的身份)。只要两个条目在密钥或私钥方面达成一致,就可以将其视为最佳匹配。


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


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


条目的密钥部分必须以指示密钥类型的令牌开头。目前支持以下类型的加密凭证:


PSK定义了一个预共享密钥;


RSA定义一个RSA私钥;


ECDSA定义ECDSA私钥;


P12定义了一个PKCS#12容器;


EAP定义EAP凭据;


NTLM定义NTLM凭据;


XAUTH定义XAUTH凭据;


PIN定义智能卡PIN。


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


行尾的空格将被忽略。在行首或空格后,#到行尾的文本被视为注释。


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


密钥类型


 [ <selectors> ] : PSK <secret>

预共享密钥可以最方便地表示为一个字符序列,该序列由双引号字符(“)分隔。该序列不能包含换行符或双引号字符。


或者,预共享的密钥可以表示为十六进制或Base64编码的二进制值。以0x开头的字符序列被解释为十六进制数字序列。类似地,以0开头的字符序列被解释为Base64编码的二进制数据。

 : RSA <private key file> [ <passphrase> | %prompt ]
 : ECDSA <private key file> [ <passphrase> | %prompt ]

对于私钥文件,接受绝对路径或相对于/etc/strongswan/ipsec.d/private的路径。如果私钥文件已加密,则必须定义密码短语。可以使用%prompt来代替密码短语,这会导致后台程序在需要解密密钥时询问用户密码。

 : P12 <PKCS#12 file> [ <passphrase> | %prompt ]

对于PKCS#12文件,接受绝对路径或相对于/etc/strongswan/ipsec.d/private的路径。如果容器已加密,则必须定义密码短语。可以使用%prompt来代替密码短语,这会导致后台程序在需要解密容器时向用户询问密码。私钥、客户端和CA证书都是从容器中提取的。要在连接中使用这样的客户端证书,请将leftid设置为证书的主题之一。



<user id> : EAP <secret>


密钥的格式与PSK密钥的格式相同。


EAP密钥仅适用于IKEv2。

<user id> : NTLM <secret>

secret的格式与PSK secrets的格式相同,但该密钥存储为NTLM哈希,即MD4(UTF-16LE(secret)),而不是明文。


NTLM密钥只能与eap-mschapv2插件一起使用。



[ <servername> ] <username> : XAUTH <password>


密码的格式与PSK密钥相同。XAUTH的密钥仅限于IKEv1。

: PIN %smartcard[<slot nr>[@<module>]]:<keyid> <pin code> | %prompt

智能卡选择器始终需要keyid来唯一选择正确的密钥。插槽号定义了令牌上的插槽,模块名称指的是strongswan.conf中定义的模块名称。可以指定%prompt,而不是静态地指定pin码,这会导致守护进程向用户请求pin码。

相关文章
|
6月前
|
Ubuntu Linux Android开发
WireGuard 系列文章(三):WireGuard 安装
WireGuard 系列文章(三):WireGuard 安装
|
6月前
|
安全 Linux 网络安全
|
5月前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
226 0
|
6月前
|
数据安全/隐私保护
ensp中基本acl 原理及配置命令(详解)
ensp中基本acl 原理及配置命令(详解)
279 1
|
6月前
|
安全 网络安全 网络虚拟化
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
|
6月前
|
安全 网络协议 网络安全
WireGuard 系列文章(一):什么是 VPN
WireGuard 系列文章(一):什么是 VPN
|
存储 网络协议 Shell
strongSwan之ipsec.secrets配置手册
将ID与选择器匹配相当简单:它们必须相等。在“Road Warrior”连接的情况下,如果找不到对等体ID的相同匹配项,并且它是IP地址的形式,则%any的选择器将匹配对等体的IP地址(如果是IPV4),而%any6的选择器将匹配对等体的IP地址(如果是IPV6)。目前,可以使用过时的符号0.0.0.0代替%any。
509 0
strongSwan之ipsec.secrets配置手册
|
算法 安全 Linux
Linux配置strongSwan
Linux配置strongSwan
Linux配置strongSwan
|
网络协议 Shell 网络安全
strongswan之ipsec.conf配置手册(下)
strongswan之ipsec.conf配置手册
|
算法 网络协议 安全
strongswan之ipsec.conf配置手册(上)
strongswan之ipsec.conf配置手册