> 新买的 VPS 刚上线几个小时,SSH 登录日志里已经有一大堆来自世界各地的暴力破解记录了。互联网上没有绝对的安全,但做好基础防护,能挡住 99% 的自动攻击。
---
## 第一道防线:SSH 加固
### 1. 禁用密码登录,只用密钥
编辑 /etc/ssh/sshd_config:
```
PasswordAuthentication no
PubkeyAuthentication yes
```
然后重启 SSH:systemctl restart sshd
### 2. 修改默认端口
把 SSH 端口从 22 改成不常用的端口(比如 2222):
```
Port 2222
```
### 3. 禁止 root 直接登录
```
PermitRootLogin no
```
先用普通用户登录,再用 sudo 提权。
---
## 第二道防线:防火墙(ufw)
Ubuntu/Debian 推荐用 ufw,简单好用:
```bash
ufw default deny incoming # 默认拒绝所有入站
ufw default allow outgoing # 默认允许所有出站
ufw allow 2222/tcp # 允许 SSH 端口
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable # 启用防火墙
ufw status verbose # 查看规则
```
打好这 4 条命令,你的服务器就只对外开放了 3 个端口。
---
## 第三道防线:fail2ban 防暴力破解
```bash
apt install fail2ban -y
```
fail2ban 会监控登录日志,如果某个 IP 短时间内多次尝试登录失败,自动把它拉黑。
创建本地配置 /etc/fail2ban/jail.local:
```ini
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
```
含义:10 分钟内失败 3 次,封禁 1 小时。
启动:systemctl enable fail2ban --now
---
## 日常安全检查清单
| 检查项 | 命令 |
|--------|------|
| 查看登录记录 | last -20 |
| 查看失败登录 | lastb -20 |
| 查看当前在线用户 | who |
| 查看监听端口 | ss -tlnp |
| fail2ban 状态 | fail2ban-client status |
---
## 额外建议
1. 保持系统更新:apt update && apt upgrade -y,定期执行
2. 最小权限原则:不要所有操作都用 root
3. 定期备份:安全措施再完善,也不如一份可靠的备份
4. 不要安装来路不明的脚本
安全没有终点,但做好以上几步,你的服务器已经比 90% 的 VPS 更安全了。