我知道 sudo 密码可以保护我的计算机免遭本地有物理访问权限的人的攻击(编辑 :事实上,它没有)。我的密码足够强,可以达到这个目的,但我知道如果有人可以远程暴力破解我的密码,那么我的密码就不够强。
能任何人在标准 Ubuntu 桌面安装中,无需物理访问计算机,就可以使用我的 sudo 密码以 root 模式访问我的计算机?
- 如果你有网络访问权限,肯定是的(简短回答)
- 如果你对安全不够重视,是的(长答案)
- 如果你正在运行“ssh”,并且没有2FA,是的(评论和答案)
- 无需 sudo/用户密码即可以 root 身份访问您的计算机
答案1
我知道 sudo 密码可以保护我的计算机不被有物理访问权限的人本地入侵。
我不想吓唬你太多,但如果有人拥有物理访问权限,那么无论你的密码有多强,你都会将访问权限交给他们。某人需要重新启动一次才能更改你的 root 密码(可以通过“grub rescue”完成,而无需提供当前密码)。顺便说一句:这种方法被认为是有效的,是一种功能,也是一种可接受的安全风险(否则,如果密码确实被泄露,你将永远无法修复你的系统)。
但我知道如果有人能够远程强力破解它,那它的强度就不够。
还有一个问题:如果在短时间内重复请求相同的信息,路由器应该足够智能,可以锁定来自外部的访问。基本上,这是 DOS 攻击(如果 2 台以上的计算机攻击您,则是 DDOS)。路由器应该终止该连接,并在接受来自该连接的新请求之前强制等待一段时间。
在标准 Ubuntu 桌面安装中,任何人都可以使用我的 sudo 密码以 root 模式访问我的计算机,而无需物理访问计算机吗?
他们首先需要连接,然后提供 sudo 密码。“root”模式被禁用,您无法直接登录到“#”提示符。
请注意,滥用服务是有可能的。如果您的机器上运行着“ssh”,他们可以通过“ssh”进入您的系统,并获取该用户的用户名和密码(由于是管理员用户,因此还可以获取您的 sudo 密码),他们就可以访问您的机器并搞乱它。顺便说一句:如果他们这样做,他们必须首先了解您的系统(例如您的密码)。
但这种方法(以及任何其他方法)都存在一个问题:他们是如何获得你的密码的?他们无法从你的系统本身获得密码。而且一般来说,猜测并不值得。如果它是社交工程的……那么你的问题就出在这里,而不是你的系统、Ubuntu 或 Linux 的安全模型。
只要您的 sudo 密码是您自己的,您就应该没问题。如果密码强(您自己可能容易记住,但别人猜不到),情况会更好。我之前讨论这个问题时举过一个例子:如果您的狗名叫“Abwegwfkwefkwe”,那么使用“Abwegwfkwefkwe”作为密码是错误的,尽管它看起来不错(因为有人可能会问您:“您的狗叫什么名字”,然后他们试着随意猜一下)。如果您与“Abwegwfkwefkwe”没有任何关系,那么它就是一个好密码。
我能给出的最好建议是:
当系统要求输入管理员密码时,不要输入,除非你知道这是应该被要求的。如果你打开浏览器,弹出一个类似于“要求输入管理员帐户密码”的窗口...请停下来...先想一想。
当“sudo”宽限期处于活动状态时,请勿让系统无人看管。
sudo --reset-timestamp
删除当前宽限期,并在您下次使用“sudo”时再次要求输入密码。当您离开时锁定屏幕。不要为了好玩而安装服务或软件。如果不需要,
ssh
就不要安装ssh
;如果不使用网络服务器,就不要安装网络服务器。查看当前正在运行的服务。如果笔记本电脑不使用蓝牙,请禁用它。如果不使用网络摄像头,请禁用它(如果处于活动状态)。删除不再使用的软件。对于真正偏执的人(没错,偏执熊猫,我就是这么看着你的):时不时地更改密码。你甚至可以安装 rootkit hunters 来检查是否有不适当的访问。
将重要数据备份到离线保存的某个地方。这样,即使您发现有人入侵了您的系统,您也可以对其进行格式化,然后重新安装并恢复数据。
答案2
是的他们可以。
不过,有多种方法可以做到这一点,而暴力破解sudo
密码可能不是第一种方法。
首先,sudo
密码是用户的密码;所以他们真正需要获取的是你的密码。
其次,使用暴力破解用户密码来访问系统可能是最后的手段。
有更多优雅(但大多更有效)的方法可以侵入另一个系统。
通常,攻击者要么直接去尝试利用最常见的漏洞(最广为人知的可能是以任何方式获取用户 shell,然后利用 ShellShock 获取 root shell),要么采取以下最佳方式:
- 扫描系统上的开放端口以获取以下信息:
- 操作系统版本
- 运行服务版本
- 利用已知的操作系统或正在运行的服务的错误(缓冲区溢出等)以获取至少一个用户 shell,然后尝试获取 root shell(再次,可能利用 ShellShock)
如果无法通过其他方式获取 root shell,则可能会尝试强行破解sudo
/ 用户的密码,但是例如利用以 root 身份运行的服务不需要攻击者强行破解sudo
/ 用户的密码。
答案3
如果说过去几年我在安全方面学到了什么的话,那就是一件事:没有什么是不可能的。
只要您可以访问网络,肯定可以。理论上,系统上运行的每个可以通过网络访问的服务都存在漏洞,因此存在潜在弱点。
因此,对于有足够想法的攻击者来说,这是有可能的。你可以让你的系统尽可能安全,但你不可能永远达到 100% 的安全。
因此,重要的是评估通过合理的技术努力可以实现什么目标,以及什么可以很好地保护您自己以至于您自己无法再工作。
答案4
sudo 的目的与密码无关,而是赋予某些用户 root 权限,同时限制其他用户对机器的使用,而无需他们出示 root 登录名(密码/密钥/安全令牌/等)。例如,在我工作的地方,日常工作人员只能通过 sudo 启动/关闭/安装和升级他们的工作站(从公司否决的存储库中)。他们没有其他 root 权限,例如故意删除 /、格式化设备、添加和删除用户、决定哪些内核模块应该列入黑名单或在 crontab 中运行什么(等等)。而在家里,您的 sudo 允许完全访问机器。关于密码,实际上 sudo 需要的是您的用户帐户密码(如果未启用自动登录,则与您登录时使用的密码相同。)并且该密码与其他密码一样存在漏洞。
坏建议:如果你想在启用 sudo 的 unix(linux/apple osx)上将 root 设为常规帐户,请运行以下命令
sudo -s
passwd
Enter your unix password:
此时 root 有一个常规密码,您可以直接注销并以“老式方法”使用上述密码以 root 身份登录。
在安全性方面,如果一个程序(例如 Web 服务器、mysql、php 守护程序、sshd)以提升的帐户(例如 root)身份运行,并且存在已知的漏洞,那么攻击者可能不需要任何安全凭据即可获得访问权限。他们可以利用该程序的漏洞,并从以 root 身份运行的该程序中生成一个新的 shell。然而,这种情况非常罕见,因为发行版管理员意识到了类似的问题,并且在构建经过深思熟虑且通常安全的默认环境方面做得非常出色。
在里面其他操作系统与 sudo 类似的操作是右键单击并以系统管理员身份运行(或 UAC 权限唠叨)。