SELinux备份CentOS配置的完整步骤
SELinux策略文件是系统强制访问控制的核心配置,主要位于/etc/selinux/
目录下(如targeted
策略的policies/
子目录)。使用tar
命令打包该目录,可完整保存策略定义:
sudo tar -czvf selinux_policy_backup.tar.gz /etc/selinux/
此命令会生成一个压缩包,包含/etc/selinux/
下的所有文件(如config
、targeted/policy/policies/
中的策略文件),便于后续恢复。
SELinux的主配置文件/etc/selinux/config
定义了系统默认的SELinux模式(Enforcing/Permissive/Disabled),是恢复配置的关键文件。直接复制该文件到安全位置即可:
sudo cp /etc/selinux/config selinux_config_backup.conf
若需保留历史版本,可添加时间戳(如selinux_config_backup_$(date +%Y%m%d).conf
)。
SELinux的当前运行状态(如Enforcing
或Permissive
)会影响策略的执行效果,需通过命令记录:
getenforce > selinux_status_backup.txt
此外,使用sestatus
命令可获取更详细的SELinux状态信息(如是否启用、策略类型),建议一并保存:
sestatus > selinux_detailed_status_backup.txt
这些文件可帮助恢复时还原系统SELinux状态。
SELinux通过文件上下文(Security Context)定义文件/目录的安全标签,直接影响访问控制。可使用semanage fcontext
命令导出所有自定义的文件上下文规则:
semanage fcontext -E -o > fcontext_backup.txt
该命令会将当前系统中所有自定义的fcontext
规则(如/var/www/html(/.*)?
的httpd_sys_content_t
标签)保存到fcontext_backup.txt
中,恢复时可通过semanage fcontext -F -i fcontext_backup.txt
重新加载。
SELinux布尔值(Booleans)是可动态调整的安全策略开关(如httpd_can_network_connect
控制Apache是否能访问网络)。使用getsebool
命令导出所有布尔值及其当前状态:
getsebool -a > sebool_backup.txt
恢复时,可通过setsebool -P
命令批量还原(如setsebool -P $(cat sebool_backup.txt)
)。
为避免手动操作遗漏,可编写Shell脚本实现定期自动备份。以下脚本示例会备份策略、配置、状态及上下文,并添加时间戳:
#!/bin/bash
# 定义备份目录(需提前创建)
BACKUP_DIR="/backup/selinux"
# 备份SELinux策略
sudo tar -czvf "$BACKUP_DIR/selinux_policy_$(date +%Y%m%d).tar.gz" /etc/selinux/
# 备份SELinux配置
sudo cp /etc/selinux/config "$BACKUP_DIR/selinux_config_$(date +%Y%m%d).conf"
# 备份SELinux状态
getenforce > "$BACKUP_DIR/selinux_status_$(date +%Y%m%d).txt"
sestatus > "$BACKUP_DIR/selinux_detailed_status_$(date +%Y%m%d).txt"
# 备份SELinux文件上下文
semanage fcontext -E -o > "$BACKUP_DIR/fcontext_$(date +%Y%m%d).txt"
echo "SELinux backup completed on $(date)" >> "$BACKUP_DIR/backup_log.txt"
赋予脚本执行权限后,可通过cron
设置每日自动运行(如0 0 * * * /path/to/script.sh
)。
root
用户或sudo
,确保有足够权限访问/etc/selinux/
等系统目录。tar
包、查看config
文件内容),确保备份有效。