Linux SELinux最佳实践分享
导读:Linux SELinux 最佳实践 一 基础与运行模式 保持系统长期运行在Enforcing模式,仅在排错时短时切换到Permissive;不建议在生产环境使用Disabled。 查看与切换模式: 查看状态:sestatus、gete...
Linux SELinux 最佳实践
一 基础与运行模式
- 保持系统长期运行在Enforcing模式,仅在排错时短时切换到Permissive;不建议在生产环境使用Disabled。
- 查看与切换模式:
- 查看状态:
sestatus、getenforce - 临时切换:
sudo setenforce 1(Enforcing)、sudo setenforce 0(Permissive)
- 查看状态:
- 永久配置:编辑**/etc/selinux/config**,设置
SELINUX=enforcing(或permissive)SELINUXTYPE=targeted(常见默认策略)
- 变更生效通常需要重启;从Disabled改为Enforcing/Permissive时,务必重启系统。
二 安全上下文与端口管理
- 查看上下文:
- 文件/目录:
ls -Z - 进程:
ps -Z
- 文件/目录:
- 修复与设置上下文:
- 按默认规则恢复:
restorecon -R /path - 持久化添加路径映射:
sudo semanage fcontext -a -t < type> "/path(/.*)?"后执行restorecon -R /path - 临时修改:
chcon -t < type> /path(重启或restorecon可能覆盖)
- 按默认规则恢复:
- 常见类型示例:httpd_sys_content_t(Web只读内容)、httpd_sys_rw_content_t(Web可写目录)。
- 端口标签:
- 查看端口上下文:
semanage port -l - 添加端口类型:
sudo semanage port -a -t < port_type> -p tcp|udp < port>
- 查看端口上下文:
- 原则:优先使用semanage fcontext持久化规则,避免滥用
chcon;变更后用restorecon验证。
三 布尔值与最小权限
- 查看与调整布尔值:
- 列出:
getsebool -a - 临时切换:
setsebool < name> on|off - 持久化:
setsebool -P < name> on|off
- 列出:
- 常用示例:
- Web访问数据库:
setsebool -P httpd_can_network_connect_db on - Web对外发起连接:
setsebool -P httpd_can_network_connect on - 启用CGI:
setsebool -P httpd_enable_cgi on
- Web访问数据库:
- 原则:优先通过布尔值满足兼容性需求,遵循最小权限,仅开启必需能力。
四 审计、排错与策略定制
- 定位拒绝事件:
- 查看最近拒绝:
ausearch -m avc -ts recent - 人性化分析:
sealert -l "*"(需安装setroubleshoot或相关工具)
- 查看最近拒绝:
- 从日志生成策略模块:
- 生成并安装:
ausearch -m avc -ts recent | audit2allow -M mypol & & semodule -i mypol.pp - 生成可读解释:
audit2allow -w -a
- 生成并安装:
- 编写简单自定义模块(示例):
- 编写
myapp.te描述所需权限 - 编译安装:
checkmodule -M -m -o myapp.mod myapp.te & & semodule_package -o myapp.pp -m myapp.mod & & semodule -i myapp.pp
- 编写
- 建议:先在Permissive验证规则充分性,再回到Enforcing并持续审计。
五 运维清单与常见场景
- 日常运维清单:
- 保持Enforcing;变更前备份关键配置与策略
- 新增服务或路径时,先确认并必要时添加fcontext规则,再用
restorecon应用 - 定期审计
/var/log/audit/audit.log,清理过大审计日志,避免性能受影响 - 变更后回归测试,确保功能与合规同时满足
- 常见服务快速指引:
- Web内容在非标准目录:
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"restorecon -R /web
- FTP匿名可读/可写:
- 只读:
chcon -R -t public_content_t /var/ftp - 可写:
chcon -t public_content_rw_t /var/ftp/incoming并setsebool -P allow_ftpd_anon_write 1
- 只读:
- NFS/Samba家目录:
- NFS:
setsebool -P use_nfs_home_dirs 1 - Samba:
setsebool -P samba_enable_home_dirs 1
- NFS:
- Web内容在非标准目录:
- 风险提示:仅在明确需求且经过评估后创建自定义策略模块,避免“过度放行”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux最佳实践分享
本文地址: https://pptw.com/jishu/788766.html
