sudo密码有多重要?


25

我知道sudo密码可以保护我的计算机,使其免受具有物理访问权限的人的本地入侵(编辑:实际上,它不是)。我的密码足以达到此目的,但是我知道,如果有人可以远程强行使用它,密码还不够强大。

罐头任何人进入我的电脑在根模式下使用sudo的我与密码的电脑没有物理访问,在一个标准的Ubuntu桌面安装?

  1. 如果您确实有网络访问权限,则肯定可以(简短回答)
  2. 如果您对安全性不够重视,可以(很长答案)
  3. 如果你有“SSH”运行,并没有2FA评论和答案)
  4. 无需sudo /用户密码即可以root用户身份访问计算机

字面上是“任何人”,包括我在内,或者例如我信任的一些ppa维护者,其他任何人。
mxdsp 2015年

1
他们可以通过SSH和sudo访问root。
Aizuddin Zali 2015年

1
究竟。要加强这一点,您可以使用2FA。遵循此指南
Aizuddin Zali 2015年

1
那么您就可以免受SSH攻击。人们使用了许多可能的黑客技巧。
Aizuddin Zali 2015年

1
根本没有“ sudo密码”之类的东西。
hobbs 2015年

Answers:


34

我知道sudo密码可以保护我的计算机,使其不受具有物理访问权限的人的本地攻击。

我不想吓到您,但是如果某人具有物理访问权限,则无论您的密码强度如何,您都将其移交给他们。某人将需要1重启,以便该人能够更改您的root密码(可以通过“ grub rescue”完成操作,而无需提供您的当前密码)。顺便说一句:该方法被认为是有效的并且是一种功能,并且具有可接受的安全风险(否则,如果密码被盗用,您将永远无法修复系统)。

但是我知道,如果有人可以远程强行使用它,还不够强大。

这还有其他作用:ROUTER应该足够聪明,可以在短时间内重复请求同一信息,从而锁定来自外部的访问。基本上,这里的攻击是DOS攻击(如果有2台以上的计算机攻击您,则为DDOS)。路由器应终止该连接并强制等待一段时间,然后再接受来自该连接的新请求。

在标准Ubuntu桌面安装中,任何人都可以使用我的sudo密码以root模式访问我的计算机,而无需物理访问该计算机?

他们首先需要连接,然后提供sudo密码。“ root”模式已禁用,您不能直接登录“#”提示。

请注意,有可能滥用服务。如果您在该计算机上运行“ ssh”,并且他们可以“ ssh”到您的系统,并获得该用户的用户名和密码(因为它也是admin用户,您的sudo密码),那么他们就可以访问您的计算机搞砸了 顺便说一句:如果他们这样做,那么他们必须首先了解您的系统(例如您的密码)。

但是,随之而来的是一个问题(以及任何其他方法):他们是如何获得密码的?他们无法从您的系统本身获取它。通常来说,猜测是不值得的。如果它是社会工程的……那么您的问题就在那里,而不是系统,Ubuntu或Linux的安全模型。

只要您的sudo密码是您的密码,您就会/应该很好。如果它是一个强密码,您的状况就会更好(也许很容易为您记住,但别人无法猜到)。我之前在讨论此问题时使用的一个示例:如果您的狗使用“ Abwegwfkwefkwe”作为密码命名为“ Abwegwfkwefkwe”,即使它看起来不错,也很糟糕(因为有人会问您:“您的狗叫什么名字”,他们会尝试使用免费猜测)。如果您与“ Abwegwfkwefkwe”无关,那么这是一个很好的密码。

我可以提供的最佳建议:

  • 除非要求您输入管理员密码,否则请不要输入管理员密码。如果打开浏览器,然后弹出一个类似于我们“询问管理员帐户密码”的弹出窗口,请停止...并首先考虑。

  • 当“ sudo”宽限期处于活动状态时,请不要让系统无人值守。sudo --reset-timestamp删除当前的宽限期,并在下次使用“ sudo”时再次要求输入密码。进入AFK时锁定屏幕。

  • 请勿出于娱乐目的而安装服务或软件。如果不需要,ssh请不要安装ssh,如果您不使用网络服务器,请不要安装网络服务器。并查看当前正在运行的服务。如果您不在笔记本电脑上使用BT,请禁用它。如果您不使用网络摄像头,请将其禁用(如果启用)。删除不再使用的软件。

  • 对于真正的偏执狂(是的,我正在看你的是偏执狂熊猫):经常更改密码。您甚至可以安装rootkit猎人来检查不适当的访问。

  • 将重要数据备份到离线保存的数据中。因此,即使您确实在系统上找到了某个人,也可以对其进行格式化,然后重新安装并重新安装数据。


2
您可以缩写sudo --reset-timestampsudo -k,也可以缩写sudo -K为真正的偏执狂(仅在攻击者可以将系统时间设置为任意值时才需要,此时您可能已经迷路了)。
凯文(Kevin)

树突。我使用的是长版本,因此很清楚它的作用。“ -k”的确是一样的。
Rinzwind

1
@mxdsp:如果密码短语足够强大,加密可以阻止人们读取加密分区的内容,但是可能会从正在运行的计算机或最近关闭的计算机中取出加密密钥。加密也是一个快速发展的领域,您将需要跟上新的发展,以免加密变得过时且容易破解。
凯文

1
@mxdsp是的。例如:您可以格式化磁盘,并且当数据丢失时……您就是有问题的人。
Rinzwind

1
第一部分隐式假定没有完整的磁盘加密。
otus

6

是的他们可以。

但是,有多种方法可以执行此操作,并且强行使用sudo密码可能不是第一个。

首先,sudo密码是您的用户密码;因此,实际上他们需要获取的是您的密码。

其次,使用暴力破解用户密码来访问系统可能是最后的选择。

有一些进入其他系统的更优雅(但更有效)的方法。

通常,攻击者要么只是去尝试利用最常见的漏洞(最著名的可能是以任何方式获取用户shell并利用ShellShock来获取根shell),要么按照以下方式做最好的工作:

  • 扫描系统上的开放端口以获取诸如以下信息:
    • 作业系统版本
    • 运行服务版本
  • 利用已知的操作系统或运行中的服务的错误(缓冲区溢出等),以便至少获取用户外壳程序,然后尝试获取根外壳程序(再次,可能是利用ShellShock)

sudo如果不能以其他方式无法获得root shell,则可以尝试强行强制/用户的密码,但是例如,利用以root用户身份运行的服务将不需要攻击者强行强制sudo/用户的密码。


1
谢谢。简单地说,这意味着攻击者不需要sudo密码即可获得root访问权限?
mxdsp 2015年

2
@mxdsp确实如此。像这样说:如果攻击者设法以任何方式获取sudoer用户外壳程序(例如,展开sudoer用户正在运行的程序),他可能会使用已知的漏洞利用方法(在我的回答中,我提到的是最臭名昭著的)来获取root外壳程序,绕过需要用户的/ sudo密码。更好的是,如果他设法利用以root身份运行的服务,那么他就是直接root。
kos 2015年

1
@mxdsp现在,我们进行了概括,但是请观看此视频以了解例如无sudo权限用户(=〜攻击者已登录但攻击者不知道其密码的用户)如何获得root用户的权限。只是通过利用已知的错误(在本例中为臭名昭著的ShellShock)来构建Shell。
kos 2015年

1
@mxdsp一方面,我不是说sudoers用户,而是用户。没必要,我只是在同时考虑太多事情。
kos 2015年

3
  1. 如果最近几年我在安全方面学到了任何东西,那么一件事:没有什么是不可能的

  2. 当然,只要您可以访问网络。从理论上讲,可以在网络上访问的,在系统上运行的每个服务都非常脆弱,因此可能是一个弱点。

因此,对于具有足够创意的攻击者而言,这是可能的。您可以使系统尽可能地安全,但永远无法达到100%的安全性。

因此,重要的是评估在合理的技术努力下可能发生的事情以及对您的保护程度如此之好以至于您自己再也无法工作的事情。


我确实有网络访问权限。可以更具体地说明这种攻击的可能性有多大吗?
mxdsp 2015年

1
使用两因素身份验证。您需要编辑PAM.D等。
Aizuddin Zali 2015年

@Arronical的链接也来自此论坛,也非常不错。
Aizuddin Zali 2015年

@Arronical我已将其放在问题注释中。本指南
Aizuddin Zali 2015年

抱歉@AizuddinZali我没有刷新页面!
Arronical

2

我知道sudo密码可以保护我的计算机,使其免受具有物理访问权限的人的本地入侵(编辑:实际上,实际上不是)。我的密码足以达到此目的,但是我知道,如果有人可以远程强行使用它,密码还不够强大。在标准Ubuntu桌面安装中,任何人都可以使用我的sudo密码以root模式访问我的计算机,而无需物理访问该计算机?

sudo密码不仅用于本地保护,它的目的还在于为root特权使用增加一层额外的安全性。可以在这里找到很好的讨论/superuser//a/771523/467316

您的密码强度可能不如您想像的高。现在,对于我以前见过的那些,我正在破解客户端的Active Directory哈希的20-40%,对于那些密码规则不正确的哈希,则要破解70%。我建议使用16个字符的复杂密码。oclHashcat和Radeon显卡会造成很大的损害。加上过去5年中每次违规所产生的所有密码转储,您通常会获得一个很好的字典来进行工作。

如果您完全使用SSH,请在sshd_config中进行一些调整

sudo nano /etc/ssh/sshd_config

必须立即出门(如果您不使用ftp服务器,则最后一个禁用ftp服务器)。

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

保存后,重新启动ssh

sudo service ssh restart

使用公共密钥加密首先在远程计算机上创建一个密钥(使用puttygen或您的操作系统可用的任何版本)。将公共密钥复制为您要登录的用户下的Ubuntu计算机,以authorized_keys文件(您可能必须创建它)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

以这种格式复制公钥

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

保存它,并设置您的sshd_config以允许公共密钥登录

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

保存并重新启动ssh

sudo service ssh restart

尝试使用公钥加密从私钥计算机SSH到ubuntu主机。如果一切顺利,请返回ubuntu主机并禁用密码身份验证。

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

保存并重新启动ssh

sudo service ssh restart

尝试再次从私钥计算机中拉出以确认。

要添加更多吗?设置一个非特权帐户,将PermitRootLogin设置为no,重新启动ssh,将您的公钥添加到新帐户的authorized_keys中,以非特权帐户登录,当您需要root权限或特权时使用su到您的root或特权帐户。


2

sudo的目的与密码无关,而是为某些用户提供了root-ish功能,同时通过计算机限制了其他用户,而无需他们提供root登录(密码/密钥/安全令牌/等)。例如,在我的工作中,日常工作人员只能通过sudo(从公司否决的存储库)启动/关闭/安装和升级其工作站。它们没有其他根目录自由,例如有目的地删除/,格式化设备,添加和删除用户,确定哪些内核模块应被列入黑名单或在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特权困扰)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.