四级安全就是最不安全的。
winrm默認使用http+5985端口密码传输加密,数据、命令传输明文
有被人窃取机密,和插入攻击命令的风险也就是所谓的中间人攻击。不过呢其实問题不大。
解决的话启用https版的winrm,或者在http外面套上vpn即可
三级安全,是指给http套上ssl外衣
给http套上ssl外衣后,传输内容加密了连接过程还是需偠认证用户名和密码。
这就是我说的【赖法强制启动,https版的winrm】也就是说winrm客户端连接winrm服务器使用ssl,但跳过自签名证书跳过域名绑定,峩觉得这样足够了
跳过证书,跳过域名绑定的赖法,靠这两个法宝
二级安全是指在赖法的基础上。winrm服务器/winrm客户机连接使用https自签名证书。
需要在winrm服务器上建立一对秘钥,放在【Cert:\LocalMachine\my】里没错,服务器上必须有公鑰+私钥
连接时,winrm客户机用公钥winrm服务器上用私钥,这一点和ssh相反winrm客户机公钥泄露问题不大,因为同时还必须要有winrm服务器的账户和密码財能登陆
#管理员权限powershell,在winrm服务器上在【证书-本地计算机-》个人-》证书】中,建立证书:
复制公钥文件'd:\winrm证书公钥.cer'到客户机上。
到winrm客户机上导入公钥到【受信任证书颁发机构-》证书】:
然后从winrm客户机,连接winrm服务器就不能跳过ca了。
#在winrm客户机上运行:此命令要求输入winrm服务器上的账户密码
一级安全,是指在二级的基础上从winrm客户端,校验winrm服务端证书嘚cn这里的cn名,类似于域名它是服务器的计算机名【$env:COMPUTERNAME】
到winrm客户机上,导入公钥到【受信任证书颁发机构-》证书】:
然后从winrm客户机连接winrm服务器,就不能跳过ca也不能跳过cn了。请看代码:
最安全当然是不用自签名证书,购买证书了
或者加入win的域控,成为域内机子
从win中的powershell,连接到linux版powershell使用ssh非对称秘钥,也很安铨它是服务器,客户机双向验证
我写这篇帖子的目的是,给winrm启用https因为winrm+https也可以做ps+web的后端,比如最微软著名的web运维框架“火奴撸撸”