通过 SSH 对 root 可访问的文件进行安全的远程编辑

通过 SSH 对 root 可访问的文件进行安全的远程编辑

根据安全最佳实践,不应允许使用密码或密钥通过 SSH 以 root 身份登录。相反,应使用 sudo。

但是,如果想要使用 SSH(SFTP)远程编辑服务器配置文件(例如 /etc 中的文件(Apache、Cron,随便什么都可以),该怎么做呢?

  • 通过 SFTP 进行 root 可访问文件远程编辑是否符合安全最佳实践

  • 如何设置文件权限、用户组等以遵循安全最佳实践

目前我使用受密码保护的公钥身份验证以 root 身份登录,但我不确定是否可以采取更安全的做法,以便可以完全禁用面向 root 的 SSH 登录。

服务器是Ubuntu 12.04。

答案1

如果确实需要远程编辑,一个简单的解决方案就是在另一个本地用户上保留 /etc(或其中的一部分)的副本,并设置系统以将更改从那里复制到实际的 /etc。更好的方法是使用 git —— 或 svn,或您选择的任何其他版本控制系统 —— 这样您还会有额外的更改日志。

还可以在 SFTP 上设置 chroot 并禁用特定帐户的正常登录 - 或者限制该用户仅从指定的 IP 地址登录 - 使用与 OpenSSH 相同的功能(匹配组等)。关于这一点,请查看http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

但是请记住,/etc 上的大多数配置文件都可以通过编辑获得 root 访问权限。我见过使用 svn/git 配置的系统在接受文件更改之前检查配置文件的有效性——这可用于仅接受安全的配置格式。

无论如何,这个问题有很多不同的解决方案。这只是其中一种方法。

答案2

我不明白为什么不能通过 SSH 使用 sudo 编辑这些文件。我经常这样做,例如

sudo nano /etc/apache2/sites-available/default

如果您想使用 GUI 编辑器,您可以使用 X 隧道。您必须在 ssh conf 文件中允许它,然后-X在 ssh 命令行上使用该选项。

ssh -X server.example.com

然后您可以使用 GUI 编辑器编辑该文件:

sudo gedit /etc/apache2/sites-available/default

答案3

这个答案有关如何通过 Sublime Text 中的 SSH 隧道执行此操作的示例。

相关内容