还能这么玩?Windows通过netsh命令配置IPsec

2b5d4dc5425f8887f653d608127da47a.gif

正文共:1024 字 6 图,预估阅读时间:2 分钟

前面介绍过IPsec协议规范和相关的配置实验IPsec合集。协议规范IPsec:RFC2401-互联网协议的安全架构里面也提及了,IPsec定义了两种类型的SA:传输模式和隧道模式。传输模式 SA 是两个主机之间的安全联盟。隧道模式SA是两个安全网关之间的安全联盟。既然之前测试的都是安全网关之间的隧道模式的IPsec,那我想你大概率没有接触过主机之间的传输模式的IPsec。

那怎么测试呢?

那就用两台Windows创建IPsec试一下吧。

首先铺垫一下,Windows的IPSec执行基于由IETF开发的标准执行的,也就是RFC2401。

传输模式下,IPsec建立的也是从源IP地址到目标IP地址的SA,加解密工作在各自的终端实现,可能是“Bump-in-the-stack”(BITS),也可能是“Bump-in-the-wire”(BITW),此处只要考虑BITS。

和隧道模式类似,也需要保护的数据流量和安全策略。Windows下的策略由 IPSec策略设置和规则组成,配置方式为netsh命令。

再快速了解一下netsh(Network shell),它可以在运行 Windows Server的计算机上安装各种网络通信服务器角色和组件后,配置和显示它们的状态。

在大多数情况下,netsh命令提供的功能与为每个服务器角色或组件使用 Microsoft 管理控制台(Microsoft Management Console,MMC)管理单元时可用的功能相同。

此外,还有用于网络技术的netsh命令在Windows中无法作为MMC管理单元使用,例如 IPv6、网络桥接和远程过程调用 (remote procedure call,RPC)等。

924dc15a43312bd8aeba92fd65b81bc4.png

netsh 命令

7a33989a38ff494134174e6e2212fdbb.png

截自Windows CMD回显。

下列指令有效:
此上下文中的命令:
..             - 移到上一层上下文级。
?              - 显示命令列表。
abort          - 丢弃在脱机模式下所做的更改。
add            - 在项目列表上添加一个配置项目。
advfirewall    - 更改到 `netsh advfirewall' 上下文。
alias          - 添加一个别名
branchcache    - 更改到 `netsh branchcache' 上下文。
bridge         - 更改到 `netsh bridge' 上下文。
bye            - 退出程序。
commit         - 提交在脱机模式中所做的更改。
delete         - 在项目列表上删除一个配置项目。
dhcpclient     - 更改到 `netsh dhcpclient' 上下文。
dnsclient      - 更改到 `netsh dnsclient' 上下文。
dump           - 显示一个配置脚本。
exec           - 运行一个脚本文件。
exit           - 退出程序。
firewall       - 更改到 `netsh firewall' 上下文。
help           - 显示命令列表。
http           - 更改到 `netsh http' 上下文。
interface      - 更改到 `netsh interface' 上下文。
ipsec          - 更改到 `netsh ipsec' 上下文。
ipsecdosprotection - 更改到 `netsh ipsecdosprotection' 上下文。
lan            - 更改到 `netsh lan' 上下文。
namespace      - 更改到 `netsh namespace' 上下文。
nap            - 更改到 `netsh nap' 上下文。
netio          - 更改到 `netsh netio' 上下文。
offline        - 将当前模式设置成脱机。
online         - 将当前模式设置成联机。
popd           - 从堆栈上打开一个上下文。
pushd          - 将当前上下文放入堆栈。
quit           - 退出程序。
ras            - 更改到 `netsh ras' 上下文。
rpc            - 更改到 `netsh rpc' 上下文。
set            - 更新配置设置。
show           - 显示信息。
trace          - 更改到 `netsh trace' 上下文。
unalias        - 删除一个别名。
wfp            - 更改到 `netsh wfp' 上下文。
winhttp        - 更改到 `netsh winhttp' 上下文。
winsock        - 更改到 `netsh winsock' 上下文。

共有下列的子上下文可用:

advfirewall、branchcache、bridge、dhcpclient、dnsclient、firewall、http、interface、ipsec、ipsecdosprotection、lan、namespace、nap、netio、ras、rpc、trace、wfp、winhttp、winsock。

若需要命令的更多帮助信息,请键入命令,接着是空格,

后面跟 ?。

c764df222c21a7ffb2871d324c4b2ae8.png

netsh ipsec 命令

b4227b9efa76e1918c9fb7a9974ec107.png

下列指令有效:
此上下文中的命令:
?              - 显示命令列表。
dump           - 显示一个配置脚本。
dynamic        - 更改到 `netsh ipsec dynamic' 上下文。
help           - 显示命令列表。
static         - 更改到 `netsh ipsec static' 上下文。
下列的子上下文可用:
dynamic,static。

这里我们使用静态配置的IPsec,也就是dynamic。

ea2cc0364ea8d6e172b92387d4f53ba7.png

netsh ipsec static 命令

304bba72f136c8f8a35db2f3819e8c65.png

此上下文中的命令:
?              - 显示命令列表。
add            - 创建新的策略和有关信息。
delete         - 删除策略和相关信息。
dump           - 显示一个配置脚本。
exportpolicy   - 从证书存储中导出所有策略。
help           - 显示命令列表。
importpolicy   - 从文件导入策略到证书存储。
set            - 更改现存策略和相关信息。
show           - 显示策略和相关信息的详细信息。

所以此处主要使用add、set和show 3条命令。

a6e2075bf2922a69a218a4272180836d.png

netsh ipsec static add 命令

18ac386b6696f9b140de7328dde42123.png

命令从 netsh 上下文继承:
add helper     - 安装一个帮助者 DLL。
此上下文中的命令:
add filter     - 将筛选器添加到筛选器列表。
add filteraction - 创建一个筛选器操作。
add filterlist - 创建一个空的筛选器列表。
add policy     - 用默认响应规则创建策略。
add rule       - 为指定策略创建一个规则。

c3054c71fe679e46dc6a007f82973be8.png

add policy(创建策略)

用法:

policy [ name = ] <string>
[ [ description = ] <string> ]
[ [ mmpfs = ] (yes | no) ]
[ [ qmpermm = ] <integer> ]
[ [ mmlifetime = ] <integer> ]
[ [ activatedefaultrule = ] (yes | no) ]
[ [ pollinginterval = ] <integer> ]
[ [ assign = ] (yes | no) ]
[ [ mmsecmethods = ] (sec#1 sec#2 ... sec#n) ]

用指定名称创建一个策略。

参数:

c8edcc7ceeb0eb8bc7182923de1c78af.png

注释:

1. 如果指定了 mmpfs,qmpermm 将设置为 1。

2. 如果存储为 "domain",则 "assign" 将不起作用。

3. 不推荐使用 DES 和 MD5。提供这些算法仅用于向下兼容。

示例:

add policy Policy1 mmpfs= yes assign=yes mmsec="3DES-SHA1-3 DES-MD5-3 3DES-MD5-2"

配置命令:

netsh ipsec static add policy ipsec

8cbb786e63172d66fdb886d0a00d33e4.png

add filteraction(创建筛选器操作)

用法:

filteraction [ name = ] <string>
[ [ description = ] <string> ]
[ [ qmpfs = ] (yes | no) ]
[ [ inpass  = ] (yes | no) ]
[ [ soft = ] (yes | no) ]
[ [ action = ] (permit | block | negotiate) ]
[ [ qmsecmethods = ] (neg#1 neg#2 ... neg#n) ]

创建一个筛选器操作。

参数:

48e133a66a762139a0b852dde6c68113.png

注释:

1. 如果操作不是 negotiate,快速模式安全方法将被忽略

2. 不推荐使用 DES 和 MD5。提供这些算法仅用于向下兼容。

示例:

add filteraction name=FilterA qmpfs=yes soft=y action=negotiate qmsec="AH[MD5]:204800k/300s ESP[DES,SHA1]:30000k/480s"

配置命令:

netsh ipsec static add filteraction name=PASS action=permit

305ab679fecca9f131d81c486c5c4c6f.png

add filterlist(创建筛选器列表)

用法:

filterlist [ name = ] <string>
[ [ description = ] <string> ]

用指定名称创建一个空的筛选器列表。

参数:

88af5dd806ed501a0fffb9f3172c711e.png

示例:

add filterlist Filter1

配置命令:

netsh ipsec static add filterlist FLIST

2faec1470607dc161b111b2b3e4d13c6.png

add filter(创建筛选器)

用法:

filter [ filterlist = ] <string>
[ srcaddr = ] (ipv4 | ipv6 | ipv4-ipv4 | ipv6-ipv6 | dns | server)
[ dstaddr = ] (ipv4 | ipv6 | ipv4-ipv4 | ipv6-ipv6 | dns | server)
[ [ description = ] <string> ]
[ [ protocol = ] (ANY | ICMP | TCP | UDP | RAW | <integer>) ]
[ [ mirrored = ] (yes  |  no) ]
[ [ srcmask = ] (mask | prefix) ]
[ [ dstmask = ] (mask | prefix) ]
[ [ srcport = ] <port> ]
[ [ dstport = ] <port> ]

将筛选器添加到指定的筛选器列表。

参数:

e4cb6fd36c99df4737f682dd4c82e9f5.png

注释:

1. 如果筛选器列表不存在,将创建它。

2. 要指定当前计算机地址,请设置 srcaddr/dstaddr=me

要指定所有计算机地址,请设置 srcaddr/dstaddr=any

3. 服务器类型可以是 WINS、DNS、DHCP 或 GATEWAY。

4. 如果源是一个服务器类型,则目标为 "me",反之亦然。

5. 如果指定了地址范围,终结点必须为特定地址(非列表或子网)和相同类型地址(两者均应为 v4 或 v6)。

示例:

1. add filter filterlist=Filter1 192.145.168.0 192.145.168.45 srcmask=24 dstmask=32
2. add filter filterlist=Filter1 srcaddr=DHCP dstaddr=0.0.0.0 protocol=ICMP srcmask=255.255.255.255 dstmask=255.255.255.255
3. add filter filterlist=Filter1 srcaddr=me dstaddr=any
4. add filter filterlist=Filter1 srcaddr= E3D7::51F4:9BC8:00A8:6420 dstaddr= ME
5. add filter filterlist=Filter1 srcaddr= 192.168.2.1-192,168.2.10 dstaddr= ME

配置命令:

netsh ipsec static add filter filterlist=FLIST 172.31.0.229 172.31.0.235

74e1f67f269a7e57bf18436ae9fafeb7.png

add rule(创建规则)

用法:

rule [ name = ] <string>
[ policy = ] <string>
[ filterlist = ] <string>
[ filteraction = ] <string>
[ [ tunnel = ] (ip | dns) ]
[ [ conntype = ] (lan | dialup | all) ]
[ [ activate = ] (yes | no) ]
[ [ description = ] <string> ]
[ [ kerberos = ] (yes | no) ]
[ [ psk = ] <preshared key> ]
[ [ rootca = ] "<certificate> certmap:(yes | no) excludecaname:(yes | no)" ]

用指定的筛选器列表和筛选器操作创建一个规则。

参数:

557fc8c35bb71e37fa41bacdac640cb9.png

注释:

1. 证书,映射和 CA 名称设置要在引号中引起来,内嵌的引号将被“\'”所代替。

2. 证书映射只对域成员有效。

3. 可以多次使用 rootca 参数来提供多重证书。

4. 每种身份验证方法的优先级由在命令中的顺序来决定。

5. 如果没有指定身份验证方法,将使用动态默认。

6. 排除根证书颁发机构(CA)名称防止将名称作为证书请求的一部分发送。

示例:

1. add rule name=Rule policy=Policy filterlist=Filterlist filteraction=FilterAction kerberos=yes psk="my key" rootca="C=US,O=MSFT,CN=Microsoft Authenticode(tm) Root Authority" rootca="C=US,O=MSFT,CN=\’Microsoft North, South, East, and West Root Authority\’ certmap:yes excludecaname:no"
2. add rule name=ipsec policy=ipsec filterlist=FLIST filteraction=PASS  psk="ipsec"

配置命令:

netsh ipsec static>add rule name=ipsec policy=ipsec filterlist=FLIST filteraction=PASS psk="ipsec"

f9a554e3951c706ead9b335a65024962.png

netsh ipsec static set 命令

e4900c2ec603e95eb519b8a19c4d65f2.png

命令从 netsh 上下文继承:
set file       - 复制控制台输出到文件。
set machine    - 设置在上面操作的机器。
set mode       - 设置当前模式为联机或脱机。
netsh ipsec static此上下文中的命令:
set batch      - 设置批更新模式。
set defaultrule - 更改默认响应规则。
set filteraction - 更改筛选器操作。
set filterlist - 更改筛选器列表。
set policy     - 更改策略。
set rule       - 更改规则。
set store      - 设置当前策略存储。
set policy(更改策略)

用法:

policy [ name = ] <string> | [ guid = ] <guid>
[ [ newname = ] <string> ]
[ [ description = ] <string> ]
[ [ mmpfs = ] (yes | no) ]
[ [ qmpermm = ] <integer> ]
[ [ mmlifetime = ] <integer> ]
[ [ activatedefaultrule = ] ( yes | no) ]
[ [ pollinginterval = ] <integer> ]
[ [ assign = ] (yes | no) ]
[ [ gponame = ] <string> ]
[ [ mmsecmethods = ] (sec#1 sec#2 ... sec#n) ]

更改策略。

参数:

6dc7a53990c7e392af0fe250b1e9bb19.png

注释:

1. 如果指定了 mmpfs,qmpermm 将设置为 1。

2. 只有将 store 设置为 domain 时,才能指定 GPO 名称。

3. 不推荐使用 DES 和 MD5。提供这些算法仅用于向下兼容。

示例:

1. set policy name=Policy mmpfs=y gpo=DomainPolicy assign=y
2. set policy guid={11E6E97E-0031-49f5-AC7D-5F2FE99BABAF} newname=NewName gpo=DefaultDomainPolicy assign=y

配置命令:

netsh ipsec static>set policy name=ipsec assign=y

713f8c84411c7272668b95de63cce3c4.png

netsh ipsec static show 命令

575ddbab281e201380bd7528f2cc0ff0.png

下列指令有效:
命令从 netsh 上下文继承:
show alias     - 列出所有定义的别名。
show helper    - 请列出所有顶层的帮助者。
show mode      - 显示当前的模式。
此上下文中的命令:
show all       - 显示所有策略的详细信息及相关信息。
show filteraction - 显示筛选器操作详细信息。
show filterlist - 显示筛选器列表详细信息。
show gpoassignedpolicy - 显示组分配的策略的详细信息。
show policy    - 显示策略详细信息。
show rule      - 显示规则的详细信息。
show store     - 显示当前策略存储。

5a12c0fbdaada31ca46a2136d0e5a43b.gif

长按二维码
关注我们吧

74e189bb36cb1b001f2f95b8eeb72287.jpeg

015a1eafc635ca31d692137e826c2728.png

OpenvSwitch基础命令

软路由是啥?OpenWrt又是啥?长啥样?在VMware装一个瞅瞅

从零开始安装一个VPP要多久?半小时,不能再多了!

不用半小时,最快8分钟即可在CentOS上完成VPP的部署

成了!基于VPN虚链路的负载均衡测试成功!

openEuler操作系统难道是CentOS的换壳?

付出总有回报,全国SRv6组网实验成功了!

如果学不会SRv6,那就学一下VSR的抓包吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>