我经常看到这样的场景:域名解析已经完成,网站也能正常访问,但VPS安全配置却是零。我们帮客户网站做代配时就发现,只要SSH端口是默认的22,不出几分钟就会被全球的扫描机器人狂轰滥炸。
其实,与其上线后忙着补漏洞,不如在业务部署前先完成一套“基础安全配置”。这套配置并不复杂,按步骤来即使是小白也能完成,而且一劳永逸,省下后期无数的麻烦。
在这篇文章里,你会学到:
- 如何修改SSH端口并使用密钥登录
- 如何用防火墙限制开放的端口
- 如何用Fail2Ban自动封锁暴力破解IP
- 如何打开系统自动安全更新
- 如何落地自动备份方案
适合新手的安全设置清单
下面是我们在给新手用户部署美国VPS时常用的安全基线,你可以直接按表执行。
| 步骤 | 目标 | 操作 | 效果 |
|---|---|---|---|
| SSH加固 | 降低被扫描和暴力破解风险 | 改端口、禁root远程、禁密码登录、启用密钥认证 | SSH更安全、更可控 |
| 防火墙 | 只开放必要端口 | Ubuntu用UFW;CentOS/Alma/Rocky用firewalld | 最小化暴露面 |
| Fail2Ban | 防止暴力破解 | 监控日志,自动封禁多次失败的IP | 自动拉黑恶意访问 |
| 自动更新 | 及时打补丁 | Ubuntu开unattended-upgrades;RHEL系开dnf-automatic | 减少漏洞风险 |
| 自动备份 | 防数据丢失 | rsync或Borg按天备份并保留一定天数 | 快速恢复数据 |
SSH加固:换端口+禁root密码+用密钥
很多人只改了端口,但依然允许密码登录,这几乎没什么意义。更稳妥的做法是:
- 先放行新端口
- 编辑
sshd_config改端口 - 禁止root用户远程密码登录
- 使用密钥认证
生成密钥并上传
ssh-keygen -t ed25519 -C "your_email"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
修改SSH配置
sudo vim /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
sudo systemctl restart sshd
记得先在防火墙中放行新端口,并用新窗口测试连接成功后再退出旧会话。
防火墙:UFW或firewalld
我们习惯的选择是:
- Ubuntu/Debian 系统 → 用UFW
- RHEL/CentOS/Alma/Rocky 系统 → 用firewalld
常用命令参考
| 系统 | 工具 | 启用命令 | 放行示例 |
|---|---|---|---|
| Ubuntu/Debian | UFW | sudo apt install ufw && sudo ufw enable | sudo ufw allow 2222/tcp sudo ufw allow 80,443/tcp |
| RHEL系 | firewalld | sudo dnf install firewalld -y && sudo systemctl enable --now firewalld | sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload |
Fail2Ban:自动封禁暴力破解
Fail2Ban会自动扫描日志,当同一个IP多次登录失败,就会临时封锁它,为VPS安装Fail2Ban非常适合防御暴力破解。
安装与配置
# Ubuntu/Debian
sudo apt install fail2ban -y
# RHEL系
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
# 配置文件
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8
[sshd]
enabled = true
port = 2222
EOF
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
自动安全更新
如果你不想频繁手动打补丁,可以开启自动安全更新功能:
- Ubuntu
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
- RHEL系
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer
自动备份:能恢复才是硬道理
我们常用的方案:
- 小规模:
rsync+cron - 大数据量:
BorgBackup(支持去重、压缩、加密)
示例:每天2点rsync备份网站与Nginx配置
crontab -e
0 2 * * * rsync -a --delete /var/www/ user@backup:/data/www/
10 2 * * * rsync -a --delete /etc/nginx/ user@backup:/data/nginx/
建议的操作顺序
- 防火墙放行新SSH端口
- 修改
sshd_config并禁root密码 - 确认密钥登录可用
- 配置UFW或firewalld,仅开放业务端口
- 安装并配置Fail2Ban
- 开启自动安全更新
- 配置自动备份
常见新手FAQ
Q:只改SSH端口就够了吗?
A:不够,还需要禁用密码登录,并配合防火墙和Fail2Ban。
Q:UFW和firewalld怎么选?
A:Ubuntu系用UFW更直观,RHEL系用firewalld更灵活。
Q:Fail2Ban会不会误伤正常IP?
A:可以在配置中加白名单IP,避免封禁自己的办公IP。
Q:自动更新会不会出问题?
A:可以只安装安全补丁,降低更新带来的风险。
Q:rsync和Borg怎么选?
A:小数据量选rsync,大数据量选Borg。
结语:把安全当成必做功课
把这套安全配置当成“开机自检”,不管是个人独立站还是团队项目,都能避免很多麻烦。
如果你在操作中遇到问题,可以在评论区留言,我们会一起帮你排查。
觉得有用的话,欢迎点赞、转发,让更多人少走弯路。