1. 安装SELinux管理工具
在Ubuntu上自定义SELinux规则前,需先安装必要的工具包。执行以下命令安装selinux-basics(基础SELinux管理工具)、selinux-policy-default(默认策略)及auditd(审计工具,用于收集拒绝日志):
sudo apt update
sudo apt install selinux-basics selinux-policy-default auditd
2. 启用SELinux并设置为Permissive模式
Ubuntu默认可能未启用SELinux,需通过修改配置文件开启。编辑/etc/selinux/config文件,取消SELINUX和SELINUXTYPE的注释,并设置为以下值:
SELINUX=permissive # 先设为permissive模式(仅记录拒绝事件,不阻止操作)
SELINUXTYPE=targeted # 使用targeted策略(针对特定进程,不影响系统整体)
保存后重启系统使配置生效:
sudo reboot
注:Permissive模式是自定义规则的必要步骤,避免因规则错误导致系统无法正常运行。
3. 创建自定义SELinux策略模块
自定义规则需通过.te(类型启用)文件定义。以下以“允许my_script进程访问/var/www/html目录”为例,步骤如下:
- 创建策略文件目录:
mkdir -p ~/selinux-custom-policy cd ~/selinux-custom-policy - 编写
.te文件:
创建my_custom_policy.te文件,内容如下(关键部分说明见注释):保存文件后,可通过policy_module(my_custom_policy, 1.0) # 定义模块名称(my_custom_policy)和版本(1.0) # 声明类型(若未定义,需手动添加) type my_script_t; # 进程类型(对应my_script的可执行文件) type my_script_exec_t; # 可执行文件类型 type httpd_sys_rw_content_t; # 目标目录类型(Apache默认可读写目录) # 定义进程域(将进程与可执行文件关联) init_daemon_domain(my_script_t, my_script_exec_t) # 允许规则(允许my_script_t进程对httpd_sys_rw_content_t类型的目录进行读写) allow my_script_t httpd_sys_rw_content_t:dir { read write };audit2allow工具从系统拒绝日志快速生成规则(适用于已知拒绝事件的场景):
此命令会生成grep avc /var/log/audit/audit.log | audit2allow -M my_custom_policymy_custom_policy.te(类型定义)和my_custom_policy.pp(编译后的策略模块)文件。
4. 编译并加载自定义策略模块
使用checkmodule(编译类型定义)和semodule_package(打包策略模块)工具编译.te文件:
checkmodule -M -m -o my_custom_policy.mod my_custom_policy.te
semodule_package -o my_custom_policy.pp -m my_custom_policy.mod
编译完成后,使用semodule命令加载模块:
sudo semodule -i my_custom_policy.pp
加载后,模块会永久保存到SELinux策略中(无需重启系统)。
5. 应用文件上下文并验证规则
- 设置文件/目录的安全上下文:
使用semanage fcontext命令为自定义目录添加上下文(关联到httpd_sys_rw_content_t类型),确保进程能识别:sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?"-a表示添加规则,-t指定类型,(/.*)?表示匹配/var/www/html及其子目录。 - 应用上下文到文件系统:
使用restorecon命令恢复目录的实际上下文:sudo restorecon -Rv /var/www/html-R表示递归处理,-v显示详细过程。 - 验证规则是否生效:
查看SELinux拒绝日志,确认无与新规则冲突的拒绝事件:
若输出显示“sudo ausearch -m avc -ts recent | audit2whyavc: denied”事件消失,则说明规则生效。
注意事项
- 自定义规则需谨慎编写,错误的规则可能导致系统安全性降低或功能受限(如允许进程访问敏感文件)。
- 建议在测试环境中验证规则,确认无误后再应用到生产环境。
- Ubuntu对SELinux的支持不如CentOS/RHEL完善,部分高级功能可能无法使用,若需更全面的SELinux支持,建议选择后者。
以上就是关于“selinux如何自定义ubuntu规则”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm