新手的首台VPS到手,最要紧的不是装面板或跑业务,而是先花半小时做一遍安全基线。它解决的是“服务器默认状态等于裸奔”这个根本问题默认的22端口、root直登、密码登录,都是扫描工具的优先猎物,把这几项关紧,再谈其他。
VPS安全设置新手最容易忽略的三个默认项
很多教程上来就让你装宝塔或者LNMP,安全性却只字不提,行业共识认为,VPS被入侵的多数案例都发生在购买后的最初几小时,因为默认配置本身就带着风险。
默认的root账号和密码登录是首号隐患
你买来VPS,服务商给的登录方式通常是root加密码,或者root加密钥,问题不在root本身,而在“谁都能尝试登录”,扫描全网IP的机器人不会挑肥拣瘦,它们会不停地用常见密码试探22端口。
- 密码登录意味着可以无限暴力尝试,虽然服务商通常有防护,但你的VPS未必在保护伞内
- root是系统最高权限账号,一旦被猜中密码,攻击者直接获得完整控制权
- 多数人不设置复杂密码,或者复用其他平台密码,这等于给攻击者留了后门
默认SSH端口容易被扫描器盯上
端口22是SSH的标准端口,全球扫描器每天24小时对它进行地毯式探测,换端口不解决根本问题,但能大幅降低被随机扫描命中的概率。
改端口在VPS安全设置里属于性价比极高的操作,它不复杂,却能让绝大部分自动化扫描程序直接扑空。
安全组和防火墙默认全开
部分服务商默认放行所有端口,或者新用户根本不知道有安全组这回事,这意味着你的数据库端口、管理面板端口完全暴露在公网,只靠软件层面的密码在撑。
VPS SSH配置教程:改端口和密钥登录的完整步骤
这部分是安全基线的核心,也是关于VPS安全设置新手问得最多的地方,一步步来,每一步都给出具体操作。
第一步:先创建普通用户,别急着用root干活
长期用root操作服务器,一个误命令就可能毁掉系统,先建一个普通用户,日常登录和运维都用它,需要提权时再临时切换。
以下命令在SSH登录后执行:
adduser yourname # 创建新用户 usermod -aG sudo yourname # 给它sudo权限(Debian/Ubuntu系)

CentOS系的话,把usermod那行改成:
usermod -aG wheel yourname
第二步:配置SSH密钥登录并禁用密码
密钥登录的好处是:没有你的私钥文件,光靠猜密码根本进不来,这一步做完,你的VPS安全级别直接上一个台阶。
在自己电脑上生成密钥对(如果还没有的话):
ssh-keygen -t ed25519 -C "yourname@your-vps"
把公钥复制到服务器:
ssh-copy-id yourname@你服务器IP
如果你是Windows用户,可以用scp把公钥文件传到服务器后手动添加,或者直接用PowerShell的type $env:USERPROFILE.sshid_ed25519.pub | ssh yourname@服务器IP "cat >> ~/.ssh/authorized_keys"。
修改SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到以下几行,改成对应的值:
PasswordAuthentication no # 禁止密码登录
PermitRootLogin no # 禁止root直接SSH登录
PubkeyAuthentication yes # 启用密钥登录
- 改完保存,先别急着重启服务,先开一个新的终端窗口,用密钥登录试试,确认能登录后,再执行:
sudo systemctl restart sshd
这一步是保命操作如果配置有误,你又直接重启了SSH,可能会把自己锁在外面。
第三步:修改默认SSH端口
修改/etc/ssh/sshd_config,把Port 22改成一段不常用的高位端口,比如Port 22422。
改完记得在防火墙里放行新端口,再关掉22端口,顺序搞反的话,同样会把自己锁在门外。
提醒:有些低配VPS服务商的控制台自带VNC网页终端,如果真把自己锁了,还能靠它救回来,买VPS前留意一下控制台是不是带这个功能,关键时刻能救命。
新手VPS防火墙设置教程:ufw和fail2ban怎么配合用
SSH层面做完,接着是防火墙和入侵防护,这部分属于纵深防御,即使SSH配置被绕过,还有第二道防线兜底。
ufw:最简单的防火墙配置方式
Ubuntu和Debian系自带ufw,很适合新手,CentOS系用firewalld,思路类似。

sudo ufw allow 22422/tcp # 放行新SSH端口 sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw enable # 启用防火墙 sudo ufw status # 查看状态
如果需要其他端口再单独放行,原则是:默认拒绝入站,只开必需端口。
CentOS系的firewalld命令:
sudo firewall-cmd --permanent --add-port=22422/tcp sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
fail2ban:把反复尝试登录的IP拦在外面
fail2ban的作用是监控登录日志,发现某IP多次认证失败就自动封禁一段时间,它拦截暴力破解,与密钥登录形成互补。
安装和启动:
sudo apt install fail2ban # Ubuntu/Debian sudo systemctl enable fail2ban sudo systemctl start fail2ban
它的默认配置就可以直接用,想细调的话,编辑/etc/fail2ban/jail.local,给ssh服务设置更长的封禁时间或更严格的触发阈值。
两者怎么配合
- ufw负责“关上门”,只留必要端口
- fail2ban负责“看门”,发现可疑行为就把IP拉黑
没有fail2ban,即使你改成了密钥登录,攻击者依然会不断尝试连接你的22端口,虽然进不来,但会产生大量日志和连接开销,有了它,大多数尝试会在几次失败后被自动阻断。
便宜VPS也要做安全基线:自动更新和定期巡检
很多人买便宜VPS就是图个折腾,觉得被攻击了重装系统就行,但数据无价,你真把博客或项目的数据库丢了,重装也找不回,便宜VPS更需要安全基线,因为这类产品通常没有额外的防护层。
开启系统自动安全更新
Ubuntu/Debian:
sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
按提示启用自动安装安全更新,CentOS系用dnf-automatic。
内核和关键软件的安全补丁,不要拖,多数被入侵的VPS,都是栽在已经公开的已知漏洞上。
定期看日志和文件
不需要天天看,但每周花两分钟扫一眼没有坏处:
sudo grep "Failed password" /var/log/auth.log | tail -n 20 # 查看最近登录失败记录 sudo last -n 10 # 最近登录情况

看到奇怪IP或者非自己操作的登录记录时,第一件事是改密钥或换端口。
基础运维习惯
- 不用的服务及时卸载或停止
- 数据库端口不要对公网开放,绑定127.0.0.1即可
- 管理面板自带的安全检测功能,有空就点开看看
管理面板类VPS的安全注意事项
如果你装的是宝塔、aaPanel这类可视化面板,安全基线的重点略有不同,这类面板确实好用,但也自带了额外攻击面。
面板本身的安全设置
- 修改面板默认端口,不要用8888默认值
- 开启面板的BasicAuth认证,双重门槛
- 面板密码用单独的强密码,不要和系统密码重复
面板内的SSH配置
这类面板一般有“SSH管理”功能,进去做三件事:改端口、关密码登录、禁root直登,和命令行操作效果一样。
部署网站后的PHP及数据库安全
- PHP版本尽量选较新的稳定版
- 关闭PHP的危险函数,如
exec、shell_exec等 - 数据库账号遵循最小权限原则,每个站点单独建库建号
VPS安全基线设置常见问题
改SSH端口对国内服务器有额外影响吗
没有实质影响,国内VPS和海外VPS在SSH配置上没有差异,但国内服务器需要注意备案和合规要求,部分服务商对25端口有特殊限制,这些和SSH无关。
配置密钥登录后,密码登录就完全不能用了吗
是的,PasswordAuthentication no会让所有密码登录失效,包括新建用户,如果你后续新增了用户,需要手动给那个用户添加公钥。
新用户和root的权限区别到底在哪
新用户日常操作不需要root权限,只有在执行系统级命令时才通过sudo提权,即使密钥被泄露,攻击者也只会拿到非特权账户,系统核心文件无法被篡改。
安全基线做完,你的VPS就已经比绝大多数新手服务器要硬了,关键是别停在这一步隔三个月回去检查一下SSH配置、防火墙规则有没有被改动,再翻翻登录日志,确认一切如常,花在安全上的时间从来都不是浪费,它换来的是你晚上能安心睡觉。