1.
权限规划与账号策略设计
- 步骤:在开始前先在纸上列出所有运维和应用角色(例如:运维、部署、数据库管理员、监控)。
- 建议:为每个角色确定只需的最小权限(Least Privilege),例如部署角色仅需写入应用目录与重启服务权限,而不应有数据库备份权限。
2.
在云控制台创建子账号/角色并分配权限(通用步骤)
- 登录云服务商控制台,进入“身份与访问管理”(IAM)或“账户管理”页面。
- 点击“新用户”或“创建角色”,填写用户名与邮箱,选择“程序化访问(API/CLI)”或“控制台访问”。
- 为用户创建自定义策略:选择最小权限模板或新建策略,使用JSON或可视化界面限定只允许的API/资源(例如仅允许启动/停止指定实例、读取监控)。
- 保存并记录访问密钥或发出临时密码,强制首次登录修改密码。
3.
Linux 系统:创建用户与授予 sudo 权限(Ubuntu/CentOS)
- 新建用户:sudo adduser username(Ubuntu)或 sudo useradd -m username && sudo passwd username(CentOS)。
- 将用户加入sudo组(Ubuntu):sudo usermod -aG sudo username;CentOS加入wheel组:sudo usermod -aG wheel username。
- 编辑sudoers:sudo visudo,添加针对性规则,例如:username ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx(仅允许重启nginx)。保存并退出,确保无语法错误。
4.
SSH 公钥认证与禁用密码登录(强烈推荐)
- 在本地生成密钥对:ssh-keygen -t rsa -b 4096 -C "you@domain",默认会生成 ~/.ssh/id_rsa 和 id_rsa.pub。
- 将公钥上传到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip 或手动将公钥追加到服务器 ~/.ssh/authorized_keys,设置权限 chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
- 编辑 /etc/ssh/sshd_config,设置:PasswordAuthentication no、PermitRootLogin no、PubkeyAuthentication yes,并根据需要修改 Port(如改为2222)和允许的用户(AllowUsers username)。重启SSH:sudo systemctl restart sshd(或 ssh)。
5.
防火墙与安全组规则配置(云与系统层面)
- 云控制台:在实例对应的安全组或防火墙规则中,只开放必要端口(22/2222、80、443、3306等按需),来源按IP白名单限制,例如仅允许管理IP访问SSH。
- 系统层面(Ubuntu ufw):sudo ufw allow 2222/tcp;sudo ufw allow 80/tcp;sudo ufw enable。或使用 iptables/nftables 编写更细粒度规则。
- 测试规则生效:从允许IP和非允许IP分别尝试连接以验证策略。
6.
防暴力破解与入侵检测(fail2ban 与日志监听)
- 安装 fail2ban:sudo apt install fail2ban 或 sudo yum install epel-release && sudo yum install fail2ban。
- 创建 jail.local 覆盖默认配置,设置 SSH ban 时间、失败次数:[sshd] enabled = true; maxretry = 5; bantime = 3600。重启服务:sudo systemctl restart fail2ban。
- 配置并启用基础SIEM或日志收集(如rsyslog->集中日志服务器或云监控日志)。
7.
密钥与密码策略、轮换步骤
- 密钥管理:将私钥仅保存在安全设备(本地密钥链/HSM)并禁止共享。
- 轮换流程示例:每90天生成新密钥对(ssh-keygen),在非高峰时段通过已有管理员账户逐台部署新公钥到 authorized_keys 并在验证后移除旧公钥,记录变更并更新密钥库存。
- 密码策略:在IAM与系统中强制最小长度、复杂度与定期更换,并禁止历史密码重用。
8.
审计、快照与备份的具体操作建议
- 启用云审计日志(Audit/操作日志):在控制台开启并设置7/30/90天的保存周期,导出到对象存储或日志服务。
- 快照:在控制台为磁盘定期创建快照,建议每日差异/每周全量;测试恢复流程并记录步骤。
- 自动化备份:使用脚本或云任务定期备份数据库与配置文件到独立存储并加密,保留多份并验证可恢复性。
9.
应急锁定与恢复账号访问的步骤
- 预先配置一个受控的“跳板/堡垒”主机并限制访问,仅允许特定管理用户可通过堡垒访问内网实例。
- 如果误封SSH或失去访问:通过云控制台的“远程命令/实例终端”或挂载磁盘到救援实例,编辑 /home/username/.ssh/authorized_keys 或 /etc/ssh/sshd_config 修复后重启。
10.
问:如果误操作导致无法登录SSH,我如何安全恢复?
- 答:通过云控制台使用控制台终端或救援模式挂载磁盘。步骤:1) 在控制台停止实例并将系统盘挂载到临时救援实例;2) 在救援实例上编辑目标盘的 /home/USER/.ssh/authorized_keys,恢复公钥或修改sshd_config;3) 卸载并恢复原实例启动;4) 登录验证并检查日志(/var/log/auth.log)。
11.
问:SSH 密钥应该多久轮换一次?
- 答:建议一般策略为90天轮换,但关键密钥或高权限账户可缩短到30-60天。若发生密钥泄露或人员变动应立即轮换并撤销旧公钥。同时配合访问日志与多因素验证降低风险。
12.
问:为什么要禁用 root 直接登录而使用sudo?
- 答:禁用 root 登录可以强制通过普通账户并记录sudo操作轨迹,便于审计与责任追溯。通过 sudoers 精准授予命令权限可实现最小权限控制,减少被单一root密钥滥用造成的风险。
来源:香港云服务器自助管理常见权限设置与账号安全建议