VPS 服务器买回来的第一件事是什么?不是急着搭网站,而是先做安全加固。很多站长只重功能、轻安全,结果服务器被暴力破解、被植挖矿木马、被当跳板打别人,最后整台机器沦陷。据统计,公网上暴露 22 端口的服务器平均每几分钟就会收到一次暴力破解尝试。本篇文章从 SSH 安全、防火墙、fail2ban 防暴力破解 三个层面,手把手教你给 Linux VPS 做一套完整的服务器安全加固方案,把风险降到最低。
一、为什么要给 Linux 服务器做安全加固
服务器一旦上线公网,就会被扫描器自动扫描。默认的 Linux 环境往往存在几个常见弱项:密码登录容易被爆破、root 直接登录暴露管理权限、22 端口裸奔没有访问限制、缺少失败封禁机制可以无限重试。安全加固的目的,就是用最小成本把这些弱项全部堵上,让攻击者无从下手。
二、SSH 安全加固
SSH(22 端口)是暴力破解的头号目标,加固思路可以概括为:密钥登录、禁用 root 登录、修改默认端口、限制失败次数。
1. 用密钥登录替代密码登录
先在本地电脑生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
然后把公钥上传到服务器:
ssh-copy-id user@your_server_ip
编辑 /etc/ssh/sshd_config,关闭密码登录:
PasswordAuthentication no PubkeyAuthentication yes
重启 SSH 服务使配置生效:
systemctl restart sshd
关闭密码登录前,务必确认密钥已经能正常登录,否则会把自己锁在门外。
2. 禁止 root 直接登录
在 sshd_config 中追加:
PermitRootLogin no
日常用一个普通权限的用户登录,需要提权时再使用 sudo,这样即使被入侵,也很难直接拿到 root 权限。
3. 修改默认 SSH 端口
把 22 换成其他高位端口,能显著减少被随机扫描命中的概率:
Port 2222
修改后记得同步放行防火墙新端口,并 systemctl restart sshd。
三、防火墙配置
这里以 CentOS 默认的 firewalld 为例,Ubuntu 用户用 ufw 原理相同。防火墙的核心思想是默认拒绝、按需放行。
启动并设置开机自启:
systemctl start firewalld systemctl enable firewalld
只放行真正需要的端口(HTTP 80、HTTPS 443):
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload
这样除放行端口外,其他入站请求一律丢弃,攻击面直接缩小一大截。
四、fail2ban 防暴力破解
fail2ban 通过监控系统日志,能自动识别短时间内多次登录失败的 IP 并封禁。安装命令:
# CentOS/RHEL yum install -y fail2ban # Debian/Ubuntu apt install -y fail2ban
新建配置文件 /etc/fail2ban/jail.local:
[DEFAULT] bantime = 600 maxretry = 5 findtime = 600 [sshd] enabled = true backend = systemd
启动并开机自启:
systemctl enable --now fail2ban
查看封禁情况:
fail2ban-client status sshd
到这里,服务器已经具备了自动封禁暴力破解 IP 的能力,99% 的密码爆破会在几次重试后被直接拉黑。
五、其他必须养成的安全习惯
除了上述三板斧,还有几件小事同样重要:
- 及时更新系统补丁:
yum update -y或apt update && apt upgrade -y,堵住已知 CVE 漏洞。 - 关闭不必要服务:用
systemctl list-unit-files | grep enabled检查,能关的尽量关。 - 定期备份:网站文件 + 数据库做定时异地备份,出问题随时可回滚。
- 不要用弱密码:无论是面板、数据库还是 FTP,一律使用高强度随机密码。
六、总结
服务器安全不是一劳永逸,而是一个持续的过程。先把 SSH 密钥登录、防火墙默认拒绝、fail2ban 自动封禁这三板斧做好,再养成及时更新、定期备份的习惯,你的 VPS 就能规避掉绝大多数常见安全风险。安全不仅是技术问题,更是习惯问题,早加固早安心。
