1. 用户与组管理:最小化权限分配
通过创建普通用户并合理分配组权限,避免直接使用root账户。使用adduser命令创建普通用户(如sudo adduser developer),并通过usermod -aG sudo developer将其加入sudo组,使其能执行特权命令但不直接拥有root权限。组管理可使用groupadd(创建组)、usermod -aG groupname username(将用户添加到组)等命令,确保用户仅能访问其所属组的资源。
2. 文件与目录权限:精细化控制访问
使用ls -l查看文件/目录权限(如-rw-r--r--表示所有者有读写权限,组和其他用户只有读权限),并通过chmod修改权限:数字模式(755:所有者rwx,组和其他用户r-x)或符号模式(u+x:给所有者添加执行权限,g-w:移除组写权限)。chown(sudo chown user:group file)和chgrp(sudo chgrp group file)可更改文件所有者和所属组,确保资源归属正确。
3. sudo权限管理:安全授权
通过visudo命令安全编辑/etc/sudoers文件(避免语法错误导致系统锁死),配置用户或组的sudo权限。例如,developer ALL=(ALL:ALL) ALL允许developer用户执行所有命令;也可限制特定命令(如developer ALL=(ALL) /usr/bin/apt),仅允许其使用apt命令。避免直接赋予用户ALL=(ALL)权限,降低误操作或滥用风险。
4. 强化密码策略:防止未授权访问
通过PAM(Pluggable Authentication Modules)模块强化密码复杂度。编辑/etc/pam.d/common-password文件,添加或修改以下规则:password requisite pam_pwquality.so retry=3 minlen=12 difok=3(要求密码长度至少12位,包含3个不同字符,最多尝试3次)。定期提醒用户更新密码(如每90天),避免密码泄露。
5. 使用ACL实现细粒度权限
安装ACL工具(sudo apt install acl),为特定用户或组设置更灵活的权限。例如,setfacl -m u:alice:rwx /project/data允许alice用户对/project/data目录有读写执行权限;setfacl -m g:dev:r-x /project/code允许dev组对/project/code目录有读执行权限。使用getfacl命令查看ACL设置,确保权限分配符合需求。
6. 高级安全模块:SELinux/AppArmor
/etc/apparmor.d/usr.sbin.apache2文件,限制Apache仅能访问/var/www/html目录;使用sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2启用配置,sudo aa-status查看状态。selinux-basics和selinux-policy-default包,通过sudo setenforce 1启用(SELINUX=enforcing),并配置/etc/selinux/config文件,定义严格的访问策略。7. 监控与审计:及时发现异常
定期检查系统日志(如/var/log/auth.log记录登录信息,/var/log/syslog记录系统事件),使用grep命令过滤异常记录(如grep "Failed password" /var/log/auth.log查看失败登录尝试)。使用auditd工具监控系统调用和权限变化,安装sudo apt install auditd后,配置/etc/audit/audit.rules文件(如-w /etc/sudoers -p wa -k sudoers_changes监控sudoers文件的修改),及时发现未授权的权限变更。