把 VPS 买回来、系统装好、SSH 登上去之后,绝大多数人的第一反应是:赶紧装环境。但在这个步骤之前,有一件比装任何软件都更重要的事——做安全加固。不是危言耸听:一台裸机状态的 VPS 在接入公网后几小时内就会被自动化扫描工具发现,然后开始承受不间断的暴力破解尝试。
下面这 7 项安全配置,按从紧急到可选的顺序排列。每一行命令都可以直接复制粘贴使用。全部做完大约需要 15 分钟,但能让你的 VPS 安全水平从出厂裸奔提升到业界基本线。
🔒 配置一:SSH 密钥登录 + 关闭密码登录(强烈建议第一时间做)
密码登录是 VPS 被攻破的头号入口。自动化脚本每分钟扫描成千上万个 IP,尝试 root + 常见密码组合。哪怕你设了一个 16 位复杂密码,也只是延缓被破解的时间,而不是杜绝风险。SSH 密钥登录使用非对称加密,没有私钥文件的人无法登录——这才是正确的做法。
操作分两步:
ssh-keygen -t ed25519 -C “your_email@example.com”
# 第二步:把公钥传到 VPS
ssh-copy-id -p 22 root@你的_VPS_IP
# 第三步:在 VPS 上编辑 SSH 配置
sudo nano /etc/ssh/sshd_config
# 修改以下三个参数:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
# 重启 SSH 服务
sudo systemctl restart sshd
重要提示:关闭密码登录后,请务必先在另一个终端保持当前 SSH 连接不关闭,新开一个窗口测试密钥登录是否正常。等确定新连接成功后,再关闭旧窗口。否则一旦配置出错你就被自己锁在外面了。
🔒 配置二:修改 SSH 默认端口
SSH 默认端口 22 是每一个扫描脚本的必扫端口。把它改到 1024–65535 之间的一个不常用端口,可以瞬间过滤掉 99% 的自动化扫描流量。配合配置一使用效果最好。
Port 23456 # 注意:选一个你自己记得住的端口
# 修改后不要忘了更新防火墙规则(见下一项)
sudo systemctl restart sshd
改了端口后,每次 SSH 连接时要用 ssh -p 23456 user@host 来登录。如果你用 SSH 配置文件(~/.ssh/config),在里面加一行 Port 即可。
🔒 配置三:配置 UFW 防火墙(只放行必要端口)
UFW(Uncomplicated Firewall)是 iptables 的前端封装,让防火墙配置变成几句话的事。当前原则是:默认拒绝所有入站流量,只放行你明确需要的端口。
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 放行 SSH(用你改后的端口号)
sudo ufw allow 23456/tcp comment ‘SSH’
# 放行 HTTP/HTTPS(如果建站)
sudo ufw allow 80/tcp comment ‘HTTP’
sudo ufw allow 443/tcp comment ‘HTTPS’
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status verbose
刚启动 UFW 时如果当前 SSH 连接用的是旧端口,记得先放行才启用,或者直接在另一个终端操作。
🔒 配置四:安装并配置 Fail2Ban
Fail2Ban 是一个日志分析工具,它会监控 /var/log/auth.log 等日志文件,如果发现同一个 IP 在短时间内多次登录失败,就自动将该 IP 加入防火墙黑名单一段时间。这是对付暴力破解最有效的工具。
sudo apt install fail2ban -y
# 创建本地配置文件(覆盖默认)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑 /etc/fail2ban/jail.local,找到 [sshd] 段落,确保以下配置生效:
[sshd]
enabled = true
port = 23456 # 改为你的 SSH 端口
maxretry = 5 # 5 次失败即封禁
bantime = 3600 # 封禁 1 小时(3600 秒)
findtime = 600 # 10 分钟内计数
# 重启服务
sudo systemctl restart fail2ban
# 查看被封禁的 IP
sudo fail2ban-client status sshd
安装 fail2ban 后你会立刻看到效果:日志里之前每天几百次失败尝试会瞬间归零。如果你用的是 1Panel 或宝塔面板,面板自身也集成了类似功能,但原生 fail2ban 更轻量、更可控。
🔒 配置五:创建普通用户并配置 sudo
不要在 root 用户下进行日常操作。正确的做法是创建一个普通用户,日常登录用这个用户,需要管理员权限时用 sudo。这能避免误操作(比如 rm -rf 打错路径)造成的毁灭性后果,也能限制黑客即使攻破了你的普通用户账户,也无法直接获得 root 权限。
sudo adduser adminuser
# 将用户加入 sudo 组
sudo usermod -aG sudo adminuser
# 测试:用新用户登录,然后执行 sudo whoami
# 应该返回 “root”
大部分 Linux 发行版默认允许 sudo 组成员执行所有管理员命令。如果你需要更精细的权限控制,可以编辑 /etc/sudoers 文件设置具体规则。
🔒 配置六:配置自动安全更新
漏洞总是在补丁发布之后被黑客利用得最快。很多 0day 攻击在官方修复后的 24–48 小时内就会有利用脚本出现。配置无人值守更新(unattended-upgrades),让系统自动安装安全补丁,是低投入高回报的措施。
sudo apt install unattended-upgrades -y
# 启用自动更新
sudo dpkg-reconfigure –priority=low unattended-upgrades
# 或者手动编辑配置文件
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
# 确保以下行未被注释:
Unattended-Upgrade::Allowed-Origins {
“${distro_id}:${distro_codename}-security”;
};
# 可选:设置自动重启(如果内核更新后需要)
Unattended-Upgrade::Automatic-Reboot “true”;
Unattended-Upgrade::Automatic-Reboot-Time “03:00”;
配置完成后,系统会在每天的 apt 更新检查周期中自动安装安全补丁。你可以在 /var/log/unattended-upgrades/ 下查看日志确认工作状态。
🔒 配置七(进阶):安装并配置审计和入侵检测
如果你跑的是生产环境或面向用户的站点,前面六项只是基础,最后这一步才是区分”普通运维”和”认真运维”的分水岭。推荐两个轻量级工具:
Lynis:安全审计工具。运行一次会给你的系统安全打分,并列出改进建议。
AIDE(Advanced Intrusion Detection Environment):文件完整性检查工具。它会记录系统中关键文件的哈希值,然后在后续运行中检测哪些文件被修改了。如果服务器的某个二进制文件被替换成了后门版本,AIDE 会在几分钟内发现。
sudo apt install lynis -y
sudo lynis audit system
# AIDE 文件完整性检查
sudo apt install aide -y
sudo aideinit # 初始化数据库(耗时较长)
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo aide.wrapper –check # 运行完整性检查
# 建议把 AIDE 检查加入 cron 每天凌晨执行
sudo crontab -e
# 添加一行:
0 4 * * * /usr/bin/aide.wrapper –check | mail -s “AIDE Report” your@email.com
sudo apt update && sudo apt upgrade,每季度跑一次 lynis audit;每次发现 SSH 日志里有可疑 IP (journalctl -u sshd | grep “Failed password”),确认是否是自己的误操作导致。养成这些习惯后,你的 VPS 基本上不会因为”基础安全问题”翻车。
常见问题解答(FAQ)
Q1:改了 SSH 端口后忘了新端口号怎么办?
如果你还有另一个登录方式(如 VNC 或商家后台的 Console),可以进去查看 /etc/ssh/sshd_config 里的 Port 配置。如果没有任何其他入口,只能通过商家后台重装系统。
Q2:Fail2Ban 会不会误封正常用户?
有可能,比如你输错几次密码就会触发。bantime 设短一点(3600 秒)可以缓解这个问题。另外可以用 sudo fail2ban-client set sshd unbanip IP_ADDRESS 手动解封。
Q3:我用了宝塔或 1Panel,还需要手动配置这些吗?
面板自带的防火墙和安全功能只能覆盖部分需求。SSH 密钥登录、改端口、系统自动更新这些操作,面板无法替代,需要手动配置。面板安全插件和系统级加固是互补关系,不是替代关系。
Q4:apt upgrade 之后 VPS 会不会不稳定?
安全更新(security 源)一般只修漏洞不改变功能行为,稳定性影响极小。但建议生产环境不要开启 auto-reboot,改用手动复查后再重启。
Q5:Lynis 扫描出来的问题都要修吗?
不需要。Lynis 给出的是一个安全参考评分——有些建议(如安装 SELinux、禁用 root 完全登录等)在个人 VPS 上成本过高收益不大。优先修复评分 WARNING 级别的项目即可。
Q6:修改 SSH 配置后无法连接怎么办?
最稳妥的做法是开两个 SSH 窗口——一个保持现有连接不动,另一个测试新配置。新建连接成功后,再关闭旧窗口。如果你只有一个人操作,不要退出当前 shell,先执行 sshd -t 测试配置文件语法是否正确。
原创文章,作者:KUKU,如若转载,请注明出处:https://wankewu.com/linux/1892.html
