strongswan之ipsec.conf配置手册(下)

简介: strongswan之ipsec.conf配置手册

用于左侧参与者的第二次身份验证的身份(仅限 IKEv2); 默认为leftid。



leftikeport = <port>

左侧参与者用于 IKE 通信的 UDP 端口。 如果未指定,则使用端口 500,如果检测到 NAT 或启用 MOBIKE,则端口浮动到 4500。 指定与默认不同的本地 IKE 端口还需要侦听此端口的套接字实现。



leftprotoport = <protocol>/<port>

将流量选择器限制为单个协议和/或端口。 现在不推荐使用此选项,可以直接在 leftsubnet 中为每个子网定义协议/端口信息。


leftsigkey = <raw public key> | <path to public key>

左侧参与者用于公钥签名认证的公钥,采用 PKCS#1 格式,使用十六进制(0x 前缀)或 base64(0s 前缀)编码。 使用 0x 或 0s 前面的可选 dns: 或 ssh: 前缀,公钥应分别采用 RFC 3110(不是完整的 RR,只有 RSA 密钥部分)或 RFC 4253 公钥格式。 还接受包含 PEM、DER 或 SSH 编码的公钥的文件的路径。 绝对路径或相对于 /etc/ipsec.d/certs 的路径都被接受。



leftsendcert = never | no | ifasked | always | yes

接受的值是 never 或 no,always 或 yes,以及 ifasked(默认值),后者意味着对等体必须发送证书请求有效负载才能获得证书作为回报。



leftsourceip = %config4 | %config6 | <ip address>

要在隧道中使用的内部源 IP 的逗号分隔列表,也称为虚拟 IP。 如果该值是同义词 %config、%cfg、%modeconfig 或 %modecfg 之一,则从对等端请求地址(来自隧道地址系列)。 使用 %config4 和 %config6 将明确请求给定地址族的地址。 如果配置了 IP 地址,则会向响应者请求,响应者可以自由地使用不同的地址进行响应。



rightsourceip = %config | <network>/<netmask> | <from>-<to> | %poolname

要在远程对等体的隧道中使用的内部源 IP 的逗号分隔列表。 如果响应方的值为 %config,则发起方必须提出一个地址,然后回显。 还支持以网络/网络掩码表示的地址池,以及使用 %poolname 来表示或使用外部 IP 地址池,其中 poolname 是用于查找的 IP 地址池的名称。



leftsubnet = <ip subnet>[[<proto/port>]][,...]

左侧参与者后面的私有子网,表示为网络/网络掩码;如果省略,则基本上假定为 left/32,表示连接的左端仅到达左侧参与者。对等体的配置子网可能不同,协议将其缩小到最大公共子网。在 IKEv1 中,这可能会导致其他实现出现问题,请确保在此类配置中配置相同的子网。 IKEv2 支持以逗号分隔的多个子网。 IKEv1 仅解释此类定义的第一个子网,除非启用了 Cisco Unity 扩展插件。这是由于 IKEv1 协议的限制,每个 CHILD_SA 只允许一对子网。因此,要为多个子网建立隧道,必须为每对子网定义和启动一个 conn 条目。


方括号中的每个子网后面的可选部分指定了一个协议/端口,以限制该子网的选择器。


示例:leftsubnet=10.0.0.1[tcp/http],10.0.0.2[6/80] 或 leftsubnet=fec1::1[udp],10.0.0.0/16[/53]。而不是省略任何一个值, %any 可以用于相同的效果,例如leftsubnet =fec1::1[udp/%any],10.0.0.0/16[%any/53]。


如果协议是 icmp 或 ipv6-icmp,则端口在小于 256 时被解释为 ICMP 消息类型,如果大于或等于 256,则被解释为类型和代码,类型在最高有效 8 位,代码在最低有效 8 位。


端口值也可以采用 RFC 4301 OPAQUE 选择器的值 %opaque,或 1024-65535 形式的数字范围。目前没有任何内核后端支持不透明或端口范围,而是使用 %any 进行策略安装。


不用指定子网,可以使用 %dynamic 将其替换为 IKE 地址,与完全省略 leftsubnet 具有相同的效果。使用 %dynamic 可用于定义多个动态选择器,每个选择器都有可能不同的协议/端口定义。



leftupdown = <path>

当连接状态发生变化时,运行什么“updown”脚本来调整路由和/或防火墙(默认ipsec _updown)。 可能包含由空格分隔的位置参数(尽管这需要将整个字符串括在引号中); 包含 shell 元字符是不明智的。 仅本地相关,另一端无需同意。 Charon 使用 updown 脚本只插入防火墙规则,因为路由已经直接实现到守护进程中。



lifebytes = <number>

在 IPsec SA 过期之前通过它传输的字节数。



lifepackets = <number>

在 IPsec SA 过期之前通过它传输的报文数。



lifetime = 1h | <time>

从成功协商到到期,连接的特定实例(用户报文的一组加密/身份验证密钥)应该持续多长时间; 可接受的值是一个整数,可选地后跟 s(以秒为单位的时间)或一个十进制数,后跟 m、h 或 d(分别以分钟、小时或天为单位的时间)(默认为 1h,最大为 24h)。 通常,连接会在过期之前重新协商(通过密钥通道)(参见margintime)。 两端不需要完全同意生命周期,但如果它们不完全一致,则认为生命周期更长的一端会有一些被取代的连接混乱。 另请参阅下面的 “SA到期/更新密钥”。



marginbytes = <number>

IPsec SA 到期前的多少字节(请参阅 lifebytes)应该尝试协商替换开始。



marginpackets = <number>

在 IPsec SA 到期之前有多少报文(请参阅 lifepackets)应该尝试协商替换开始。



margintime = 9m | <time>

应该在连接到期或密钥通道到期前多长时间开始尝试协商替换; 可接受的生命周期值(默认 9m)。 仅本地相关,另一端无需同意。 另请参阅下面的 “SA到期/更新密钥”。



mark = <value>[/<mask>]

在入站策略和出站 IPsec SA 和策略上设置 XFRM 标记。 如果缺少掩码,则假定默认掩码为 0xffffffff。 特殊值 %unique 为每个新创建的 IPsec SA 分配一个唯一值。 为了额外使每个 IPsec SA 方向(输入/输出)的标记唯一,可以使用特殊值 %unique-dir。



mark_in = <value>[/<mask>]

在入站策略(而不是 SA)上设置 XFRM 标记。 如果缺少掩码,则假定默认掩码为 0xffffffff。



mark_out = <value>[/<mask>]

在出站 IPsec SA 和策略上设置 XFRM 标记。 如果缺少掩码,则假定默认掩码为 0xffffffff。



mobike = yes | no

启用 RFC 4555 定义的 IKEv2 MOBIKE 协议。接受的值为 yes(默认值)和 no。 如果设置为 no,charon 守护进程将不会主动提议 MOBIKE 作为发起者并忽略 MOBIKE_SUPPORTED 通知作为响应者。



modeconfig = push | pull

定义用于分配虚拟 IP 的模式。 接受的值是 push 和 pull(默认值)。 IKEv2 目前不支持push模式。 两边的设置必须相同。



reauth = yes | no

IKE_SA 的密钥更新是否也应该重新验证对等体。 在 IKEv1 中,始终会进行重新身份验证。 在 IKEv2 中,no rekeys 值无需卸载 IPsec SA,yes(默认值)值从头开始创建新的 IKE_SA 并尝试重新创建所有 IPsec SA。



rekey = yes | no

连接即将到期时是否应重新协商; 可接受的值为 yes(默认值)和 no。 两端不需要同意,但是 no 的值会阻止 charon 请求重新协商,但它不会阻止响应另一端请求的重新协商,因此除非双方同意,否则 no 将在很大程度上无效。 另见reauth。

rekeyfuzz = 100% | <percentage>

应随机增加marginbytes、marginpackets 和margintime 的最大百分比,以随机化密钥更新间隔

rekeyfuzz = 100% | <percentage>(对于具有许多连接的主机很重要); 可接受的值是一个整数,可能超过 100,后跟一个 `%'(默认为 100%)。 随机增加后,marginTYPE 的值不得超过 lifeTYPE(其中 TYPE 是字节、报文或时间之一)。 值 0% 将抑制随机化。 仅本地相关,另一端无需同意。 另请参阅下面的“SA到期/更新密钥”。



replay_window = -1 | <number>

此连接的 IPsec 重播窗口大小。 默认值为 -1,使用 strongswan.conf中使用 charon.replay_window 配置的值。 仅使用 Netlink 后端支持大于 32 的值,值 0 禁用 IPsec 重放保护。



reqid = <number>

将给定连接的 reqid 设置为预先配置的固定值。



sha256_96 = no | yes

HMAC-SHA-256 与 IPsec 的 128 位截断一起使用。 为了与错误使用 96 位截断的实现兼容,可以启用此选项以在内核中配置较短的截断长度。 这不是协商的,因此这仅适用于使用不正确截断长度(或启用此选项)的对等体。



tfc = <value>

将 ESP 有效负载数据填充到的字节数。 IKEv2 当前支持流量机密性,仅适用于传出报文。 特殊值 %mtu 用填充填充 ESP 报文以具有 MTU 的大小。



type = tunnel | transport | transport_proxy | passthrough | drop

连接类型; 当前接受的值是tunnel(默认值),表示主机到主机、主机到子网或子网到子网隧道; transport,表示主机到主机的传输模式; transport_proxy,表示特殊的Mobile IPv6传输代理模式; passthrough,表示根本不应该进行任何 IPsec 处理; drop,表示应该丢弃报文。



xauth = client | server

如果由 authby=xauthpsk 或 authby=xauthrsasig 激活,则指定 XAuth 协议中的角色。 接受的值为服务器和客户端(默认值)。



xauth_identity = <id>

定义客户端用来回复 XAuth 请求的身份/用户名。 如果未定义,IKEv1 身份将用作 XAuth 身份。


CONN参数:IKEv2 MEDIATION扩展

以下参数仅与 IKEv2 中介扩展操作相关。



mediation = yes | no

此连接是否为中介连接,即。 此连接是否用于调解其他连接。 中介连接不创建子 SA。 可接受的值为 no(默认值)和 yes。



mediated_by = <name>

用于调解此连接的连接名称。 如果给定,连接将通过命名的中介连接进行中介。 中介连接必须设置

mediation =yes。
me_peerid = <id>

中介服务器知道对等体的 ID,即。 此连接的另一端将其用作与中介服务器连接的 leftid。 这是我们请求中介服务器用来调解我们的 ID。 如果没有给出me_peerid,则该连接的rightid 将用作peer ID。


CA部分

这些是可用于将特殊参数分配给证书颁发机构 (Certification Authority,CA) 的可选部分。 因为守护进程会自动从 /etc/ipsec.d/cacerts 导入 CA 证书,所以无需使用 CA 部分显式添加它们,除非您想为 CA 分配特殊参数(如 CRL)。



also = <name>

包含 ca 部分 <name>。



auto = ignore | add

当前可以具有值忽略(默认值)或添加。



cacert = <path>

定义 CA 证书的路径,相对于 /etc/ipsec.d/cacerts 或绝对路径。 %smartcard[<slot nr>[@<module>]]:<keyid> 形式的值定义要从 PKCS#11 后端为此 CA 加载的特定 CA 证书。 有关智能卡定义的详细信息,请参阅 ipsec.secrets。



crluri = <uri>
定义 CRL 分发点(ldap、http 或文件 URI)
crluri1
crluri 的同义词。
crluri2 = <uri>
定义备用 CRL 分发点(ldap、http 或文件 URI)
ocspuri = <uri>
定义一个 OCSP URI。
ocspuri1
ocspuri 的同义词。
ocspuri2 = <uri>
定义了一个替代的 OCSP URI。
certuribase = <uri>
定义 IKEv2 支持的 Hash 和 URL 功能的基本 URI。 IKEv2 不交换完整的证书,而是允许发送解析为 DER 编码证书的 URI。 证书 URI 是通过将 DER 编码证书的 SHA1 哈希附加到此基本 URI 来构建的。


CONFIG部分

目前,IPsec 软件唯一知道的配置部分是名为 setup 的部分,其中包含软件启动时使用的信息。 配置设置部分中当前接受的参数名称是:


cachecrls = yes | no

如果启用,通过 HTTP 或 LDAP 获取的证书吊销列表 (certificate revocation lists,CRL) 将缓存在 /etc/ipsec.d/crls/ 中的唯一文件名下,该文件名源自证书颁发机构的公钥。


charondebug = <debug list>

应该记录多少 charon 调试输出。 可以指定包含类型/级别对的逗号分隔列表,例如:dmn 3、ike 1、net -1。 可接受的类型值为 dmn、mgr、ike、chd、job、cfg、knl、net、asn、enc、lib、esp、tls、tnc、imc、imv、pts,级别为 -1、0、1 之一 , 2, 3, 4(用于静默、审计、控制、控制更多、原始、私有)。 默认情况下,所有类型的级别都设置为 1。



strictcrlpolicy = yes | ifuri | no

定义是否必须提供新的 CRL 才能使基于 RSA 签名的对等身份验证成功。 IKEv2 还识别 ifuri,如果定义了至少一个 CRL URI,则返回 yes,如果不知道 URI,则返回 no。



uniqueids = yes | no | never | replace | keep

是否应保持特定参与者 ID 的唯一性,任何使用 ID 的新 IKE_SA 都被视为替换使用该 ID 的所有旧的; 可接受的值为 yes(默认值)、no 和 never。 参与者 ID 通常是唯一的,因此使用相同 ID 的新 IKE_SA 几乎总是旨在替换旧的。 no 和 never 之间的区别在于,如果选项为 no,则守护程序将在接收 INITIAL_CONTACT 通知时替换旧的 IKE_SA,但如果配置了 never,则将忽略这些通知。 守护进程还接受与 yes 相同的值 replace 和值 keep 以拒绝新的 IKE_SA 设置并保持先前建立的副本。


身份解析

leftid 中指定的标识字符串的类型和二进制编码检测如下:


· 如果字符串值包含等号 (=),则假定它是专有名称,RDN 由逗号 (,) 或斜杠分隔(/ - 字符串必须以斜杠开头才能使用此语法)。尝试从该字符串创建二进制 ASN.1 编码。如果失败,则将类型设置为 KEY_ID,并采用文字字符串值作为编码。


· 如果字符串值包含@,则类型取决于该字符的位置:


· 如果字符串以@# 开头,则类型设置为KEY_ID,并且该前缀后面的字符串被假定为身份的十六进制编码二进制值。


· 如果字符串以@@ 开头,则类型设置为 USER_FQDN,并且编码是该前缀之后的文字字符串。


· 如果字符串以@ 开头,则类型设置为FQDN,并且编码是该前缀之后的文字字符串。


· 包含@ 的所有剩余字符串都假定为USER_FQDN/RFC822 类型,并以文字字符串值作为编码。


· 如果值不包含任何 @ 或 = 字符,则解析如下:


· 如果值为空字符串,或等于 %any[6]、0.0.0.0、:: 或 *,则类型设置为 ID_ANY,它与任何其他身份匹配。


· 如果值包含冒号 (:),则假定它是 IPv6 地址。但是,如果解析地址并将其转换为二进制编码失败,则类型设置为 KEY_ID 并且编码是文字值。


· 对于所有其他字符串,尝试将它们解析为 IPv4 地址。如果失败,则将类型设置为 FQDN,并采用文字值作为编码(这是域名和简单名称结束的地方)。


SA到期/更新密钥

由守护进程协商的 IKE SA 和 IPsec SA 可以配置为在特定时间后过期。 对于 IPsec SA,这也可能在指定数量的传输报文或传输字节之后发生。 可以使用以下设置进行配置:


IKE SA的ikelifetime默认值为3h;IPsec SA的lifebytes默认值为空,lifepackets默认值为空,lifetime默认值为1h。


重新加密


IKE SA 和 IPsec SA 可以在到期前重新生成密钥。 这可以使用以下设置进行配置:


IKE SA和IPsec SA的margintime默认值为9m;IPsec SA的marginbytes默认值为空,marginpackets默认值为空。


随机化


为了避免冲突,指定的保证金在从到期限制中减去之前随机增加(参见下面的公式)。 这由 rekeyfuzz 设置控制:


IKE SA和IPsec SA的rekeyfuzz默认值为100%,可以通过将rekeyfuzz设置为 0% 来禁用随机化。


公式


以下公式用于计算 IPsec SA 的密钥更新时间:



rekeytime = lifetime - (margintime + random(0, margintime * rekeyfuzz))


它同样适用于 IKE SA 以及 IPsec SA 的字节和报文限制。


例子


让我们考虑一下默认配置:



lifetime = 1h
 margintime = 9m
 rekeyfuzz = 100%


从上面的公式可以看出,重新生成密钥的时间介于:

rekeytime_min = 1h - (9m + 9m) = 42m
 rekeytime_max = 1h - (9m + 0m) = 51m

因此,守护程序将在建立 SA 后 42 到 51 分钟之间的随机时间尝试重新生成 IPsec SA 的密钥。 或者,换句话说,在 SA 到期前 9 到 18 分钟。


注意

· 由于 SA 的重新加密需要一些时间,所以边际值不能太低。


· 值margin... + margin... * rekeyfuzz 不能超过原来的限制。 例如,在默认配置中指定 margintime = 30m 是一个坏主意,因为重新生成密钥的时间可能为零,因此重新生成密钥会被禁用。

相关文章
|
3月前
|
Ubuntu Linux Android开发
WireGuard 系列文章(三):WireGuard 安装
WireGuard 系列文章(三):WireGuard 安装
OPENVPN双网卡路由规则
iptables -t nat   -A POSTROUTING -s 10.7.0.0/24 -d 10.18.101.0/24 -j SNAT --to-source 10.
2621 0
|
12月前
|
网络协议 Linux
freeswitch在多网卡服务器下如何配置
freeswitch在多网卡服务器下如何配置
|
存储 网络协议 Shell
strongSwan之ipsec.secrets配置手册
将ID与选择器匹配相当简单:它们必须相等。在“Road Warrior”连接的情况下,如果找不到对等体ID的相同匹配项,并且它是IP地址的形式,则%any的选择器将匹配对等体的IP地址(如果是IPV4),而%any6的选择器将匹配对等体的IP地址(如果是IPV6)。目前,可以使用过时的符号0.0.0.0代替%any。
398 0
strongSwan之ipsec.secrets配置手册
|
算法 网络协议 安全
strongswan之ipsec.conf配置手册(上)
strongswan之ipsec.conf配置手册
|
算法 安全 Linux
Linux配置strongSwan
Linux配置strongSwan
Linux配置strongSwan
|
网络虚拟化
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(二)
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(二)
|
网络虚拟化 数据安全/隐私保护
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(三)
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(三)
|
安全 Linux 网络安全
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(一)
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇
OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇(一)