首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将authorized_keys放在自己的.ssh目录而不是根的.ssh目录中总是更好吗?

将authorized_keys放在自己的.ssh目录而不是根的.ssh目录中总是更好吗?
EN

Security用户
提问于 2015-03-16 13:24:52
回答 3查看 2.3K关注 0票数 5

白天,我从Mac的终端窗口通过ssh连接到多个Linux服务器。

在我的Mac上,我的.ssh目录中有公钥和私钥。

在Linux服务器上,登录后我总是使用"sudo“来做我需要的事情。

现在,我的公钥在Linux上主目录的.ssh目录中,在authorized_keys文件中。这样我就可以不用发送密码就登录了。

但是我注意到,由于我有su访问权限,所以我可以在.ssh目录中创建一个.ssh文件。然后,我可以以根用户身份访问ssh,而不是我的用户名。

好处是,登录后我不必做sudo su,这样就节省了一步。

缺点是,如果每个拥有su访问权限的人都这样做,我们就不会知道谁在任何时候都是通过用户命令登录的。它总是会显示出根。

但是,将我的公钥添加到~root/..ssh目录似乎“太容易”了。

在这种情况下,什么是最佳做法?一般情况下,用我自己的帐户登录,然后根据需要做sudo su会“更好”吗?

注意,我并不是问ssh作为root用户是否安全,这一点在其他地方已经讨论过了。因为我无论如何都在做"sudo“,所以我一直都是根用户,在这些机器上拥有帐户的少数用户都可以这样做,并且需要这样做才能完成他们的任务。

我一直做的是(1)登录;(2) sudo su;(3) cd到某个目录;(4)做需要做的事情并退出。我每天在多台服务器上这样做几十次。

所以我好奇的是,对于处于我这种情况的人来说,这样做是否有好处,而不是直接作为根,节省一点时间。

谢谢,

道格

EN

回答 3

Security用户

发布于 2015-03-16 13:55:50

从安全性上讲,您希望人们使用sudo而不是su (可以设置Sudo,这样它就可以记录所有活动,即k.a。审计日志)。

此外,大多数*nix根对ssh的访问是禁止的(设置在我建议您启用的设置文件中)。这是为了防止被破坏的SSH(-server)可用于根访问。

我建议的进一步安全措施是使用加密密钥(e.a。您需要为您的密钥输入密码,而不是登录提示),并使用代理来共享您的公钥。否则,我所需要的就是您的存储密钥,以获得访问,删除1个安全阈值。

此外,限制sudo (和su)仅用于系统管理任务(并且仅用于那些您不能这样做的任务)使用groups进行共享访问,而不是root

我甚至建议您每个连接使用不同的键(不要重用密钥,特别是id_rsa键),并使用. .ssh/config来设置何时使用的键。

->对“不同键”的补充说明

使用不同密钥的原因是,您具有分层安全性,因此可以更容易地撤消和替换密钥(而不是“忘记”将您锁在该密钥之外的旧服务器),如果您在每个客户端和每个连接上都这样做,则两端都有相同的选项。

特别是,如果您控制的服务器超过几个,这可能会成为一个长期的麻烦。对于某些系统,我甚至有多个密钥来隔离权限和权限(在服务器上有多个“安全区域”,具有不同的密钥(具有不同的密码),因此具有写访问权限的系统与具有shell访问权限的系统不一样。

我想指出的另一点是,使用尽可能少的权限总是更好。因此,与其使用su作为root登录,不如使用su成为一个不同的用户(无论如何,在您的文件夹中拥有写权限的用户,比如apache httpd文件夹的ubuntu上的www-data ),而不是使用您的东西,如果您确实需要使用更多的权限(更改权限和安装应用程序主要是我的权限),那么就使用"sudo 操作“而不是sudo su。它不仅保留了更清晰的审计日志,而且还限制了可能的错误(在错误的位置写入文件,将文件作为根文件写入,而这些文件应该属于when服务器,等等)。它要求你知道你在做什么。而不是只说“嘿,上次是这样的”。

“数独”就像用管状炸弹拆除墙壁一样。它移除了墙壁,但是一个简单的大锤也可以做到同样的事情(减少附带伤害)。

票数 11
EN

Security用户

发布于 2015-03-16 21:46:14

这一切都是关于管理风险--就像所有这些事情一样。

如果您经常以根用户的身份执行所有操作,我建议这是您的问题,而不是登录机制。为什么?嗯,因为你做每件事都有最大的特权。

这表明您还没有适当地设置权限和ACL。理想情况下,任何人都不应该“以root用户的身份工作”--而仅仅是偶尔升级特权,以便执行需要该权限的命令。

直接以root身份登录似乎是一个没有意义的点--特别是如果您不需要重新身份验证才能获得sudo su

就我个人而言,我建议你不要做任何一件事,而是:

  • 在需要时,对单个命令使用sudo
  • 像“你”一样正常工作。
  • 设置权限,允许“您”做您需要做的事情。

并限制您所做的root活动的数量。

票数 4
EN

Security用户

发布于 2015-03-16 20:45:41

我认为以自己的身份登录和使用sudo与将登录作为根用户只会带来一些安全上的好处。

  • 如果您不是计算机上唯一的管理员,则可以使用审计跟踪(如果您是唯一的管理员,这一点根本不适用)
  • 您必须输入密码才能使用sudo将密码提升到根,这提供了防止密钥泄露的边缘保护(这实际上并不是所有安全性;聪明的对手可能只是做一些事情,比如更改.bashrc中的路径,并制作自己的"sudo“脚本,在下次登录时保存密码)。如果您已经为无密码登录配置了sudo,则此好处根本不适用。
  • 如果您离开打开的SSH会话而不锁定您的控制台(如果您曾经这样做,我将吊销您的sysadmin许可证),您将得到更多的保护。

在我看来,大多数人建议您使用普通用户帐户登录并提升为根处理系统管理任务的主要原因并不是为了保护您不受攻击者攻击,而是为了保护您免受攻击( rm -rf中意外的额外正斜杠比作为root用户运行的危险小得多)。就我个人而言,如果我不期望在一台机器上执行非根任务,我甚至不会去处理正常的用户帐户--我只会删除它并使用root (只)。

如果你疑神疑鬼,并希望真正受益于sudo提供的额外保护,我将添加两个SSH键。为root创建一个并将其安装在/root/..ssh/authorized_key中,并为您的普通用户创建一个。编辑/etc/sudoers只允许您的普通帐户执行需要在常规基础上作为根执行的特定任务。对于其他内容,请确保您的组成员身份允许您执行您需要执行的任务。普通用户键会出现在您的计算机上。根键在一个闪存驱动器或智能卡/标记在一个消防保险箱。权衡是方便(总是如此),但如果你真的认为你需要额外的安全性,那是一种方法(不是唯一的方法,这正是我想出来的)。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/83890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档