服务器多用户安全配置的核心在于最小权限原则、用户隔离与审计日志,三者缺一不可。
服务器多用户权限设置:最小权限原则是安全基石
无论你用的是Linux还是Windows,多用户环境下的安全配置第一步都是权限管控。多数安全漏洞都源于权限过大,一个普通用户如果拥有 sudo 或管理员组权限,服务器就相当于敞开了大门。参考2
创建用户时避开的常见坑
很多管理员图省事,直接给每个用户分配相同的默认组,或者用 root 执行日常操作。正确的做法是每个用户单独创建账号,并分配专用主组,例如在 Linux 下:
- 使用
useradd -m -s /bin/bash username创建用户,并为其生成独立的 home 目录。 - 立即设置强密码,或者更推荐使用 SSH 密钥登录。
- 如果用户需要临时提权,通过
visudo在/etc/sudoers中精确配置允许执行的命令,而不是直接赋权 ALL。
权限分配:不要让普通用户拥有 root 权限
行业共识认为,90% 的权限滥用都源于sudo配置过于宽松,你需要做到:
- 禁止 root 直接 SSH 登录,修改
/etc/ssh/sshd_config中的PermitRootLogin no。 - 对于需要管理服务的用户,只授予特定命令的 sudo 权限,
%admin ALL=(ALL) /usr/bin/systemctl restart nginx。 - 在 Windows Server 中,通过组策略将用户加入 “Remote Desktop Users” 或自定义本地组,并严格控制其能访问的文件夹和注册表项。
文件权限与 ACL 的配合
基础权限(rwx)在多用户环境下往往不够用。ACL(访问控制列表)能实现更精细的管控,例如允许用户 A 读取目录,但禁止用户 B 删除文件,在 Linux 中:
- 使用
setfacl -m u:username:rx /data/shared给特定用户单独授权。 - 结合
chmod g+s设置 SGID,让新创建的文件自动继承组权限,这对团队协作目录非常有用。
多用户服务器安全配置方法:隔离与资源控制
用户之间如果缺乏隔离,一台服务器上就很容易出现”一人中毒,全盘遭殃”的情况。隔离是多用户安全的关键防线,尤其对于托管多个用户应用的服务器。
用户目录隔离:chroot 与容器化
- chroot 环境:对于 FTP 或 SFTP 用户,可以将其限制在 home 目录内,防止访问系统文件,修改
/etc/ssh/sshd_config中的Match User username配合ChrootDirectory即可实现。 - 容器化隔离:近年来 Docker 或 LXC 被广泛用于多用户场景,每个用户运行在自己的容器中,拥有独立的文件系统和网络栈。即便某用户的应用被攻破,攻击者也无法直接影响到其他用户或宿主机。
- 统计显示,使用容器化隔离的服务器,安全事件发生率显著低于仅靠文件权限隔离的服务器。
资源限制:防止单个用户拖垮服务器
多用户环境下,最怕某个用户跑满 CPU 或内存,你需要通过系统工具进行限制:
- Linux 的 ulimit:在
/etc/security/limits.conf中设置每个用户的进程数、打开文件数、内存使用上限。 - cgroups(控制组):更现代的方式,可以对用户组进行 CPU、内存、磁盘 IO 的硬限制,例如使用
systemd-run --scope -p MemoryMax=1G -u username启动用户进程。
- Windows 的作业对象:通过 PowerShell 或组策略,限制用户进程的 CPU 和内存使用百分比。
进程隔离:使用 cgroups 或 Docker
当用户需要运行自己的 Web 服务或脚本时,进程隔离尤为重要。推荐为每个用户单独启动一个 Docker 容器,并映射不同端口,如果用户直接使用系统服务,则通过 systemd 的 slice 机制将用户进程分组,再施加资源限制,这样即使某个用户的服务崩溃,也不会影响其他用户。参考2
服务器多用户认证加固:从密码到密钥
弱密码一直是安全短板。多用户服务器必须放弃纯密码认证,全面转向 SSH 密钥或多因素认证。
SSH 密钥认证替代密码登录
- 在服务器上执行
ssh-keygen -t ed25519生成密钥对,将公钥添加到相应用户的~/.ssh/authorized_keys中。 - 修改 SSH 配置,关闭密码认证:
PasswordAuthentication no。 - 如果用户数量较多,可以使用证书认证(SSH CA),统一签发和撤销密钥,方便管理。
多因素认证的适用场景
对于管理员账号或需要远程登录的用户,建议启用 TOTP(基于时间的一次性密码),在 Linux 中安装 libpam-google-authenticator,然后配置 PAM 模块,让用户 SSH 登录时先输密码再输验证码。这能有效防止密钥泄露或密码被盗导致的非法登录。
审计日志:谁在什么时候做了什么
没有日志,安全配置就是空谈,你需要确保:
- 开启系统审计,Linux 的
auditd,记录用户执行的所有命令和文件访问。 - 配置
rsyslog将日志集中到远程服务器,防止被攻击者删除。
- 定期检查日志,重点关注 sudo 执行记录、登录失败记录、异常时间点的操作。
- 对于 Windows Server,启用高级审计策略,覆盖账户登录、对象访问、权限变更等事件。
服务器多用户安全配置常见问题
问题1:如何防止用户越权访问其他用户的数据?
核心是文件和目录权限设置。每个用户的 home 目录权限应为 700 或 750,确保只有自己和 root 能访问,对于共享目录,使用 ACL 精确控制,并设置粘滞位(sticky bit)防止用户删除他人文件,如果使用容器,则完全隔离文件系统,天然避免越权。
问题2:多个用户共享目录时如何保证安全?
创建专门的共享组,将用户加入该组,并为目录设置 2770 权限(SGID+粘滞位)。所有共享文件应具有组可读写权限,但个人文件通过 ACL 限制,同时开启审计日志,监控共享目录的修改操作,一旦发现异常可以快速溯源。
问题3:离职员工账号如何快速回收?
建立标准流程:第一时间禁用用户账号,而非直接删除,Linux 中使用 usermod -L username 锁定,Windows 中禁用 AD 账户。然后检查该用户拥有的进程和文件,确认无影响后备份数据,最后删除账号,如果使用 LDAP 或 FreeIPA,可以集中管理,离职时一键禁用所有关联服务的权限。
多用户服务器安全需要从创建、授权、隔离、认证到审计形成闭环。没有绝对的安全,但遵循最小权限和隔离原则,能抵御绝大多数常见攻击,持续监控配置变更,并定期复查用户权限,才能让服务器在多人协作下依然稳固运行。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/519967.html



