在Ubuntu上测试SELinux前,需先安装核心工具包(包括SELinux基础组件、审计工具及策略管理工具):
sudo apt update
sudo apt install selinux-basics selinux-policy-default auditd audispd-plugins setools setools-gui selinux-policy-dev
这些工具用于激活SELinux、查看状态、分析日志及管理策略。
安装完成后,通过以下命令激活SELinux(设置启动参数security=selinux):
sudo selinux-activate
激活后需重启系统,使SELinux在启动时加载。
使用以下命令确认SELinux是否启用及当前模式:
sestatus
示例输出(启用且处于宽容模式):SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
Loaded policy name: default
Current mode: permissive
Mode from config file: permissive
Enforcing/Permissive/Disabled):getenforce
若输出Permissive,表示SELinux仅记录违规行为而不阻止;若输出Enforcing,则表示强制执行策略。Permissive模式(记录日志但不阻止):sudo setenforce 0
Enforcing模式(强制执行策略):sudo setenforce 1
/etc/selinux/config文件,修改SELINUX=参数:sudo nano /etc/selinux/config
将SELINUX=permissive改为SELINUX=enforcing(或disabled),保存后重启:sudo reboot
注意:首次启用SELinux时,务必不要直接设为
Enforcing模式,否则可能导致系统无法启动(因默认策略会拒绝大量操作)。
通过创建测试文件并尝试修改,验证SELinux是否拦截违规操作:
echo "Hello, SELinux!" > testfile.txt
ls -Z testfile.txt
示例输出:unconfined_u:object_r:user_home_t:s0 testfile.txt
Enforcing模式,执行以下命令可能会被拒绝(需结合日志确认):echo "Hello, World!" >> testfile.txt
Permissive模式,修改会成功,但日志会记录违规行为。SELinux的拒绝日志默认存储在/var/log/audit/audit.log中,可使用以下工具提取并分析:
avc denied日志(SELinux拒绝访问的核心日志):sudo ausearch -m avc -ts recent
sudo aureport -m avc
日志中会显示违规的进程、文件、操作及所需的权限,为后续调整策略提供依据。若测试中遇到avc denied错误,可通过以下步骤生成并加载自定义策略:
audit2allow生成策略模块:sudo ausearch -m avc -ts recent | audit2allow -M my-custom-policy
此命令会生成my-custom-policy.pp(策略模块文件)和my-custom-policy.te(策略源文件)。sudo semodule -i my-custom-policy.pp
sudo semodule -l | grep my-custom-policy
若输出my-custom-policy,则表示加载成功。通过以上步骤,可全面测试Ubuntu上的SELinux配置,确保其按预期工作。测试过程中需注意:首次启用SELinux时建议使用Permissive模式,避免因默认策略过于严格导致系统故障。