首页 / 服务器运维 / SSH从“裸奔”到可审计:Ubunt

SSH从“裸奔”到可审计:Ubuntu/Debian服务器安全加固实战脚本

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

Chapter 1|OK so,先看现场:你的SSH到底暴露了什么?

🔧STEP 1环境搭建📋STEP 2编码实现✅STEP 3测试验证🚀STEP 4部署上线

兄弟们开机!这里是 eccfy,今天我们直接上屏幕,不讲玄学。场景:一台 Ubuntu 22.04 云服务器,公网 IP 暴露 22 端口。接下来我先跑两条命令,看看它现在有多“裸”。

sudo ss -tlnp | grep ssh 看 SSH 监听端口;再用 sudo journalctl -u ssh --since "1 hour ago" | grep "Failed password" | wc -l 统计失败登录。我测试的一台新机器,开放 22 端口 40 分钟,失败尝试 186 次,主要是 root、admin、test 这些用户名。

根因很简单:默认端口、允许密码、允许 root、没有限速。很多人搜索“Linux服务器安全加固教程”时会直接复制一堆配置,但你先记住:别急着重启 SSH,先开一个备用终端,避免把自己锁外面。

Chapter 2|Now watch this:密钥登录、防火墙、Fail2ban 一次配好

Q1需求调研Q2产品开发Q3内测上线Q4全面推广

第一步,本机生成密钥。如果你已经有密钥可跳过。这个“SSH配置教程”适合新手照抄:

ssh-keygen -t ed25519 -C "server-prod-2025"

把公钥传上去:

ssh-copy-id -i ~/.ssh/id_ed25519.pub youruser@SERVER_IP

第二步,编辑 SSH 配置。注意:不同系统可能是 /etc/ssh/sshd_config,Ubuntu 新版也可能读取 /etc/ssh/sshd_config.d/*.conf。我建议新建独立文件,方便回滚:

sudo nano /etc/ssh/sshd_config.d/99-hardening.conf

写入下面这段:

Port 2222
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
AllowUsers youruser
ClientAliveInterval 300
ClientAliveCountMax 2

第三步,先检查语法,别手滑:

sudo sshd -t

没输出就是通过。接下来放行防火墙端口。UFW 用户这样做:

sudo ufw allow 2222/tcp
sudo ufw enable
sudo ufw status numbered

如果你用云厂商安全组,也要同步放行 2222,并保留 22 几分钟,等确认新端口能连再删。

第四步,装 Fail2ban。很多人问“fail2ban怎么用”,最小可用配置如下:

sudo apt update && sudo apt install -y fail2ban
sudo nano /etc/fail2ban/jail.d/sshd.local

写入:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = %(sshd_log)s
maxretry = 5
findtime = 10m
bantime = 1h

启动并查看:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

小提醒:别把服务器当“免费VPN怎么用”的跳板乱开端口,也别安装来路不明的翻墙软件服务端脚本。服务器安全的第一原则是:开放越少,审计越清楚。

Chapter 3|Before/After揭晓:怎么验证真的加固成功?

接下来是验收环节,别只看教程截图。先在新终端测试密钥登录:

ssh -p 2222 youruser@SERVER_IP

成功后,再测试密码登录是否被拒绝:

ssh -o PreferredAuthentications=password -p 2222 youruser@SERVER_IP

如果提示 Permission denied,很好。再测试 root:

ssh -p 2222 root@SERVER_IP

应该被拒绝。然后扫描端口:

nmap -Pn -p 22,2222 SERVER_IP

我的实测结果:加固前 22/tcp open;加固后 22/tcp filtered,2222/tcp open。用 time ssh -p 2222 youruser@SERVER_IP exit 测登录耗时,东京节点到新加坡服务器约 82ms,配置前后延迟基本无变化,说明安全策略没有明显拖慢 SSH。

最后看日志:

sudo journalctl -u ssh --since "10 min ago"
sudo fail2ban-client status sshd

如果你看到失败尝试被 ban,密码登录被拒,root 无法进入,新端口可用,那这轮 Linux SSH 安全加固就算过关。想了解“油管怎么看”这类网络访问问题,也建议优先区分客户端网络与服务器运维安全,不要混在同一台生产机上折腾。

免费方案方面,OpenSSH、UFW、Fail2ban 已经足够覆盖大多数个人和小团队服务器;官方云防火墙也值得先用。若你需要额外网络工具做跨区域测试,Roxi 只是可选项之一:wizzegroup.com。OK,今天就到这,照着做完记得评论区丢你的验证结果!