我有一个VPS,这是我的第一笔大型Linux冒险。我是唯一可以访问它的人。我的问题是,仅以root身份登录而不是创建帐户并为他们提供sudo访问权限有什么问题?如果sudoer可以做root可以做的所有事情,那有什么区别?如果黑客可以将我的密码破解为我的标准非root帐户,那么他也可以执行sudo命令,那么黑客破解我的root帐户又有多重要呢?
#1 楼
如果您以root用户身份登录,则可以轻松地擦除目录或做一些事后回想起来实际上是愚蠢的事情,而作为用户,您通常必须为您的工作增加一些额外的心理周期还可以以root用户身份以root用户特权运行任何程序,这意味着如果有人或某人让您运行/编译/浏览危险的网站并希望破坏您的系统(例如特洛伊木马或其他恶意软件),它具有对系统的完全访问权限,并且可以执行所需的操作,包括访问1024以下的TCP端口(例如,它可能会使您的系统在您不知情的情况下变成转发器) 。
基本上,您是在问一些自己登录可能会遇到的麻烦。我知道很多人最终很高兴他们在粗心的时刻有了安全网。用于脚本和黑客。禁用该帐户并强制用户使用sudo的系统意味着,任何尝试从ssh破解根或对该帐户进行本地攻击的尝试都将他们的头撞在墙上。他们将不得不猜测/破解密码和用户名。通过某种程度的模糊性可以确保安全性,但是很难说它不能阻止大多数脚本小子攻击。
评论
+1-使用“ sudo”使以root用户身份执行程序成为明显的行为。这不是“制止黑客”的问题,而是要养成以非特权用户身份工作的习惯,并使根特权的调用成为有计划的公开行为的问题。
–埃文·安德森(Evan Anderson)
09年8月24日在14:32
我开始怀疑埃文是否真的是一个人工智能。
–巴特·银线
09年8月24日在14:45
Sudo还添加了审计跟踪。作为谁,什么以及何时以sudo记录时。哪个日志文件可以随发行版而变化,但是RedHat发行版倾向于使用/ var / log / secure,而Ubuntu使用/var/log/auth.log ...我不确定这是否适用于所有基于Debian的发行版。
– 3dinfluence
2009年8月24日15:26
+1-不仅涉及创作或做事的权利,还涉及销毁的权利。以root用户身份登录(或在其他操作系统上以此类推)在安全关闭的情况下四处走动。您可能永远不会有意触碰该触发器,但是您是否会相信自己做到这一点呢?
– Maximus Minimus
09年8月24日在15:29
MH:/ me戴上牛仔帽,甩开手枪上的安全装置,打开啤酒,低沉地嘟嘟三色紫罗兰,然后以root身份登录。
–凯尔·勃兰特(Kyle Brandt)
09年8月24日在16:04
#2 楼
如果您不允许白痴以root用户身份登录服务器,那么不要总是以root用户身份运行。除非你能忍心说你从来没有做过白痴。不完全是?你确定? :)好处:减少您同时成为root和白痴的可能性。
评论
+1-“好处:减少您同时成为root和白痴的可能性。”我绝对喜欢这个。
–埃文·安德森(Evan Anderson)
2009年8月24日15:26
+1是斯科特·亚当斯(Scott Adams)的哲学,即每个人都是白痴。 :)是的,这也意味着您和我。
–Ernie
09年8月24日在15:55
绝对-这是我在求职面试中遇到的关键问题之一-您上一次搞砸了是什么时候?每个人都有,您只需要阅读此处有关“最有趣的sysadmin fubar”之类的主题。如果有人不承认自己一生中至少犯过一次真正的愚蠢错误,那么可能有很多不想与他们合作的原因。
–汤姆·牛顿
09年8月25日在10:34
#3 楼
主要原因是错误。如果您一直是root用户,那么简单的错字可能确实会使系统搞砸了。如果仅以root用户身份登录或使用sudo进行需要的操作,则可以最大程度地减少犯错误错误的风险。#4 楼
当您是root用户时,您会懒于权限,因为您始终可以访问所有内容,因此您不在乎什么是777或644或其他任何东西。因此,如果您确实不想让任何人进入您的系统,而又不想访问所有内容,那么突然之间,要使该机器安全地供他人使用就变得非常困难。评论
这称为“根腐病”。
–kmarsh
2009年8月24日14:47
我喜欢这个词,“根腐烂”。确实,始终以root用户身份运行可以将* nix机器变成怪异的Windows 95机器,而无需多用户安全。 (我记得几年前有一台SCO机器,共享记帐应用程序上的每个用户都以root用户身份运行,因为“它使权限问题消失了。”
–埃文·安德森(Evan Anderson)
09年8月24日在15:28
我记得有这样的解释-他们有一个以root身份运行的mailinglist工具以及sendmail。我的回答是“对于黑客来说,许可问题也消失了。”
–duffbeer703
09年8月24日在19:24
#5 楼
不以root用户身份登录的背后有一些关键原则:1)登录时永远不会在网络上发送root密码
2)如果多个用户以相同的身份登录,则无法判断谁做了某件事帐户(root或其他用户)。
3)意外地做了“愚蠢”的事情
#6 楼
这样做是为了保护自己,以便您有第二次机会查看要运行的更高权限的命令,类似于Windows中的UAC。以root用户身份登录时,意外执行rm -rf /
之类的操作非常容易。此外,您具有可追溯性。在您是唯一一个(理论上)发出命令的情况下,这不是一个大问题,但是登录和追溯到个人的能力是许多形式的分析的关键组成部分。
评论
可追溯性在由多个人担任系统管理员的系统中至关重要。这不仅是监管机构要求的。
– APC
09年8月25日在5:54
我在星期五这样做。而不是删除“ / dump / folder /”,而是删除了文件夹/。一个令人反感的反斜杠让我想起了为什么我们不以root用户身份登录。
–oneodd1
09年8月25日在15:20
#7 楼
区别主要在于:您不能无意间做任何坏事。
“邪恶的”代码不能接管系统。
注意:邪恶的代码不一定意味着任何人都已经可以访问系统。
评论
我注意到,这些天来,恶意代码通常意味着垃圾邮件机器人,它可以以任何用户身份运行。
–Ernie
2009年8月24日15:53
如果您想到的是病毒(试图破坏某些东西)或rootkit,那么如果您不是root用户,那么对于恶意软件而言,它要复杂得多。
– StampedeXV
09年8月25日在6:19
#8 楼
您应该始终使用具有最低权限的帐户。始终以root身份运行会导致不良习惯和懒惰,当您与多个用户一起工作或将某些内容暴露于公共/半公共网络时,它们会使生活变得不愉快。破解只是一种折衷方案-也不是最常见的方案。您更有可能成为浏览器漏洞或系统上运行的某些守护程序中的漏洞的受害者。考虑一下使用的代码而无需考虑。例如,Adobe Flash的Linux端口是一大堆便便,直到最近才可用。您认为该代码的安全性如何?您是否希望它能够完全控制您的系统?
#9 楼
它可以防止SSH暴力攻击。每个Unix都有一个“ root”帐户。但是,从外部不清楚您的“ sudo”用户名是什么。因此,如果有人想强行闯入,他们知道这里有一个root帐户并且可能会尝试。但是,如果您使用sudo,他们不知道从哪里开始。#10 楼
http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html#11 楼
我的建议是尝试一直使用root。您很快就会发现为什么不应该这样做:)#12 楼
即使我不信任“默默无闻的安全性”,使用自定义登录而不是现有的root登录也肯定有优势。因此,您还可以配置SSH以防止root用户登录。因此,使用无特权的用户可以防止出现愚蠢的错误和错别字。支持多个用户帐户的另一个参数是在不同的用户下运行不同的软件。这样做,如果在一个应用程序中利用了安全漏洞,则利用者只能访问其运行的用户可以访问的文件和资源。 Root对可以使用的内存,处理时间,文件处理程序或磁盘空间没有限制。在许多文件系统上,有仅保留给root用户的数据块。因此,普通用户永远无法使用它们来填充磁盘。 ulimit命令还可以用于限制用户可以使用的内存和文件处理程序编号。但是,如果您是root用户(或以root用户身份运行的应用程序),则没有任何阻止您更改此限制的信息。
#13 楼
是的,我同意你的看法,我认为这是一个防止人为错误,有时甚至防止恶意程序的问题。我从未见过的坏事是使用root作为默认的gnome帐户。
我认为大多数这样做的用户是Windows用户,最近都迁移到Linux或Unix。
请尝试将管理员特权的使用复制到root用户。
评论
我还要评论一下,如果您不熟悉“ Unix Way”,这不是一个愚蠢的问题。如果您以新的Linux管理员身份首先提出问题,则应该获得奖励。我想评论一些答案。特别是那些说“你可以扎根的东西”的人。我认为这不是重点...“ rm -rf /”与“ sudo rm -rf /”相同。关键在于,“ sudo rm”之类的东西不起作用,而“ sudo startMyApp on low port”起作用。
永远不存在什么问题?