Linux最小权限原则实践指南

Linux最小权限原则实践指南
最新回答
天天

2023-04-15 12:10:49

Linux最小权限原则实践指南

最小权限原则的核心是确保用户、进程或程序仅拥有完成其任务所必需的最低权限,从而降低安全风险,防止误操作或恶意攻击扩大影响范围。以下是具体实践方法:

一、用户权限管理
  1. 创建独立账户

    为不同角色(如管理员、开发者、普通用户)创建独立账户,避免多人共用root或同一账户。

    普通用户默认不应具备sudo权限,需通过visudo明确授权特定命令(如/sbin/service重启服务)。

  2. 专用服务账户

    使用useradd -s /usr/sbin/nologin创建禁止登录的服务账户(如mysql、nginx)。

    定期审查/etc/passwd和/etc/shadow,禁用或删除未使用的账户。

  3. 限制sudo权限

    通过visudo编辑/etc/sudoers文件,按需分配命令权限(例如仅允许重启服务,禁止修改系统配置)。

    启用日志审计(Defaults logfile="/var/log/sudo.log")记录所有sudo操作。

二、文件与目录权限控制
  1. 合理设置文件权限

    敏感配置文件(如/etc/ssh/sshd_config)权限设为600(仅所有者可读写)。

    目录权限设为750(所有者可读写执行,组用户可读执行,其他用户无权限)。

    禁用全局可写权限(如chmod o-w /path),尤其是/tmp以外的目录。

  2. 明确文件归属

    使用chown确保文件归属正确,避免多个用户共用所有权(如服务文件归专用账户所有)。

三、服务与进程降权运行
  1. 非root用户运行服务

    Web服务器(如Nginx、Apache)配置为专用用户(如www-data)运行。

    数据库服务(如MySQL)使用独立账户启动,限制其对系统其他部分的访问。

  2. 通过systemd指定运行身份

    在服务单元文件(如/etc/systemd/system/nginx.service)中添加:User=www-dataGroup=www-data

    执行systemctl daemon-reload后重启服务。

四、利用sudo精细化授权
  1. 替代root密码共享

    通过visudo分配可控提权权限,例如:%admin ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

    禁止直接使用ALL=(ALL) ALL的宽泛授权。

  2. 记录与审计

    启用Defaults log_input, log_output记录sudo执行的命令及输出。

    定期检查/var/log/sudo.log,分析异常操作。

五、持续维护与审计
  1. 定期审查权限

    检查/etc/sudoers、/etc/passwd和文件权限,移除不必要的授权或账户。

  2. 自动化检查工具

    AIDE:配置文件完整性检查,检测未授权修改。

    auditd:记录文件访问、权限变更等事件,规则示例:-w /etc/passwd -p wa -k passwd_changes

  3. 日志监控

    结合rsyslog或ELK集中管理日志,实时分析权限异常。

关键点总结
  • 最小权限不是一次性设置,需通过审计、监控和工具持续维护。
  • 服务降权sudo精细化授权是核心实践,避免直接使用root。
  • 文件权限账户管理需定期审查,防止权限扩散。

通过严格执行上述方法,可显著提升Linux系统的安全性,降低内部误操作和外部攻击的风险。