利用PowerShell Direct让VM 更安全

2020-01-15 07:12威海职业学院赵永华
网络安全和信息化 2020年1期
关键词:快照永华列表

威海职业学院 赵永华

从 Windows Server 2012 开始,系统默认会开启PowerShell远程功能,以便于管理员在任何地点都可以建立PowerShell 会话。

但为此也会出现两难局面:一方面这为通过PowerShell 远程管理虚拟机VM 提供了便利,但另一方面又存安全之虞。

此时,我们可以借助Windows Server 2016 提供的PowerShell Direct 解决难题。

PowerShell Direct 的作用在于,当我们关闭远程PowerShell 后,依然能够借助PowerShell 管理VM,它准许我们使用Hyper-V 主机上的PowerShell,此时绕开了VM 网络栈层,所以无论VM 防火墙有何限制,也与PowerShell 是否远程无关。

大多数服务器通常并没有专用键盘、鼠标和监视器,如今不再是只有走进数据中心并坐在服务器控制台上才能执行管理任务的日子了。管理员在自己的办公桌前仍然可以用PowerShell Direct,只要与Hyper-V 服务器建立PowerShell 远程会话,然后使用PowerShell Direct 连接到VM。当然,此时需要知道VM 在哪个主机上运行。

现在介绍具体操作内容。首先,笔者安装了一个名为Win10-1803 的Windows 10 虚拟机,该VM 在名为Hyper-V-4 的Hyper-V 服务器上运行。因此,要做的第一件事是在虚拟机上禁用PowerShell远程处理。为此,直接登录VM,然后输入“Disable-PSRemoting cmdlet”,如图1 屏幕快照所示。

图1 禁用远程PowerShell

禁用完成后,通过以下命令建立连通VM 的PowerShell 会话:

此时显示连接失败,此即意味着,由于禁用了PowerShell 远程功能,我们就不能建立连接VM 的PowerShell 会话,但此时我们可以利用PowerShell Direct 实现连接。

此时需要明确的是,我们所涉及的每台机器都已加入一个公共域。这样,第一步是建立与Hyper-V 服务器的PowerShell 会话,笔者称之为Hyper-V-4。

具体命令如下:

图2 显示虚拟机的进程列表

这样,我们就与远程的Hyper-V 服务器连接成功。现在该使用虚拟机了,尽管我们可以有很多管理任务,这里笔者不妨仅仅列出虚拟机中正在运行的进程。执行命令如下所示:

在上述Invoke-Command命令集中,指定虚拟机的名称。包含在脚本块中的所有命令都在虚拟机上执行。尽管禁用了PowerShell 远程处理,但仍然能够获得虚拟机的进程列表。

最后需要说明的是,使用PowerShell Direct 特性需要满足一些前提条件。

首先,虚拟机和Hyper-V主机必须运行Windows 10或者Windows Server 2016;

其次,还应该确保使用Hyper-V 管理员账户登 录 到Windows Server 2016 Hyper-V 主机当中,所有虚拟机必须运行在“本地”Hyper-V 主机当中。

猜你喜欢
快照永华列表
面向Linux 非逻辑卷块设备的快照系统①
EMC存储快照功能分析
How To Get Along With Your Friends Better
学习运用列表法
Club Recruitment
扩列吧
一种基于Linux 标准分区的快照方法
让时间停止 保留网页游戏进度
列表画树状图各有所长
2011年《小说月刊》转载列表