📜  ubuntu apparmor 强制执行所有 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:48:06.345000             🧑  作者: Mango

Ubuntu AppArmor 强制执行所有 - Shell-Bash

简介

AppArmor 是一个 Linux 内核强制访问控制系统,它限制了系统上的各种程序的运行行为,包括文件访问、网络访问、进程间通信等。Ubuntu 是一个广泛使用的 Linux 发行版,AppArmor 是 Ubuntu 的一部分,用于提高系统的安全性。

本文将介绍如何在 Ubuntu 上使用 AppArmor 来强制执行所有的 Shell/Bash 程序。我们将演示如何创建一个 AppArmor profile 并应用于 Shell/Bash 程序。

步骤
安装 AppArmor

首先,确保你的系统上已经安装了 AppArmor。在 Ubuntu 上,你可以使用以下命令来安装 AppArmor:

sudo apt-get update
sudo apt-get install apparmor apparmor-utils

这将安装 AppArmor 及其相关的工具。

创建 AppArmor Profile
  1. 创建一个新的 AppArmor profile 文件:
sudo nano /etc/apparmor.d/local/usr.bin.bash
  1. 将以下内容添加到文件中,并保存:
#include <tunables/global>

/usr/bin/bash {
  # 允许读取 /etc/passwd
  /etc/passwd r,

  # 允许读取用户的 home 目录
  /home/** r,

  # 允许运行 shell 命令
  /usr/bin/* mr,
  capability sys_resource,

  # 允许使用 /dev/null
  /dev/null rw,

  # 允许使用 tmpfs
  #/run/** rw,

  # 允许访问 DNS
  network inet dgram,
  network inet6 dgram,
  network raw,
  network packet,
  network unix,

  # 允许连接到 localhost
  network inet stream connect 127.0.0.1,
  network inet6 stream connect ::1,

  # 允许使用 Unix 域套接字
  unix,

  # 允许 fork 子进程
  capability,
}

这个 profile 允许 Bash 程序读取 /etc/passwd 文件、用户的 home 目录,运行 shell 命令,以及其他必要的权限。你可以根据自己的需求进行修改。

  1. 检查 profile 文件是否正确,可以使用以下命令:
sudo apparmor_parser -d /etc/apparmor.d/local/usr.bin.bash
应用 AppArmor Profile

现在,我们需要将刚创建的 AppArmor profile 应用到 Shell/Bash 程序。

  1. 创建一个新的文件 /etc/apparmor.d/local/usr.bin.bash.profile
sudo nano /etc/apparmor.d/local/usr.bin.bash.profile
  1. 在文件中添加以下内容,并保存:
#include <abstractions/base>
profile /usr/bin/bash {
  # include the local profile
  #include <local/usr.bin.bash>
}

这个文件会包含之前创建的 profile。

  1. 使 AppArmor 加载新的 profile:
sudo apparmor_parser -r /etc/apparmor.d/local/usr.bin.bash.profile
测试 AppArmor Profile

现在,我们可以测试一下新的 AppArmor profile 是否生效。

  1. 创建一个简单的 Bash 脚本文件 /home/<username>/test.sh
echo "Hello, World!"
  1. 授予脚本执行权限:
chmod +x /home/<username>/test.sh
  1. 在命令行中执行该脚本:
./home/<username>/test.sh

如果一切正常,你将会看到输出 Hello, World!

  1. 现在,修改脚本文件 /home/<username>/test.sh,使其尝试读取 /etc/shadow 文件:
echo "Hello, World!"
cat /etc/shadow
  1. 再次运行脚本:
./home/<username>/test.sh

此时,你会看到类似以下错误的输出:

cat: /etc/shadow: Operation not permitted

这是因为 AppArmor profile 限制了对 /etc/shadow 文件的访问。

结论

AppArmor 是一个强大的工具,可以帮助我们加强系统的安全性。通过创建和应用 AppArmor profile,我们可以限制 Shell/Bash 程序的行为,防止恶意操作对系统造成损害。在实际使用中,你可能需要根据具体情况来编写和修改 AppArmor profile。

注意:本文只是简单演示了如何使用 AppArmor 强制执行所有的 Shell/Bash 程序。实际使用中,你可能需要更加复杂的 profile 来确保系统的安全性。请务必阅读 AppArmor 的文档和其他相关资料,以深入了解其功能和用法。