📅  最后修改于: 2023-12-03 14:48:06.345000             🧑  作者: Mango
AppArmor 是一个 Linux 内核强制访问控制系统,它限制了系统上的各种程序的运行行为,包括文件访问、网络访问、进程间通信等。Ubuntu 是一个广泛使用的 Linux 发行版,AppArmor 是 Ubuntu 的一部分,用于提高系统的安全性。
本文将介绍如何在 Ubuntu 上使用 AppArmor 来强制执行所有的 Shell/Bash 程序。我们将演示如何创建一个 AppArmor profile 并应用于 Shell/Bash 程序。
首先,确保你的系统上已经安装了 AppArmor。在 Ubuntu 上,你可以使用以下命令来安装 AppArmor:
sudo apt-get update
sudo apt-get install apparmor apparmor-utils
这将安装 AppArmor 及其相关的工具。
sudo nano /etc/apparmor.d/local/usr.bin.bash
#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 命令,以及其他必要的权限。你可以根据自己的需求进行修改。
sudo apparmor_parser -d /etc/apparmor.d/local/usr.bin.bash
现在,我们需要将刚创建的 AppArmor profile 应用到 Shell/Bash 程序。
/etc/apparmor.d/local/usr.bin.bash.profile
:sudo nano /etc/apparmor.d/local/usr.bin.bash.profile
#include <abstractions/base>
profile /usr/bin/bash {
# include the local profile
#include <local/usr.bin.bash>
}
这个文件会包含之前创建的 profile。
sudo apparmor_parser -r /etc/apparmor.d/local/usr.bin.bash.profile
现在,我们可以测试一下新的 AppArmor profile 是否生效。
/home/<username>/test.sh
:echo "Hello, World!"
chmod +x /home/<username>/test.sh
./home/<username>/test.sh
如果一切正常,你将会看到输出 Hello, World!
。
/home/<username>/test.sh
,使其尝试读取 /etc/shadow
文件:echo "Hello, World!"
cat /etc/shadow
./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 的文档和其他相关资料,以深入了解其功能和用法。