* nix的唯一用户(尤其是Linux和MacOS)是否应该有两个帐户,一个具有sudo特权,而一个没有sudo特权?几年前,我读到您应该在您的个人计算机上以非特权用户身份执行日常任务,并切换为特权用户来执行管理任务。

注意:我不是在指您是否应该以root用户身份登录以进行日常使用。显然,这是个坏主意,但是您的日常使用帐户是否应该能够使用sudo?

第二个注意事项:我专门指的是不用作服务器或承载远程任何功能的个人设备用户。

评论

阅读的建议可能意味着建议您将非root用户用于日常任务,将root用于管理任务,因此仅使用具有sudo特权的普通帐户就已经可以满足此建议。

我有一个可以特权使用(没有密码)的非特权帐户,但是不能对其他任何东西使用sudo。它对于运行可能存在安全漏洞但在有点沙盒化的环境中连接到网络(例如torrent文件)的软件非常方便:它无法修改我的.bashrc或.ssh /之类的东西。

我试图标记这种最佳做法,但由于某些令人讨厌的原因而使防御成为别名。现在,它不会让我取消标记。

出于安全原因,简单Linux服务器是否真的需要非root用户?

@tylerl我争辩为非重复,因为服务器与个人计算机大大改变了问题范围。

#1 楼

更新69次后就得到了戏剧性的更新,请参阅回答历史以获取原始答案。感谢@JimmyJames的讨论。

首先,让我们谈谈威胁模型:您正试图阻止潜在的攻击者做什么?用户系统
通常对于最终用户系统,事实上的威胁模型是身份盗窃/勒索软件。如果攻击者可以访问您的文档和/或可以像您一样运行Shell命令,那么游戏就结束了。从这个角度来看,root用户访问权不会给攻击者任何好处。如果不担心身份盗窃/恶意软件,那么无论您的用户是否拥有sudo功能,或者浏览器是否具有功能,这似乎都无关紧要正在以root用户身份运行。
(我还要指出,由于没有root用户访问权限,恶意软件/将您连接到僵尸网络可能会发生,因为登录脚本/安排cron作业不需要root用户。)。
XKCD上的Randall Munroe似乎同意以下观点:

最后,我要添加以下免责声明:是的,我知道这与“提高安全性总是更好”的一般公众意见相悖。这不是真的。有时,更高的安全性会更糟,例如过于复杂的密码策略最终会迫使人们写下他们的密码。您始终必须查看风险并确定实际需要多少安全性。在这种情况下,锁定根访问没有什么害处,但是您使生活变得更加复杂,而且还不清楚从中获得什么。
威胁模型:根访问或多用户系统
如果您有一个威胁模型,其中攻击者希望仅root用户可以访问的东西,或者计算机上有多个用户帐户,那么答案实际上取决于您所指的* nix。这很快就会从个人计算机机箱移到服务器机箱,但无论如何我都会讨论。对于Linux,由于Xorg窗口系统中的错误(* ahem功能*),您的日常帐户可能不具有sudo的功能。对于不使用X的操作系统,可能没问题。
Linux(正在运行X.org窗口系统)
这是一篇很棒的文章,向您展示了如何使用A来记录gui linux计算机上的所有击键。简单的用户级(非root)shell命令。总结:
$ xinput list向您显示所有已连接的人工输入设备
$ xinput test <id>开始回显所选设备上的所有击键。
我测试了一下,并得到了输入密码的日志,该密码在不同的终端窗口。如果我锁定计算机,那么当我重新登录时,我会看到在锁定屏幕中输入的密码日志。显然,这不是X中的错误,它是一个功能。是的,我现在要藏在床下。
是的,这支持这样的想法,即您使用gui登录的任何用户都不应具有sudo的权限,因为登录密码然后成为root用户很简单。我想您应该有一个专用于sudo的帐户,并在要使用sudo时切换到TTY终端(ctrl+alt+#)。是否值得担心取决于您:个人而言,我关心的所有数据都已经存在于我的用户帐户中,但是我可能是安全专家,因此我可能会更改笔记本电脑的设置。
注意在我的测试中,我无法跨用户进行键盘记录。在gui中或在新的tty终端中执行sudo似乎在启动“切换帐户”,这将启动X的隔离实例。这是Wayland(旨在替代X的窗口系统)实际上试图解决的问题之一(请参阅安全性的要点)。请记住,X11起源于威胁模型与当今的威胁模型大不相同的时候。

对于sysadmins:这加强了仅通过ssh与Linux机器交互的习惯,从不使用GUI。
Mac OSX
我不是OSX专家,但我知道它没有使用Xorg服务器,因此我认为Apple的GUI可以正确处理此问题,但是我希望有一个比我更专业的人权衡一下。
Windows
我也不是Windows专家,但我相信Windows 7中引入的用户帐户控制(UAC)功能通过在安全桌面中呈现管理员提示来解决此问题。输入总线与常规桌面隔离。

评论


让我们继续聊天中的讨论。

– JimmyJames
16年11月2日在19:47

要扩展此概念,使用多个用户帐户才能真正保护您,前提是您将工作流分散到这些帐户中以保护数据。例如,仅访问一个帐户的银行帐户和财务/个人信息,而其余的次要/风险较大的互联网操作则使用其他帐户。也许只为您的电子邮件使用第三个。 Qubes-OS充分利用了这一理念,但在更分离的级别上,针对不同的任务运行单独的虚拟机。

–cscracker
16-11-3在17:23



@MikeOunsworth:感谢您指出X固有的主要安全风险。如果我理解正确,那么只有在攻击者可以访问计算机上的帐户的情况下,这种攻击才有用。就我而言,我是个人计算机上的唯一用户,因此,如果攻击者可以运行xinput,那么它已经是游戏结束了。我了解您/情况正确吗?附带说明一下:人们对X中的这个巨大漏洞不满意吗?

– Ender Wiggin
16年11月3日,18:36



嗯-奇怪的错误不会让我转移它们...会调查一下。大家可以使用聊天进行讨论吗?谢谢

–Rory Alsop♦
16年3月3日,19:40

@MikeOunsworth这是Wayland试图解决的事情之一(请参阅安全性的要点)。请记住,X11起源于威胁模型与当今的模型大不相同的时候。

–用户
16年11月4日在15:04

#2 楼

在大多数情况下,要求使用sudo的密码就足以提供足够的保护。如果威胁模型假设攻击者拥有您的帐户密码,那么您已经很麻烦了,root帐户上的其他密码可以保护您免受威胁。

评论


回复:输入相同的登录密码,您当然可以设置targetpw或rootpw进行更改。

–muru
16年11月1日,下午1:54

sudo只能阻止不想走得太远的合法用户和程序。但是对于黑客来说,很容易设置模仿sudo的程序,或者在超时之前运行sudo,并在用户下次使用sudo时获得许可。

–user23013
16年11月1日在19:34

他们可以对su做同样的事情。

–熊佳亚诺夫
16年11月1日在20:12

“使用sudo,您输入与登录时使用的密码相同”-这取决于配置。请参阅sudoers中的rootpw和runaspw标志。

– Ben Voigt
16年11月3日在15:46

#3 楼

我发现在我的Unix系统上拥有两个帐户非常重要,其原因如下:

如果我弄乱了.bashrc或其他登录/终端设置文件,我会陷入无法解决的情况甚至登录。所以我很无聊。这是最糟糕的情况,因为如果无法登录,您将无法做很多事情。我进入并使用sudo,为我的主帐户修复启动文件。然后,我注销我的帐户“ 2”,然后回到我的常规帐户。

有时我可能可以使用从USB引导选项,但老实说,我发现能够登录另一个帐户,使用sudo并修复我的.bashrc,然后注销并重新登录到另一个帐户都可以在几秒钟内完成,并且第二次登录对我来说比USB引导修复选项少得多。当然是YMMV(您的里程可能非常大)

评论


您不能以root用户身份登录以解决问题吗?

–加密器
16年11月1日在10:37

@enkryptor:取决于您的发行版。例如,Ubuntu默认禁用root帐户。因此,在Ubuntu系统上,如果您通过执行“ sudo passwd root”启用了root帐户登录,那么可以说您已经创建了两个帐户,尽管这不是发问者在说的:-)如果您还没有, t启用它,然后否,您不能以root用户身份登录以解决问题。

–史蒂夫·杰索普(Steve Jessop)
16-11-1在11:46



您可以从GRUB使用恢复模式或引导Live CD对其进行修复。

–user31389
16年11月1日在13:45

@ user31389>如果是远程服务器则不行。否则可能要收费,具体取决于托管服务提供商。

–光谱
16年11月1日在18:12

@XtraSimplicity当然可以。托管虚拟机?您将无法从虚拟化环境之外访问它。在这方面与物理服务器相同。高端托管服务提供商将允许您访问OOB管理(例如DRAC或IPMI),中端托管服务提供商仅会在应急映像上提供重新引导。低端通常会要求您向他们的团队收取人工干预的费用。使用虚拟机时,工具会发生变化,但概念将相同。

–光谱
16-11-2在6:53



#4 楼

我使用的是此设置,但原因不仅仅限于一个系统。 Linux),则需要备份到具有多个修订版本的外部系统。

但是,我没有专用的工作站/终端来管理备份服务器。为此,以单独的用户身份登录(不使用su)在此处提供了一层保护。如果我的常规登录名具有sudo特权,则仍然会出现速度障碍,但它会非常薄(模糊不清,恶意软件必须捕获sudo密码)。

#5 楼

sudo的好处是什么?

您无需与每个用户共享root密码即可在您自己的系统上执行某种类型的管理任务。

短时间(15分钟)后自动失效,您可以将timestamp_timeout=0下的/etc/sudoers设置为使sudo密码每0(零)秒失效一次。这意味着每次使用sudo时,都会要求您输入密码。

sudo的缺点是什么:

当用户使用弱密码时,它将允许攻击者可以快速破解用户密码并提升特权以获得root用户访问权限。在某些Linux发行版(如Ubuntu)中,默认情况下可以锁定root密码。为什么?

由于存在root帐户,攻击者将首次尝试强行使用root密码。如果禁用了根帐户,将会更加复杂。

用户可以通过知道root密码来更改系统文件的所有权,或者通过执行恶意程序来损害系统。

评论


我看不到如何讨论拥有一个帐户与两个帐户(一个拥有sudo特权,一个没有sudo特权)的相对优点。您可以编辑以澄清这一点吗?

–用户
16年11月4日在15:15

#6 楼

所有PC用户都应至少具有本地管理员,但常识要求对此进行密码保护(Android用户请注意这一点。)。根据使用情况,我认为没有理由不能只有一个帐户。 Puppy Linux就是这种情况,并且已经成功了很多年。但是,对于那些笨拙和/或愚蠢的情况,最好具有两个级别的保护和一个单独的/ sbin文件夹。对接拨号是一回事,对接删除目录是另一回事。懒惰的用户只会将所需的所有内容添加到sudoers文件中。
特权提升通常首先取决于对某个帐户的访问权限,因此我们对此进行控制。服务器和设备上的帐户需要证明是合理的,并且我们很关心我们的工作站被用作事实上的设备。关键是,对于许多PC,没有其他实际用户。

#7 楼

无论使用哪种操作系统,每台计算机都需要一个管理员帐户。好的,大多数Linux风格通过给root用户提供一个不存在的密码来隐藏root用户-在某种意义上,任何输入都将返回false-但是root确实存在并且用户ID为0。

该管理员帐户可以将任何内容更改为系统,包括普通用户不允许的内容。这里的防线是,如果攻击者偶然地(*)获得了对根用户的访问权限,则他可以轻松地安装后门以随意获得它。而且,除非您定期定期分析系统的安全性(日志,系统文件中的更改等),否则您几乎不会注意到它。

如果攻击者获得了非root帐户的访问权限偶然地,他将只能对该帐户可访问的内容进行更改。好的,如果他设法获得了外壳,他可以更改密码,但是下次您尝试登录时,您一定会注意到它!

,这意味着不使用root的防御措施仅是针对远程的攻击-如果有人可以物理地访问计算机,则他可以读取未经严格加密的所有内容,并且可以绝对地写入/擦除所有内容-包括添加其他管理员帐户的密码数据库。唯一的例外是,如果整个磁盘都已加密,则唯一可能的操作是擦除所有内容并重新安装。可用于允许细粒度的许可。我不太喜欢sudo可以做任何事情的默认Linux方式,因为它很容易受到攻击:


攻击者可以访问允许sudo的非root shell。 >他更改了帐户密码
他以root身份使用sudoes并安装了后门(或要求不输入密码的su的修改版本-编写起来很简单)
他破坏了主密码文件并消失了

下次尝试登录时,您会注意到您无法使用恢复过程来发现主密码已损坏,对其进行重建或从存档版本进行重新安装,如果您不仔细分析系统,则永远不会注意到后门。


当我说偶然获得访问权限时,我的意思是说,例如,当您连接到恶意网站时,如果它使用漏洞,那是不可复制的。除非攻击者安装后门,否则只有当您返回该站点时,他才会再次获得访问权限,这种访问可能会或不会发生。

TL / DR:我的观点是,任何计算机都应至少拥有2个帐户:一个非特权帐户用于正常使用,一个管理帐户用于管理任务。

#8 楼

不备份该问题的解决方案吗?出于各种原因,定期备份整个硬盘驱动器通常看起来是一个好主意,而搞砸.bashrc的可能性就是其中之一。

评论


如果OP与勒索软件有关,则备份是解决方案。但是,如果OP与恶意软件或身份盗用有关,则它们不会提供帮助。

–麦克·恩斯沃思(Mike Ounsworth)
16年11月1日在12:15

我发现,出于各种原因,备份整个硬盘也是一个坏主意。我转向仅备份/ srv和/ home,然后使用配置管理工具(即ansible)重新创建其余部分。日志在此过程中会丢失,但是您也可以备份它们,或者更好地将它们动态复制到远程服务器上。

–光谱
16年11月1日在18:17