VPS 安全加固实战:从弱密码到全方位防护一次讲清


很多站长拿到 VPS 的第一件事就是装面板、跑业务,却往往忽略了最致命的问题——安全。我见过太多真实案例:SSH 弱密码被暴力破解,几分钟内被植入挖矿程序;网站目录权限没设置好,被上传了 webshell 直接拿站;数据库端口裸奔在公网上,数据被拖走……等发现时,早已为时已晚。

其实 VPS 安全加固并不复杂,花上半小时做一轮基础加固,就能挡住 90% 以上的常见攻击。这篇文章我把从系统层到应用层的加固要点一次讲清,跟着操作即可。

一、SSH 安全:封堵第一个入侵入口

SSH 是 VPS 最主要的远程入口,也是暴力破解的重灾区。默认的 22 端口每秒都有扫描器在试探,必须重点加固。

1. 修改默认端口。编辑 SSH 配置文件,把 22 换成高位端口:

vim /etc/ssh/sshd_config

找到 Port 22,修改为高位端口,例如 22666:

Port 22666

2. 禁用 root 直接登录。root 拥有最高权限,被攻破代价最大,建议先创建普通用户,登录后再 su 切换:

PermitRootLogin no

3. 改用密钥登录,彻底告别密码爆破。先在本地生成密钥对:

ssh-keygen -t ed25519 -C "you@example.com"

再把公钥复制到服务器:

ssh-copy-id -p 22666 user@your_server_ip

最后在配置文件里关闭密码登录:

PasswordAuthentication no

注意:改配置前务必先确认密钥登录可用,并且保留一个已连接的终端会话,防止把自己锁在外面。修改完成后重启 SSH 服务:

systemctl restart sshd

二、防火墙:只放行该放行的端口

防火墙是第二道防线,原则很简单:默认拒绝所有入站流量,只放行必需端口。Ubuntu/Debian 使用 ufw:

ufw default deny incoming
ufw default allow outgoing
ufw allow 22666/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

CentOS/Rocky 使用 firewalld:

firewall-cmd --permanent --add-port=22666/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

开启之后,除了 SSH、HTTP、HTTPS 之外,其余端口一律不可达。就算数据库、Redis 这类服务忘记配置,也不会直接暴露在公网上。

三、系统层加固:自动更新与 fail2ban

1. 开启自动安全更新。系统漏洞补丁不及时,等于把后门一直开着:

apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

2. 安装 fail2ban 拦截暴力破解。它会监控登录日志,连续失败达到阈值就自动封禁来源 IP,爆破基本无解:

apt install fail2ban -y
systemctl enable --now fail2ban

四、Web 应用层安全

以最常见的 LNMP 环境为例,还有几处容易踩坑的地方:

1. 目录权限:网站目录建议 755、文件 644,运行用户与文件所有者分离,避免 PHP 进程权限过高被提权利用。
2. PHP 禁用危险函数:在 php.ini 中禁用 exec、system、passthru、shell_exec 等高危函数,即使被上传了木马也无法执行系统命令。
3. 关闭目录浏览:确认 Nginx 配置中 autoindex off,防止目录结构被遍历。
4. 数据库安全:MySQL 不要使用 root 远程登录,创建最小权限的专用账号,并设置强密码。
5. 定期备份:安全加固做得再好,也要有随时可恢复的备份兜底,建议开启异地备份。

五、总结

安全加固不是一次性工作,而是需要长期坚持的习惯。建议每隔一段时间检查:登录日志有没有异常、开放端口是否最小化、系统补丁是否最新。

花半小时做一轮基础加固,远比被入侵后花几天恢复数据划算。希望这篇文章能帮各位站长把自己的服务器守得更稳。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

-

test2

评 论