SELinux在Ubuntu中的基础配置
Ubuntu默认未启用SELinux,需先通过以下步骤安装并激活:
sudo apt update,依次安装selinux-basics(基础工具)、selinux-policy-default(默认策略)、auditd(审计工具)、setools(策略管理工具)等包。sudo selinux-activate添加启动参数security=selinux,然后更新GRUB配置(sudo update-grub)并重启系统。sestatus确认SELinux状态(显示enabled即为启用);编辑/etc/selinux/config文件,将SELINUX=enforcing(强制模式,严格遵循策略)或SELINUX=permissive(警告模式,仅记录违规)设置为所需模式,重启使设置生效。支持多种编程语言的通用方法
SELinux通过安全上下文(Security Context)和策略规则控制编程语言进程对系统资源的访问。无论使用Python、Ruby、Node.js等语言,均需遵循以下步骤:
ls -Z查看文件/目录的SELinux标签(如httpd_sys_content_t),用ps -Z查看进程的上下文(如unconfined_t)。/data/scripts),用semanage fcontext添加新规则,再用restorecon应用:sudo semanage fcontext -a -t httpd_sys_rw_content_t "/data/scripts(/.*)?" # 将路径标记为可读写
sudo restorecon -Rv /data/scripts # 递归应用上下文
httpd_enable_homedirs允许Web服务器访问用户主目录),用setsebool -P永久修改(-P表示持久化):sudo setsebool -P httpd_enable_homedirs 1 # 允许HTTP进程访问用户主目录
ausearch -m avc -ts today查看最近的拒绝事件,再用audit2why解析原因(如“缺少httpd_sys_rw_content_t上下文”),针对性调整策略。针对具体编程语言的配置示例
sudo setsebool -P httpd_can_network_connect 1 # 允许HTTP进程连接网络
sudo setsebool -P httpd_can_network_connect_db 1 # 允许HTTP进程连接数据库
/var/log/rails),修改上下文并设置布尔值:sudo semanage fcontext -a -t var_log_t "/var/log/rails(/.*)?"
sudo restorecon -Rv /var/log/rails
sudo setsebool -P httpd_can_write_logdir 1 # 允许HTTP进程写入日志目录
httpd_can_network_bind布尔值:sudo setsebool -P httpd_can_network_bind 1 # 允许HTTP进程绑定低端口
注意事项
targeted策略(默认,仅保护常见网络服务)。cp /etc/selinux/targeted/policy/policy.24 /root/),避免误操作导致系统无法启动。--security-opt label=type:container_t参数)。