在之前介绍了Windows Server 2016的新功能受保护的Hyper-V环境和受保护的虚拟机,对工作机制和如何保护进行了阐述,下面就开始正式给大家介绍整个部署配置的过程,当然涉及的知识点很多,我不能面面俱到给大家讲解,调核心的步骤给大家演示即可,这里模拟生产环境是basehome.com.cn域,具体的拓扑结构如下:
部署企业内部CA服务器,这里我用DC安装CA角色
添加角色服务
指定为企业
根的CA颁发机构
新建私钥
在这里一定要选择SHA256的哈希算法以及密钥字符长度2048
配置CA的功用名称
安装即可
接下来申请两张证书,一张签名的证书,一张加密的证书,首先申请签名证书
在证书中需要包含主机保护者服务群集里的名称以及每一台服务器的名称
设置好友好名称便于区别
在扩展信息处添加客户端身份验证方式
设置私钥可以被导出
下一步
保存证书注册的文件
在CA的Web Portal里提交注册申请
下载该证书
这就是我们需要的第一张签名证书了,但要求使用PFX的证书格式,所以继续(在CA protal里再下载一张根证书basehome.cer)
导入下载好的这张签名证书
选择刚下载证书的所在位置
导入到个人里
导入成功后再导出
一定要选择导出私钥
下一步
设置证书密码
导出这张签名SignCert.pfx证书的保存位置
按照同样的方法再申请一张加密encCert证书,导出成encCert.pfx
接下来部署HGS(主机保护者服务)角色HGS01(不加域)(HGS生产环境最少部署3台,先准备1台)
部署HGS角色至少需要Windows Server 2016标准版或数据中心版以上版本,这里我采用的是Windows Server 2016数据中心版
HGS服务建议安装在单独的Active Directory林中。确保在启动HGS之前计算机未加入域,并以本地计算机Administrtor身份登录
先安装HGS角色
Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart
运行以下命令安装HGS并配置域,在此处指定的密码仅适用于Active Directory的目录服务修复模式密码; 它不会更改管理员帐户登录密码。可以为HGS域提供您想设定的任何域名,在这里我设置的域名是hgs.local
$adminPassword = ConvertTo-SecureString -AsPlainText 'password@1' -Force
Install-HgsServer -HgsDomainName 'hgs.local' -SafeModeAdministratorPassword $adminPassword -Restart
接下来在新的专用林里初始化HGS群集
把刚才申请好的2张证书(encCert.pfx和SignCert.pfx)以及basehome.com.cn根证书颁发机构的根证书basehome.cer复制到HGS01服务器的C盘根目录下
HGS的架构分为2种,需要在初始化时指定:1种是TPM模式,1种是主机密钥模式
TPM模式:如果您的目标是保护虚拟机免受恶意管理员或不安全的运行环境的影响,那么您使用受TPM信任的证明。此选项适用于多租户托管方案以及企业环境中的高价值资产,例如域控制器或SQL Server或SharePoint Server等内容服务器。
主机密钥模式:如果您的要求主要是合规性保护,那么选择主机密钥模式比较适合,适用于通用数据中心。
备注:从Windows Server 2019开始,不推荐使用名为Admin-trusted attestation(基于Active Directory)
在这里我的Demo使用TPM模式:
记得先在HGS01上导入Basehome.com.cn域的CA根证书
以管理员身份打开Powershell
Initialize-HgsServer -HgsServiceName "hgs" -SigningCertificatePath "c:\signCert.pfx" -SigningCertificatePassword (ConvertTo-SecureString -AsPlainText "123456" -Force) -EncryptionCertificatePath "c:\encCert.pfx" -EncryptionCertificatePassword (ConvertTo-SecureString -AsPlainText "123456" -Force) -TrustTpm
完成后会自动创建好群集以及群集角色,相关服务账户
接下来安装受信任的TPM根证书
在每个HGS服务器上重复以下步骤:
从https://tpmsec.microsoft.com/OnPremisesDHA/TrustedTPM.cab下载最新的TPM根证书集合包
展开cab文件
cd..
cd..
mkdir .\TrustedTPM
expand.exe -F:* c:\TrustedTpm.cab .\TrustedTPM
展开完成
在展开的文件夹中运行安装脚本来安装受信任的根证书包
cd .\TrustedTPM
.\setup.cmd
安装完成
安装好的这些证书可以在这里找到
接下来到basehome.com.cn域的DC01服务器配置DNS条件转发器,建议把HGS01到03都添加进hgs.local的域里
接下来配置HGS以HTTPS进行通信
按照上面的方法一样从DC01申请一张HgsSSLCertificate并导出成HgsSSLCertificate.pfx证书,该证书需要包含HGS服务名称、群集名称以及所有HGS服务器名称
把该证书复制到HGS01服务器的C盘根目录下
在HGS01服务器上以管理员身份打开Powershell执行(每台HGS服务器都要这样操作)
Set-HgsServer -Http -Https -HttpsCertificatePath 'C:\HgsSSLCertificate.pfx' -HttpsCertificatePassword (ConvertTo-SecureString -AsPlainText "123456" -Force)
备注:上面这条命令在Windows Server 2019上OK,在Windows Server 2016时报错,可以采用通过thumbprint引用它。
或者,如果您已将证书安装到本地证书库中,则可以通过thumbprint引用它(证书指纹)
备注:使用SSL证书配置HGS不会禁用HTTP端点。如果您希望仅允许使用HTTPS端点,请将Windows防火墙配置为阻止到端口80的入站连接。请勿修改 HGS网站的IIS绑定以删除HTTP端点; 这样做是不支持的
接下来就可以配置其他HGS节点了,也就是配置HGS02和HGS03
首先将HGS节点服务器提升为域控制器,比如HGS02
先安装HGS角色Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart
再提升为域控
$adSafeModePassword = ConvertTo-SecureString -AsPlainText 'password@1' -Force
$cred = Get-Credential 'hgs\Administrator'
Install-HgsServer -HgsDomainName 'hgs.local' -HgsDomainCredential $cred -SafeModeAdministratorPassword $adSafeModePassword -Restart
重启好以后吧HGS02加入现有HGS群集
Initialize-HgsServer -HgsServerIPAddress 10.20.30.51
同样的把上面用到的三张PFX证书、Basehome.com.cn域的根证书以及展开的TrustedTPM文件夹复制到HGS02服务器
将三张PFX证书手动导入到计算机账户的个人证书里(记得先导入basehome.com.cn根证书)
记得检查根证书是否存在
安装TPM根证书
cd c:\TrustedTPM
.\setup.cmd
设置允许HTTPS来进行提供安全访问服务
Set-HgsServer -Http -Https -HttpsCertificatePath 'C:\HgsSSLCertificate.pfx' -HttpsCertificatePassword (ConvertTo-SecureString -AsPlainText "123456" -Force)
最后验证HGS配置是否OK
Get-HgsTrace -RunDiagnostics
因为没有主机注册,所有Fail
可以执行Get-HgsTrace -RunDiagnostics -Detailed查看更加完整的验证测试结果
同时可以看到HGS.LOCAL域的HGS01服务器AD里出现了3个hgs的本地安全组
到这里主机保护者服务(HGS)就配置完成了。