云服务器配置指南 (一):别让你的服务器裸奔
拿到一台新的云服务器,第一件事做什么?装 Docker?跑代码?
错!第一件事是给它穿上“防弹衣”。
公网环境就是黑暗森林,你的服务器IP一旦暴露,每天都会遭受成千上万次自动化脚本的扫描和暴力破解。如果不做初始化配置,你的服务器可能活不过第一集。
本章我们不谈复杂的架构,只做最基础、最保命的三件事:SSH密钥登录、系统加固、防火墙配置。
服务器配置:4vCPU | 8GB RAM | 5M带宽 | 50GB存储
系统版本:Ubuntu 24.04 64位
1.1 SSH密钥登录:告别密码,告别被黑
为什么要折腾密钥?
还在用密码登录服务器?那你就是在赌博。
- 密码太弱:
123456秒破。 - 密码太强:你自己都记不住。
- 暴力破解:黑客的脚本24小时不睡觉地试你的密码。
SSH密钥认证就像是银行的U盾。你手里拿着私钥(钥匙),服务器存着公钥(锁)。没有私钥,神仙也进不去。
步骤1:在本地生成密钥对
在你的电脑上(Windows PowerShell 或 Mac 终端)执行:
1 | # 推荐使用 ED25519 算法,比 RSA 更安全且更快 |
一路回车即可。如果你比较谨慎,可以设置一个密码短语(Passphrase),这样即使私钥文件被偷了,小偷也得猜密码。
生成后,你会得到两个文件:
id_ed25519:私钥。打死也不能给别人看!id_ed25519.pub:公钥。这个是要上传到服务器的。
步骤2:把公钥丢给服务器
Linux/Mac/Git Bash 用户(最快):
1 | ssh-copy-id -i ~/.ssh/id_ed25519.pub root@your_server_ip |
Windows PowerShell 用户(手动挡):
- 打开公钥文件,复制里面的内容(以
ssh-ed25519开头的一长串)。 - 登录服务器:
ssh root@your_server_ip - 在服务器上执行:
1
2
3
4mkdir -p ~/.ssh
echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys # 权限必须是600,否则SSH不认
chmod 700 ~/.ssh
步骤3:关上密码登录的大门
有了密钥,密码登录就可以关掉了。这才是安全的关键。
1 | sudo vim /etc/ssh/sshd_config |
找到并修改以下配置(没有就添加):
1 | # 禁用密码登录(核心!) |
避坑指南:
很多云厂商(阿里云、AWS等)会在 /etc/ssh/sshd_config.d/ 下放一些默认配置,优先级比主配置文件高。
如果修改后不生效,记得去那个目录下检查一下有没有“内鬼”文件把 PasswordAuthentication 设为了 yes。
重启 SSH 服务:
1 | sudo systemctl restart ssh |
警告:重启后千万别关掉当前的终端窗口!新开一个窗口测试能不能用密钥登录。如果配置错了,你还有救;如果关了窗口,你就得去云厂商控制台重置系统了。
1.2 系统加固:给服务器雇个保镖
步骤1:别总用 root 裸奔
Root 权限太大,手一抖 rm -rf / 就全完了。
创建一个普通用户,平时用普通用户,需要权限时再 sudo。
1 | # 创建用户 devuser |
记得把 root 的公钥也复制一份给新用户,或者重新上传一份,保证新用户也能用密钥登录。
步骤2:Fail2Ban —— 自动封禁恶意IP
Fail2Ban 是个好东西。它会监控日志,发现有人在疯狂试密码(虽然我们已经禁用了密码,但看着日志烦),直接把他的 IP 拉黑。
1 | sudo apt install fail2ban -y |
创建一个配置文件 /etc/fail2ban/jail.local:
1 | [DEFAULT] |
启动它:
1 | sudo systemctl start fail2ban |
现在,谁敢暴力破解,Fail2Ban 就让他去“小黑屋”冷静十分钟。
步骤3:自动更新安全补丁
虽然我不建议自动更新内核(怕挂),但安全补丁还是自动打上比较好。
1 | sudo apt install unattended-upgrades -y |
选 Yes,搞定。
1.3 防火墙 (UFW):只开该开的门
Ubuntu 自带的 UFW (Uncomplicated Firewall) 真的非常 Uncomplicated。
原则:默认拒绝所有进入,只开放需要的端口。
1 | # 1. 默认拒绝所有入站连接 |
查看状态:
1 | sudo ufw status |
1.4 常用工具:工欲善其事
最后,把该装的工具装一装,把时间校准一下。
1 | # 更新软件源 |
总结
至此,你的服务器已经从“裸奔”状态变成了“全副武装”。
- 进门:必须有密钥。
- 监控:Fail2Ban 盯着。
- 围墙:UFW 挡着。
虽然不能说固若金汤,但至少能挡住 99% 的脚本小子。接下来,我们就可以放心地在上面折腾各种服务了。