默认情况下,Ubuntu Server 不是很安全:
- 未启用自动安全更新
- “ufw”防火墙未启用
- 必须明确创建基于 SSH 密钥的登录
- 等等...
对于我个人的使用,我遵循了以下指南:http://hardenubuntu.com/启用无人值守升级、安装 fail2ban 等。但现在我在云中经营业务,不想每次启动新实例时都手动重复所有这些步骤。是否有带有“生产就绪”安全性且不需要手动强化的 Ubuntu 发行版/变体?使用配置管理工具(Chef、Puppet、Ansible 等)的解决方案也可以。
如果没有这样的事情,那为什么没有呢?
答案1
如果你正在寻找这些功能,你需要使用Ubuntu 云镜像而不是传统的服务器映像。
- 安全更新默认处于启用状态,每隔几周就会发布新的图像并进行更新。
- 在云环境中,网络通常是开箱即用的,但如果您想使用,
ufw
可以将其打开。 - 云镜像仅接受通过 ssh 登录,如果您愿意,可以使用 cloud-init 来创建/使用任何密钥以及用户数据:https://help.ubuntu.com/community/CloudInit
从您的评论来看,您似乎想使用 Ansible 自动化部署。Ansible 和 cloud-init 是云中的一种流行模式,有很多关于如何做到这一点的指南,下面是其中的一个入门指南:
这里有一些 cloud-init 配置示例,您可以使用它们来派生您自己的自定义配置:
答案2
没有这种版本的服务器安装程序,也没有桌面安装程序,因为在安装时将某些东西“完全锁定”会给管理带来不利影响。
据我了解,这是因为“易于安装/使用”和“锁定所有内容”之间的微妙平衡非常微妙。
据我了解……
- 系统不会自动启用自动更新,因为这样做可能会影响稳定性。
- 启用
ufw
对于希望一切“开箱即用”并希望锁定防火墙规则的系统管理员来说很烦人后事情按照他们想要的方式进行(顺便说一句,这是大多数以安全为中心的服务器管理员)。 - 强制在安装后立即生成密钥是不行的,因为设置此类密钥通常需要其他系统先生成它们。立即强制密钥认证可能会堵塞设置该类型密钥认证的能力。
还请考虑一下,安全是一个持续的过程 - 从一个相对“还行”的设置开始,然后根据您的安全策略需要相应地锁定事物,这种做法比完全锁定某些东西然后随着时间的推移必须“删除”安全约束更好。
还有一个配置过程——考虑一下,如果我们作为系统管理员必须打破机器上的安全性才能设置它,然后重新保护它,那么相反的方向可以节省时间——首先配置系统,然后锁定它。这是管理/安全的典型方法...
请注意,我不是 Ubuntu 安全团队的成员,但这是现在采用该方法的最可能的原因,使用此处的具体示例。
答案3
未启用自动安全更新
自动安全更新通常不被视为生产环境的良好做法,因为它们可能导致意外停机。在生产环境中,您可以安排更新,以便通知用户/客户端并处理更新破坏配置的罕见情况。
“ufw”防火墙未启用
在大多数情况下,您需要手动设置防火墙(如 ufw);通常不可能拥有提供显著优势的“自动”配置防火墙。
像 ufw 这样的系统级防火墙的好处是限制恶意进程甚至已知进程与外界通信的能力。每个人对哪些进程应该能够与外界通信的定义都不同。如果自动配置的防火墙过于保守,那么当用户安装软件并希望该软件能够访问互联网时,就会带来麻烦。
必须明确创建基于 SSH 密钥的登录
我想不出有什么机制可以让远程用户(客户端)通过自动化流程安全地获得私钥。此外,在关闭基于密码的登录之前,它需要以某种方式验证客户端计算机是否收到了私钥。
答案4
服务器环境不适合开箱即用,因为它们可能有很大差异。Ubuntu 服务器附带的基本设置需要针对不同环境进行定制。因此,禁用或启用服务、防火墙等都取决于部署的需要。UFW 和基于密钥的登录就是需要根据需要创建的方面之一。