在Ubuntu上,SELinux(Security-Enhanced Linux)是一個用于提高系統安全性的強大工具
sudo apt-get update
sudo apt-get install selinux
安裝完成后,重啟系統以使SELinux生效。
要限制進程權限,您需要創建一個自定義的SELinux策略。首先,安裝selinux-policy-dev
包,它包含了創建和編輯策略所需的工具。
sudo apt-get install selinux-policy-dev
mkdir my_selinux_policy
cd my_selinux_policy
sepolgen
工具創建一個基本的策略模板:sepolgen --init
policy/modules/100/base/module.te
文件:nano policy/modules/100/base/module.te
my_process
的進程只能讀取/var/log/my_process.log
文件:module my_process 1.0;
require {
type my_process_t;
type var_log_t;
class file { read };
}
#============= my_process_t ==============
allow my_process_t var_log_t:file read;
保存并關閉文件。
接下來,編譯策略:
make -f /usr/share/selinux/devel/Makefile
sudo semodule -i my_process.pp
my_process_t
類型。這可以通過修改進程的啟動腳本或使用semanage
命令來實現。例如,如果您的進程由systemd管理,您可以編輯服務文件(通常位于/etc/systemd/system/
或/lib/systemd/system/
),并在[Service]
部分添加以下行:ExecStartPost=-/bin/sh -c "/usr/sbin/semanage fcontext -a -t my_process_t '/path/to/your/executable'"
ExecStartPost=-/bin/sh -c "/usr/sbin/restorecon -v '/path/to/your/executable'"
sudo systemctl daemon-reload
sudo systemctl restart your_service
現在,您的進程應該受到限制,只能讀取/var/log/my_process.log
文件。請注意,這只是一個簡單的示例,您可能需要根據實際需求調整策略。