0

0

Linux敏感文件如何保护_权限与审计组合方案【教程】

舞姬之光

舞姬之光

发布时间:2025-12-21 22:12:08

|

770人浏览过

|

来源于php中文网

原创

Linux敏感文件权限加固需结合强制访问控制(SELinux/AppArmor)、审计追踪(auditd)与最小权限原则:设umask 077、/etc/shadow权限640并配shadow组、禁用敏感目录group/other执行权、启用MAC策略限制进程访问、配置auditd监控关键路径读写及属性变更、每日哈希校验与自动化权限扫描。

linux敏感文件如何保护_权限与审计组合方案【教程】

Linux系统中,敏感文件(如/etc/shadow/etc/passwd、SSH密钥、数据库配置、环境变量文件等)一旦被未授权访问或篡改,可能直接导致权限失控、数据泄露甚至系统沦陷。单纯靠文件权限(chmod/chown)远远不够,必须结合强制访问控制、审计追踪与最小权限原则,构建纵深防御。

核心权限加固:不止是 chmod 600

基础权限设置是第一道门槛,但需注意细节:

  • 避免过度依赖 umask:用户创建文件时默认权限受 umask 影响,建议在/etc/profile/etc/bash.bashrc中统一设为umask 077(新建文件默认仅属主可读写)
  • 敏感目录必须禁用 group/other 执行权:例如/etc/ssh应为drwx------(700),否则其他用户可能遍历其内容
  • shadow 文件需配合 shadow 组隔离:确保/etc/shadow属主为 root、属组为 shadow、权限为640,再将仅需读取的程序(如 login)加入 shadow 组,而非开放 world-readable
  • 使用 setgid 配合专用组管理配置目录:例如/opt/app/conf设为drwxr-s---,属组为 appconf,所有运维人员加入该组,避免直接给 root 权限

启用 SELinux 或 AppArmor 实现类型强制控制

传统 DAC(自主访问控制)无法阻止 root 进程越权读取。SELinux/AppArmor 提供 MAC(强制访问控制),按进程类型限制其能访问的文件类型:

  • SELinux 示例:将 Web 应用配置文件标记为httpd_config_t,即使 Apache 以 root 运行,也无法读取标记为etc_t的普通配置文件
  • 快速启用(RHEL/CentOS)sudo setenforce 1临时开启,修改/etc/selinux/configSELINUX=enforcing永久生效
  • AppArmor(Ubuntu/Debian):用aa-genprof为关键服务生成策略,重点限制其对/etc/var/secrets等路径的访问能力
  • 不建议完全关闭:若因兼容性问题需禁用 SELinux,请至少启用 auditd 并强化日志监控

审计关键文件访问行为:auditd + rules 持续盯防

权限只是“门锁”,auditd 是“监控摄像头”。需精准审计敏感路径的读、写、执行、属性变更:

京点点
京点点

京东AIGC内容生成平台

下载
  • 添加持久化审计规则:编辑/etc/audit/rules.d/privileged.rules,加入:
-w /etc/shadow -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /root/.ssh/ -p wa -k ssh_root
-w /home/*/\.ssh/ -p wa -k ssh_user
-w /etc/ssl/private/ -p wa -k ssl_private

其中-p wa表示监控 write 和 attribute change(如 chmod/chown),-k指定审计键名便于日志过滤。

  • 实时查看异常访问sudo ausearch -k identity --start today | aureport -f -i
  • 对接 SIEM 或邮件告警:用audispd插件将匹配identity键的日志转发至日志服务器,或通过ausearch + awk + mail脚本触发即时通知

定期验证与自动化检查机制

人工检查易遗漏,需固化为周期任务:

  • 每日校验关键文件哈希:用sha256sum /etc/shadow /etc/passwd > /var/log/filehash.baseline,配合 cron 每日比对变化
  • 扫描非预期的 world-writable 敏感文件find /etc /root /opt -type f -perm -o+w 2>/dev/null,发现即告警
  • 检查 SSH 密钥权限合规性find /root /home -name "id_rsa" -o -name "id_dsa" -o -name "id_ecdsa" -o -name "id_ed25519" -exec ls -l {} \;,确保私钥权限≤600、公钥≤644
  • 集成进 CI/CD 或配置管理工具:Ansible 的file模块可声明式定义权限;SaltStack 可用file.managed自动修复偏差

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

436

2024.03.01

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

346

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2074

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

323

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.3万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号