CentOS SELinux支持新功能的常见方法
SELinux(Security-Enhanced Linux)通过**强制访问控制(MAC)**限制进程权限,支持新功能通常需要调整策略、上下文或布尔值。以下是具体操作步骤:
SELinux有三种运行模式,直接影响新功能的启用:
sestatus(显示Enforcing/Permissive/Disabled);setenforce 1(强制模式,拒绝违规操作并记录日志)、setenforce 0(宽容模式,仅记录日志);/etc/selinux/config文件,修改SELINUX=行(如SELINUX=enforcing),重启系统生效。SELinux布尔值是预定义的开关,用于快速启用/禁用特定功能(如Apache访问网络、FTP上传文件)。
getsebool -a(过滤特定功能,如getsebool -a | grep httpd);setsebool <功能名> on/off(如setsebool httpd_can_network_connect on);-P参数(如setsebool -P httpd_can_network_connect on),重启服务或系统使更改生效。SELinux通过安全上下文(user:role:type:sensitivity)控制访问,新功能可能需要调整上下文以匹配进程权限。
ls -Z(文件/目录)、ps -eZ(进程);chcon -t <类型> <路径>(如chcon -t httpd_sys_content_t /var/www/new_dir);semanage fcontext添加永久规则:semanage fcontext -a -t <类型> "<路径>(/.*)?"(如semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/new_dir(/.*)?");restorecon -Rv <路径>(递归恢复上下文)。若新功能需要更细粒度的权限(如自定义应用访问特定端口/文件),需编写自定义策略模块。
ausearch -c '<应用名>' --raw | audit2why(分析/var/log/audit/audit.log中的AVC拒绝事件);grep '<应用名>' /var/log/audit/audit.log | audit2allow -M <模块名>(如audit2allow -M myapp_policy);.te文件:checkmodule -M -m -o <模块名>.mod <模块名>.te;semodule_package -o <模块名>.pp -m <模块名>.mod;semodule -i <模块名>.pp;ausearch查看是否有新拒绝事件。新功能可能需要开放特定端口或映射用户,可使用semanage命令:
semanage port -a -t <端口类型> -p <协议> <端口号>(如semanage port -a -t http_port_t -p tcp 8080);semanage port -l | grep <端口类型>;semanage user -a -R <角色> <用户名>(如semanage user -a -R staff_u myuser)。/etc/selinux/config、自定义策略模块等文件;ausearch和audit2why分析日志,精准调整策略。