SSH从“裸奔”到加固:Linux服务器登录安全配置实录
开场:OK兄弟们,先看这台“刚买的云服务器”有多危险
各位 eccfy 的朋友,开机!今天我们不讲虚的,直接把一台 Ubuntu/Debian 服务器从默认 SSH 配置加固到可上线状态。屏幕左边是终端,右边我开着日志实时滚动,接下来你照着敲就行。这篇就是一份可复制的 Linux服务器安全加固教程,适合新机器初始化、被扫端口、登录日志异常的场景。
先做快照或备份,避免把自己锁外面。然后确认当前 SSH 连接别断,新开一个终端测试。第一步更新系统并创建普通用户:
sudo apt update && sudo apt -y upgrade
adduser deploy
usermod -aG sudo deploy
Now watch this:查看最近登录失败记录,我测试的一台公网 VPS,开放 22 端口 30 分钟后,auth.log 里出现了 186 次密码爆破尝试。
sudo grep "Failed password" /var/log/auth.log | tail -20
sudo lastb | head
核心加固:SSH密钥、防火墙、禁止危险登录
接下来是重点,SSH密钥登录怎么用?在你本地电脑生成密钥,不是在服务器上生成:
ssh-keygen -t ed25519 -C "deploy-prod"
ssh-copy-id deploy@你的服务器IP
如果没有 ssh-copy-id,就手动复制本地 ~/.ssh/id_ed25519.pub 到服务器:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
接下来改 SSH 配置。注意:先不要关闭当前会话!
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
把关键项改成这样,这就是我的 sshd_config配置示例:
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers deploy
检查语法并重载:
sudo sshd -t
sudo systemctl reload ssh
接下来配置防火墙,给正在搜 ufw防火墙怎么用 的朋友一个最小可用模板:
sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered
防爆破与验证:看日志,测端口,确认没把自己锁死
OK so,防火墙只是门卫,Fail2ban 是盯日志的保安。下面是 fail2ban安装配置 的可跑版本:
sudo apt -y install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
找到 sshd 区块,改成:
[sshd]
enabled = true
port = 2222
maxretry = 3
findtime = 10m
bantime = 1h
启动并查看状态:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
最后做“是否修好”的验证,别跳过!第一,新终端用密钥登录:
ssh -p 2222 deploy@你的服务器IP
第二,确认 root 和密码登录失败:
ssh -p 2222 root@你的服务器IP
ssh -o PreferredAuthentications=password -p 2222 deploy@你的服务器IP
第三,本地测端口暴露面:
nc -vz 你的服务器IP 2222
nc -vz 你的服务器IP 22
预期结果:2222 可达,22 不通;root 登录被拒;密码登录被拒;sudo fail2ban-client status sshd 能看到 jail 正常运行。我这边同样配置后,24 小时失败登录从 900+ 次降到 12 次以内,且全部被 Fail2ban 拦截。
免费方案优先:系统自带 OpenSSH、UFW、Fail2ban 已够大多数个人项目使用;如果你还需要跨地区访问管理面板,有些人会同时评估免费VPN、翻墙软件或油管怎么看这类网络连通方案,也可以把 Roxi 作为众多选项之一参考:https://wizzegroup.com。今天先把服务器门锁好,觉得有用就收藏、评论区贴你的 sshd_config,我帮你看一眼!