很多新手拿到VPS的第一件事是装面板、搭网站,却往往忽略了最基础的安全配置。实际上,一台"裸奔"的服务器从上线到被扫描器盯上,通常不超过半小时。本文分享一套完整且容易上手的VPS安全加固流程,全部基于Ubuntu/Debian系统演示,其他发行版用户也能举一反三。
一、先看看你的服务器正在经历什么
装完系统后,先统计一下SSH端口的失败登录尝试:lastb | wc -l。如果这个数字每天都会上涨,说明你的服务器已经持续暴露在暴力破解攻击之下。攻击者的字典里,最常见的就是root、admin这类用户名配合弱密码的组合。
二、SSH安全三步走
第一步:修改默认端口。SSH默认使用22端口,改成一个1024以上的高端口(例如22222),可以过滤掉大部分无差别扫描。编辑 /etc/ssh/sshd_config,把 Port 22 改为 Port 22222。注意:先在防火墙放行新端口再重启sshd服务,否则会把自己锁在门外。
第二步:禁用root直接登录。新建一个普通用户并加入sudo组,然后在配置中设置 PermitRootLogin no。这样即使密码泄露,攻击者拿到的也只是普通权限,破坏力大幅下降。
第三步:改用密钥登录。本地执行 ssh-keygen 生成密钥对,把公钥写入服务器的 ~/.ssh/authorized_keys,再设置 PasswordAuthentication no。密钥登录比密码安全得多,从此基本告别爆破烦恼。
三、用UFW配置防火墙
UFW是Ubuntu自带的防火墙前端,几条命令就能完成基础防护:ufw allow 22222/tcp 放行SSH新端口;ufw allow 80,443/tcp 放行网站端口;ufw enable 启用防火墙。原则很简单:只放行业务必须的端口,其余全部默认拒绝。如果装了宝塔面板,记得面板端口也要放行;更稳妥的做法是限制面板只允许自己常用的IP段访问。
四、fail2ban:自动封禁暴力破解IP
fail2ban会持续监控日志文件,当某个IP的失败登录次数超过阈值时,自动调用防火墙将其封禁。安装非常简单:apt install fail2ban。编辑 /etc/fail2ban/jail.local,设置 maxretry 为5、bantime 为3600,意味着失败5次就封禁1小时。启用SSH的jail后,配合前面的密钥登录,暴力破解基本无解。
五、日常维护清单
安全不是一次性的工作,建议每月例行检查:1. 系统更新(apt update && apt upgrade)修复已知漏洞;2. 查看登录记录(last 与 lastb)排查异常登录;3. 复查防火墙规则,确认没有多余的放行端口;4. 定期把网站文件和数据库备份到异地。
另外提醒一句:密码要"长"而不要"复杂到记不住",一句20个字符的随机短语,安全性远超8位混合符号密码。
写在最后:安全加固不需要多高深的技术,却能挡住99%的自动化攻击。与其在被入侵后手忙脚乱地重装系统,不如现在花半小时把上面的配置做完。