我手动配置了几个系统。我想现在开始更系统地工作。
我对 openssh-server 的配置比 Debian 默认设置更严格,以排除密码猜测攻击。
所以我研究了一些系统配置序列。我注意到 SSH 是一个问题。当您在 Debian 上安装 openssh-server 时,它会立即开始以默认配置运行(与 Fedora 不同)。
问题:建议安全配置 SSH 的顺序,以避免这种竞争情况。
例如,我想在一个桌面系统上使用 SSH,而其他用户从来不需要 SSH 访问。他们不使用任何远程访问系统。强制执行“安全密码”会浪费我们的时间。限制远程访问/etc/sshd_config
更简单,安全性也更好。
我有时还会创建本地帐户用于测试目的。 (令人尴尬的是,我有一个这样的帐户成为 SSH 蠕虫病毒的受害者)。
答案1
顺序
/etc/ssh/sshd_not_to_be_run
如果未安装 openssh-server,则创建一个空文件。 (编写此条件的一些选项这里)- 安装 openssh-server
/etc/ssh/sshd_config
根据需要编辑消除
/etc/ssh/sshd_not_to_be_run
跑步
systemctl enable ssh systemctl systemctl restart ssh
或经过充分测试的等效项。
restart
如果服务尚未启动,则似乎工作正常(比较condrestart
try-restart
)。我注意到systemctl enable --now
如果服务已启用但未运行,则不会启动该服务。
未使用的选项
这些是我发现并决定不使用的其他选项。
这个问题已在以下位置讨论过:Debian 用户。遗憾的是,竞争条件尚未解决。 Debian 维护者建议配置
policy-rc.d
为阻止invoke-rc.d ssh start
程序包中的调用postinstall
。有笨重的细节细节虽然笨拙,但可以实现。不幸的是,事实并非如此。它不会阻止竞争条件。 与包也运行的命令policy-rc.d
无关。update-rc.d ssh enable
这可能会因错误时间的电源故障或系统崩溃而暴露。请注意
openssh-server
包装上的建议ufw
:)。 Ubuntu 创建ufw
为一个非常简单的防火墙。我有点困惑它是什么“用户故事”起初编写的,但在 Ubuntu Oneiric 中它用于支持可信网络的概念,就像 Windows 一样。您可以安装
ufw
并滥用它来阻止 SSH,直到您配置它为止。当然,这假设不存在将ufw
当前网络视为可信的配置。呵呵。我不喜欢这个选项还有两个原因。我一直在将序列作为单独的
ansible
角色来编写。首先,此选项意味着 SSH 角色会干扰防火墙配置。即使主机不需要防火墙。 (或者,如果您正在增量地编写这些序列......也许您有一个现有的防火墙,它甚至没有像 ufw 这样方便自动化的命令)。第二个缺点是 ansible 角色被设计为幂等的。您可以更新您的 ansible 角色并运行单个命令来应用它们。它将突出显示实际改变系统的任务与已经匹配的任务。您可以根据服务的配置是否已修改(而不是已经匹配)来重新启动服务。它不适合无条件打开和关闭防火墙配置的模型。您可以在尚未安装 openssh-server 的情况下将此设置为条件,但这不是您在文档示例中看到的常见习惯用法之一。您要么需要 ansible 2.2,才能申请
check_mode: yes
,service name=ssh
或者您需要围绕 dpkg 的脚本。编辑:你可以
创建一个符号链接maskssh.service
,在安装包之前。我不介意假设使用 systemd,但是自动化这会有点烦人。我认为软件包安装会返回错误,并保留已安装的软件包,但状态为“未配置”。修复配置后“重新配置”包并不难。令人烦恼的是,您必须忽略软件包安装过程中的错误。当可能出现另一个错误时,您可能会冒继续操作的风险。对于适当的自动化来说,这尤其是一个问题,但如果您遵循手动检查表,它也可能很烦人。sshd_config
提前创建一个。我测试了这个,它没有被覆盖。问题:包装sshd_config
不见了。 (我也在 Fedora 上尝试过这个 - 他们会给你一个警告并创建 sshd_config.rpmnew)。如果您想将配置基于打包的配置...即使包没有丢失其文件,它也会变得复杂。@Ipor-Sircer 链接的答案之一指出 Debian 可以使用
dpkg-divert
.debootstrap
在 上使用这个start-stop-daemon
。我们可以update-rc.d
结合选项 1 来转移。现在我们正在编写两个临时脚本......侵入性较小,我们可以尝试使用它来转移
/etc/sshd_config
.这将允许保留打包的配置文件以供检查,并且通过明确防止覆盖,它可能会更加健壮。不幸的是,事实证明它dpkg-divert
不会影响sshd_config
,因为该文件是由安装后脚本动态生成的。这可能解释了选项 5 中缺少警告的原因。
最后一点是有人指着包裹向我解释的源代码。然后我注意到sshd_not_to_be_run
postrm 脚本中对 的引用。