作为IT工程师,我将为您提供一套完整的CentOS系统关键文件保护方案,通过多层次的权限控制来限制非特权用户对系统关键文件的访问。
# 系统二进制文件目录
chmod -R 750 /bin /sbin /usr/bin /usr/sbin
chown -R root:root /bin /sbin /usr/bin /usr/sbin
# 系统配置文件目录
chmod -R 640 /etc
chown -R root:root /etc
# 内核文件
chmod 600 /boot/vmlinuz-*
# 密码文件
chmod 600 /etc/passwd
chmod 600 /etc/shadow
chmod 600 /etc/group
chmod 600 /etc/gshadow
# sudoers文件
chmod 440 /etc/sudoers
# SSH相关文件
chmod 600 /etc/ssh/sshd_config
chmod 600 /etc/ssh/ssh_host_*_key
对于需要更精细控制的场景,可以使用ACL(访问控制列表):
# 安装ACL工具
yum install -y acl
# 为特定用户/组设置权限
setfacl -m u:username:r-- /etc/sudoers
setfacl -m g:developers:r-x /usr/bin/
CentOS默认启用SELinux,可提供额外的安全层:
# 检查SELinux状态
sestatus
# 设置SELinux为强制模式
setenforce 1
# 永久设置为强制模式
sed -i 's/SELINUX=permissive/SELINUX=enforcing/g' /etc/selinux/config
# 为关键文件设置SELinux上下文
chcon -t etc_t /etc/passwd
chcon -t shadow_t /etc/shadow
防止文件被修改或删除:
# 设置不可变属性
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
# 查看属性
lsattr /etc/passwd
# 取消不可变属性(需要时)
chattr -i /etc/passwd
# 限制普通用户切换到root
usermod -s /sbin/nologin username
# 创建受限shell用户
useradd -s /bin/rbash restricteduser
# 限制用户组权限
groupadd restricted
usermod -aG restricted username
# 安装审计工具
yum install -y audit
# 启用审计服务
systemctl enable --now auditd
# 监控关键文件访问
auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/shadow -p wa -k shadow_changes
# 查看审计日志
ausearch -k passwd_changes
# 安装sudo
yum install -y sudo
# 配置sudoers(使用visudo命令)
visudo
# 示例规则:允许特定用户执行特定命令
username ALL=(root) /usr/bin/systemctl restart httpd, /usr/bin/vi /etc/httpd/conf/httpd.conf
# 创建备份目录
mkdir /root/backups
# 备份关键文件
cp -a /etc/passwd /root/backups/passwd.bak
cp -a /etc/shadow /root/backups/shadow.bak
cp -a /etc/group /root/backups/group.bak
# 设置备份文件权限
chmod 600 /root/backups/*
通过以上多层次的安全措施,您可以有效限制非特权用户对CentOS系统关键文件的访问权限,同时保持系统的可用性和可维护性。建议在实施前在测试环境中验证这些变更,并确保有恢复方案。