刚开了一台 Ubuntu 24.04 的 VPS?别急着跑业务,先把安全搞定。暴露在公网上的服务器,每时每刻都有机器人在扫描默认的 22 端口,试图暴力破解。所以,修改默认端口和加固系统是每个 VPS 用户的必修课。
24.04 这版本改 SSH 端口比以前麻烦了一点,因为它默认用了 systemd socket activation 来管理 SSH。不过别慌,跟着我的步骤来,一次搞定。
黄金法则:在修改 SSH 相关配置时,始终保持一个当前已登录的 SSH 会话不要断开。新开一个终端窗口进行测试,确认新配置可以正常登录后,再关闭旧的会话。不然,你可能会把自己锁在门外。
第一部分:跟 22 端口说再见
我们的目标是把默认的 22 端口改成一个不常用的,比如 2222。
步骤 1: 编辑 sshd_config
这是老规矩,先告诉 SSH 服务本身你想用哪个端口。
sudo nano /etc/ssh/sshd_config
找到 #Port 22 这一行,去掉 # 注释,然后把 22 改成你的新端口。
Port 2222
改完后按 Ctrl+X,然后按 Y 回车保存。
步骤 2: 配置 systemd socket (24.04 关键步骤)
这是 24.04 的新花样。光告诉 SSH 不够,还得告诉 systemd 这个大管家,让它去监听新端口。
首先,创建覆盖配置的目录:
sudo mkdir -p /etc/systemd/system/ssh.socket.d
然后,创建一个新的配置文件 listen.conf:
sudo nano /etc/systemd/system/ssh.socket.d/listen.conf
把下面的内容粘贴进去:
[Socket]
ListenStream=
ListenStream=2222
解释一下这两行:
ListenStream=:第一行留空,作用是清空默认监听的 22 端口。这行不能少!ListenStream=2222:第二行写上你的新端口。
保存退出。
步骤 3: 重载服务并检查
让 systemd 重新加载配置,然后重启 ssh.socket。
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
现在,检查一下新端口是否已经在监听了:
sudo ss -tuln | grep 2222
如果你看到类似下面的输出,说明成功了: tcp LISTEN 0 4096 0.0.0.0:2222 0.0.0.0:*
步骤 4: 放行防火墙
端口改了,防火墙得跟上。这里以 UFW 为例。
# 允许新端口的流量
sudo ufw allow 2222/tcp
# (可选但推荐)禁止旧的 22 端口
sudo ufw delete allow 22/tcp
# 重载防火墙规则
sudo ufw reload
最后一步:测试! 新开一个终端,用新端口登录你的服务器: ssh your_user@your_ip -p 2222
确认能成功登录后,你就可以安心地关闭之前的会话了。
第二部分:给你的 VPS 穿上盔甲
改端口只是第一步,下面这几项能让你的 VPS 安全性提升几个数量级。
1. 禁用密码,只用密钥登录
这是安全的第一道防线,也是最重要的一道。密码登录就是给暴力破解送人头。
首先,确保你已经把本地的公钥上传到服务器了。如果没有,在你的本地电脑上执行:
# 如果没有密钥对,先生成一个
ssh-keygen -t ed25519
# 把公钥复制到服务器(注意换成你的新端口)
ssh-copy-id -p 2222 your_user@your_ip
然后,在服务器上编辑 sshd_config:
sudo nano /etc/ssh/sshd_config
修改或确认以下两项:
PasswordAuthentication no
PubkeyAuthentication yes
重启 SSH 服务使其生效:
sudo systemctl restart ssh
2. 禁止 root 用户直接登录
别用 root 用户直接浪,养成好习惯,用普通用户登录再 sudo 提权。
继续编辑 sshd_config:
sudo nano /etc/ssh/sshd_config
修改或添加这一行:
PermitRootLogin no
重启 SSH 服务:
sudo systemctl restart ssh
3. 安装并配置 Fail2Ban
Fail2Ban 是一个自动看门狗,谁老是输错密码敲你家门,它就把谁的 IP 关在门外一段时间。
安装:
sudo apt update
sudo apt install fail2ban
配置: Fail2Ban 的最佳实践是不要直接改 jail.conf,而是创建一个 jail.local 文件来覆盖它。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
然后编辑 jail.local:
sudo nano /etc/fail2ban/jail.local
用 Ctrl+W 搜索 [sshd],找到 SSH 的配置部分,修改成这样:
[sshd]
enabled = true
port = 2222 # 重点:改成你的新 SSH 端口
maxretry = 3 # 3次失败就封
bantime = 1h # 封1小时
启动并检查:
# 重启 Fail2Ban 服务
sudo systemctl restart fail2ban
# 检查 sshd jail 的状态
sudo fail2ban-client status sshd
如果一切正常,你会看到被激活的 jail 详情。
4. 保持系统更新
保持系统最新能堵上很多已知的安全漏洞,养成定期更新的好习惯。
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y
可以考虑用 unattended-upgrades 实现安全更新的自动化,这里就不展开了。
搞定以上这些,你的 VPS 基本上就从一个裸奔的新手村装备,升级到了可以上战场的骑士级别。安全无小事,多一分谨慎,少一分风险。