1.
准备工作与前置条件
- 确认VPS系统版本(例如 Ubuntu 20.04 / CentOS 7)并已能以root或具sudo权限的用户登录。- 已开通台湾机房的VPS并记录公网IP、控制面板登录信息。
- 建议先备份重要配置文件:/etc/ssh/sshd_config、/etc/sudoers、/etc/group、/etc/passwd。
2.
创建基础用户与组的标准流程
- 新建系统用户并指定shell与家目录:sudo adduser username 或 sudo useradd -m -s /bin/bash username。- 为按职责分组创建用户组:sudo groupadd devops;将用户加入组:sudo usermod -aG devops username。
- 检查组与用户关系:getent group devops 或 id username。
3.
SSH登录方式:密码 vs 密钥(强烈建议使用密钥)
- 在本地生成密钥对:ssh-keygen -t rsa -b 4096 -C "user@desc"(或使用ed25519)。- 将公钥复制到VPS:ssh-copy-id -i ~/.ssh/id_rsa.pub username@vps_ip,或手动将公钥追加到 /home/username/.ssh/authorized_keys 并设置权限(700/.ssh, 600/authorized_keys)。
4.
限定SSH登录的安全配置(sshd_config)
- 编辑 /etc/ssh/sshd_config,建议修改:PasswordAuthentication no、PermitRootLogin no。- 使用 AllowUsers 或 Match User 指令分组限制,例如:AllowUsers admin@* devopsuser@*;或更细:Match Group sftpusers ChrootDirectory /home/%u internal-sftp。
- 修改后重启SSH服务:sudo systemctl reload sshd(或 sudo service sshd restart)。
5.
为不同角色配置sudo权限分级(visudo 与 /etc/sudoers.d)
- 绝不要直接编辑 /etc/sudoers,使用 sudo visudo 或创建单独文件:/etc/sudoers.d/devops。- 示例:devops ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u myapp;只授予必要命令。
- 验证:sudo -l -U username 可查看该用户可执行的sudo命令。
6.
为文件与目录设置权限和ACL以精细控制访问
- 使用传统权限先设置归属:sudo chown root:devops /var/www/app;sudo chmod 750 /var/www/app。- 如需更细分使用ACL:sudo setfacl -m u:alice:rwx /var/www/app;查看 ACL sudo getfacl /var/www/app。
- 若需要默认继承目录权限:sudo setfacl -d -m g:devops:rwx /var/www/app。
7.
配置只限SFTP的用户(chroot jail)
- 新建组 sftpusers:sudo groupadd sftpusers;创建用户并加入该组且无shell:sudo useradd -m -g sftpusers -s /sbin/nologin bob。- 在 /etc/ssh/sshd_config 添加:Match Group sftpusers ChrootDirectory /home/%u ForceCommand internal-sftp AllowTCPForwarding no X11Forwarding no。
- 确保 chroot 目录属 root 且权限为755,用户上传目录放在子目录:/home/bob/uploads(chown bob: sftpusers uploads)。重启 sshd。
8.
密钥管理与撤销策略(当人员离职或更换设备)
- 定期审计 authorized_keys:cat /home/*/.ssh/authorized_keys,记录key和用途。- 撤销方法:删除对应公钥行或替换authorized_keys;若使用集中化管理(LDAP/SSO/GitOps),在源头撤销。
- 若怀疑密钥泄露,立即从VPS移除该key并在所有相关服务更新密钥对。

9.
监控、审计与登录记录查看
- 查看登录记录:sudo last、sudo lastlog、/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS)。- 开启命令审计:使用 auditd(sudo apt install auditd),添加规则记录敏感命令;示例规则写入 /etc/audit/rules.d/。
- 将关键日志上报到集中化日志系统(例如 rsyslog + ELK)以便长期分析与告警。
10.
自动化与批量账号管理(脚本与配置管理)
- 使用脚本批量创建用户:示例简易脚本循环读取 CSV,执行 useradd、mkdir .ssh、写入公钥并设置权限。- 推荐使用Ansible管理用户、组、sudoers和sshd_config,便于版本控制与回滚。
- 对于大团队,考虑结合LDAP/AD或RADIUS做统一认证并分组管理。
11.
备份与恢复账号相关配置
- 定期备份 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/home/*/.ssh,以及 /etc/sudoers.d/*.- 备份脚本示例:tar czf /backup/ssh-config-$(date +%F).tgz /etc/ssh /home/*/.ssh /etc/sudoers.d;并离站存储(对象存储或备份服务器)。
- 恢复时注意UID/GID一致性,恢复后验证登陆与权限。
12.
安全加固建议与日常维护清单
- 强制使用密钥登录、关闭root密码登录、启用Fail2Ban限制暴力尝试、定期更新系统补丁。- 对关键操作启用双因素认证(如结合Web控制面板或VPN前置),并周期性更换密钥与密码。
- 建立账号生命周期流程:入职创建、权限变更记录、离职立即撤销访问、定期审计。
13.
问:如何在台湾VPS上快速撤销某个用户的SSH访问?
问答示例:答:如只需撤销SSH访问,最直接方法是删除/移除该用户的公钥:sudo sed -i '/ssh-rsa AAAA.../d' /home/username/.ssh/authorized_keys 或删除整个账号 sudo userdel -r username。若采用集中化密钥管理,请在源头删除对应key并 reload sshd。若账户有sudo权限,还应从 /etc/sudoers.d/ 或组中移除并审计相关日志。14.
问:如何给开发组限制只允许重启某个服务的权限?
答:使用 sudoers 分文件管理,创建 /etc/sudoers.d/devops 文件并写入:%devops ALL=(root) NOPASSWD: /bin/systemctl restart nginx.service。保存后用 sudo -l 检查。不要授予通配符命令,确保路径准确且只列出必要命令。15.
问:是否有推荐的最小权限模型实践?
答:推荐原则是最小权限(Least Privilege):按职责分组、只授予需执行的具体命令或目录访问、使用只读权限时优先使用ACL、启用审计与日志告警,并通过配置管理工具(Ansible)统一下发与回滚策略,保持配置可审计与可恢复。
相关文章
-
选择台湾VPS Linux系统的五大理由与优点
1. 高性能的服务器配置 选择台湾VPS Linux系统的首要理由是其高性能的服务器配置。台湾的VPS服务提供商通常配备最新的硬件,例如: 例如,一家知名的台湾VPS服务商提供以下配置: 这样的配 -
哪里有台湾的云服务器?选择指南与推荐
在选择云服务器时,台湾的云服务器因其低延迟、高稳定性和良好的用户支持而受到广泛关注。许多用户在寻找最佳、最便宜的云服务器时,往往会考虑台湾的服务商。本文将为您提供一份详尽的选择指南,帮助您找到 -
台湾专线服务器云主机的特点及应用场景
台湾专线服务器云主机的特点及应用场景 在现代互联网时代,选择合适的服务器对于企业的发展至关重要。台湾专线服务器云主机因其独特的地理优势和技术特点,逐渐成为许多企业的首选。本文将深入探讨台湾专线服