如何安排KVM/QEMU虚拟机的激活/终止?

如何安排KVM/QEMU虚拟机的激活/终止?

我在 Fedora 虚拟机中运行 IPv4 服务器。该服务器为一组开发人员托管 git 服务,并向互联网开放。因此,它面临着黑客攻击(主要来自乌克兰和中国)。我想减少其对不需要的访问的暴露,以提高主机的安全性(对虚拟机的访问将打开对虚拟网桥的访问,然后对 LAN 进行访问,并公开物理本地计算机)。

为了限制风险,服务器的配置非常少:基本操作系统、git、shell,但没有编译器。只有 ssh 是开放的,可以通过防火墙。正如尝试所示,ssh 服务位于不寻常端口上的事实并不会增加任何安全性。

目前,安全性依赖于强密码。

在转发到虚拟机之前对主机系统中的源 IP 进行过滤效果不佳(部分原因是所有连接似乎都来自盒子),并且可能并不理想,因为某些贡献者具有动态 IP。

虚拟机防火墙有一个白名单(本地 LAN 和一些贡献者),但我不确定其他连接是否真的被丢弃或拒绝(我更喜欢丢弃)或被允许通过。

为了保护虚拟机,我想在与开发人员达成协议后仅在某些时间段(例如 00UTC 到 01UTC)打开它。

问题每天如何安排关机时间?提供关闭虚拟机的线索。

  • 然而,这如何转化为系统机器没有/etc/rc.local

当主机系统启动时,VM 会自动启动。我想更改它以推迟虚拟机激活。

  • 一个 cron 作业会带有 virsh start <domain> 是个好主意吗?

上述问题推荐KISS原则。有更好的方法吗?

作为替代方案,可以对防火墙进行时隙编程,以便它时间窗口之外的传入数据包并仅在设定的时间间隔内接受它们?

配置:Fedora 28、KVM/QEMU、systemd 不同本地系统上的多台服务器,从互联网上命中的第一台物理机进行调度。服务器可以是真实的或虚拟的机器。后一种情况引入了另一个级别的转发。

答案1

对于 VM 关闭,可以在 VM 中使用 cron:假设您每天都需要它,我不相信为什么这可能是一件坏事。

但是,要回答您的问题,您也可以创建一个 systemd 服务以用于 shutdown -h (请参阅https://www.linux.com/blog/learn/intro-to-linux/2018/5/writing-systemd-services-fun-and-profit

现在对于启动,我肯定会使用带有 virsh 的 cron。

答案2

如果您的虚拟机设置正确,您可以使用 virsh 从主服务器触发关闭。

来自男人维尔什

shutdown domain [--mode MODE-LIST]
       Gracefully shuts down a domain.

因此,在 crontab 中,您可以设置一个用于关闭的设置,以及另一个设置用于重新启动的设置。

如果虚拟关机MYVM不起作用检查您的虚拟机中是否安装了 acpid 。

答案3

如果您想防止黑客攻击或限制其后果,那么我建议

  1. 将操作系统和数据的虚拟磁盘分开
  2. 从外部关闭虚拟机

     virsh shutdown domain; sleep 60; virsh destroy domain
    
  3. 重新初始化操作系统磁盘

相关内容