云服务器安全配置与系统管理
云服务器安全配置与系统管理笔记
一、云服务器选购与性能考量
1.1 地域选择
选择服务器地域时,网络延迟是影响访问速度的关键因素。物理距离越近,网络延迟越低,访问体验越好。建议选择最靠近用户所在地的地域。
1.2 系统选择
为最大化可用资源,推荐选择纯净轻量的Linux发行版:
- Debian:默认内存占用低,是资源节约型首选
- Alpine Linux:极致轻量,适合容器化场景
- TencentOS:腾讯云自研,针对云环境优化
避免选择带图形界面或预装大量软件的镜像。
1.3 Swap空间配置
对于2核2G内存的服务器,Swap空间建议配置为2GB至4GB,作为物理内存不足时的应急缓冲。
配置Swap文件的方法:
# 创建2GB Swap文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab1.4 vm.swappiness参数
该参数控制系统使用Swap的倾向程度,范围0-200:
- 低数值(如10):尽可能使用物理内存,Swap仅作最后手段
- 默认值(60):均衡设置
- 中等数值(30-40):云服务器常用优化值
- 高数值(100-200):积极使用Swap
对于2核2G服务器,建议设置为30而非10,避免内存紧张时CPU过度消耗在内存回收上。
# 临时调整
sudo sysctl vm.swappiness=30
# 永久调整:将 vm.swappiness=30 添加到 /etc/sysctl.conf二、SSH服务安全配置
2.1 sshd_config常用配置项解析
| 配置项 | 含义 | 安全影响 |
|---|---|---|
| PermitRootLogin | 允许root通过SSH登录 | yes允许;no禁止;prohibit-password仅允许密钥 |
| PasswordAuthentication | 密码认证开关 | no可防御暴力破解 |
| KbdInteractiveAuthentication | 键盘交互认证 | no可关闭密码认证的旁路 |
| PubkeyAuthentication | 公钥认证开关 | yes启用密钥登录 |
| MaxAuthTries | 最大认证失败次数 | 默认6次,超过后断开连接 |
| X11Forwarding | X11图形转发 | no可减少攻击面 |
2.2 Too many authentication failures错误处理
该错误表示认证尝试次数超过服务器允许的最大值。常见原因是SSH客户端自动尝试本地多个密钥文件,累加后触发了MaxAuthTries限制。
解决方法:
强制指定密钥登录
ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -o IdentitiesOnly=yes -i ~/.ssh/私钥文件 用户@IP在~/.ssh/config中配置
Host myserver HostName IP地址 User 用户名 IdentityFile ~/.ssh/私钥文件 IdentitiesOnly yes PubkeyAuthentication yes PasswordAuthentication no- 通过VNC控制台进入服务器,临时调大MaxAuthTries或修复密钥配置
2.3 PermitRootLogin各取值含义
- yes:允许root使用密码或密钥登录
- no:禁止root通过任何方式登录
- prohibit-password:禁止root密码登录,但允许密钥登录
- without-password:旧写法,同prohibit-password
三、Linux用户与权限管理
3.1 查看系统用户的方法
# 查看所有用户
cat /etc/passwd
# 只显示用户名列表
cut -d: -f1 /etc/passwd
# 只显示普通用户(UID>=1000)
awk -F: '$3 >= 1000 {print $1}' /etc/passwd
# 查看当前登录用户
whoami
who
w
# 查看用户所属组
groups 用户名3.2 创建新用户并配置密钥登录
# 创建用户
adduser 用户名
# 切换到新用户
su - 用户名
# 创建.ssh目录
mkdir ~/.ssh
chmod 700 ~/.ssh
# 添加公钥
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys3.3 sudo权限配置
/etc/sudoers文件控制sudo权限,必须用visudo命令编辑。
visudo与vi/vim的区别:
- visudo:专门编辑sudoers文件,保存时自动检查语法,防止配置错误导致sudo失效
- vi/vim:通用文本编辑器,编辑sudoers文件无语法保护
visudo的常用操作:
# 编辑主配置文件
visudo
# 编辑自定义碎片文件
visudo -f /etc/sudoers.d/文件名
# 检查语法是否正确
visudo -c
# 查看当前sudo配置
cat /etc/sudoers
cat /etc/sudoers.d/文件名3.4 sudoers配置语法解析
用户/组 主机=(以谁的身份) 命令示例说明:
lighthouse ALL=(ALL) NOPASSWD: ALL:用户lighthouse可在本机以任何用户身份免密码执行任何命令%sudo ALL=(ALL) ALL:sudo组的成员可在本机以任何用户身份执行任何命令(需要密码)%google-sudoers ALL=(ALL:ALL) NOPASSWD: ALL:google-sudoers组成员可在本机以任何用户/组身份免密码执行任何命令
要点:
%前缀表示用户组,无前缀表示单个用户NOPASSWD:表示执行sudo时不需要输入密码- 括号中的
ALL表示可以以任何用户身份执行 - 最后的
ALL表示可以执行任何命令
四、云服务商默认安全策略
4.1 Google Cloud Platform
- 默认禁止root SSH登录(PermitRootLogin no)
- 强制创建普通用户进行日常操作
- 用户加入google-sudoers组,配置NOPASSWD
- 通过sudo提权执行管理命令,操作有日志审计
4.2 腾讯云轻量应用服务器
- 默认创建lighthouse用户
- lighthouse用户配置NOPASSWD权限
- 支持Web控制台一键登录(基于内置密钥)
- 控制台入口归属于用户账号,非后台人员随意访问通道
五、X11转发相关提示处理
登录时出现 /usr/bin/xauth: file /home/用户名/.Xauthority does not exist 是信息提示而非错误。
该文件用于管理X11图形界面的认证信息。云服务器通常不需要图形界面,该文件缺失不影响服务器运行。
如需消除提示,可创建空文件:
touch ~/.Xauthority
chmod 600 ~/.Xauthority或在本地SSH配置中禁用X11转发:
ForwardX11 no六、最佳实践总结
6.1 安全配置清单
- 创建普通用户用于日常操作
- 配置SSH密钥登录
- 关闭密码登录(PasswordAuthentication no)
- 根据场景设置PermitRootLogin为no或prohibit-password
- 为普通用户配置sudo权限
- 保留VNC控制台作为紧急救援通道
6.2 风险提示
- 修改sshd_config前务必确认密钥登录可用
- 始终保持至少一个已连接的SSH会话,用于测试新配置
- 禁止root登录前确保普通用户可用
- 所有sudo操作均有日志记录(/var/log/auth.log)
6.3 禁用密码登录的全局配置
# 编辑SSH配置文件
sudo vi /etc/ssh/sshd_config
# 修改配置
PasswordAuthentication no
# 重启服务
sudo systemctl restart sshd