给云服务器穿上铠甲:UFW 防火墙与 SSH 安全加固实操
今日文章草稿(2026-10-24):云服务器 SSH 安全加固与 UFW 防火墙实操
标题:给云服务器穿上铠甲:UFW 防火墙与 SSH 安全加固实操
正文:
很多人的第一台云服务器上线没几天,就会发现系统日志里塞满了来自陌生 IP 的 SSH 爆破尝试——这是公网的常态:你的公网 IP 暴露在扫描器面前只是时间问题。与其被动祈祷,不如上线第一天就把安全基线做好:改 SSH 配置 + 打开主机防火墙,10 分钟就能大幅抬高攻击门槛。本文以 Ubuntu 24.04 为例,实操一遍。
一、先改 SSH:关掉攻击者最爱的三扇门
SSH 服务的默认配置对攻击者非常友好:22 端口、允许 root 密码登录、允许密码登录。我们逐个关掉。
-
改默认端口。打开
/etc/ssh/sshd_config,把Port 22改成一个不常用的高端口,比如Port 22222。这不是"隐藏式安全"的迷信,而是实实在在的降噪:绝大多数自动化爆破只扫 22 端口。 -
禁止 root 直接登录。设置
PermitRootLogin no。攻击者爆破的第一目标永远是 root,关掉它等于让一半字典失效。管理改用普通用户 + sudo。 -
关掉密码登录,改用密钥。在客户端生成密钥对(
ssh-keygen -t ed25519),把公钥写入服务器~/.ssh/authorized_keys,确认能免密登录后,把PasswordAuthentication设为no。密码再复杂也架不住撞库,密钥是数学上更难啃的骨头。
改完后执行 sudo systemctl restart ssh 生效。注意:操作时保持当前 SSH 会话不断开,另开一个终端验证新配置能正常登录,确认无误再退出旧会话,否则可能把自己锁在门外。
二、UFW 防火墙:默认拒绝 + 按需放行
Ubuntu 自带 UFW(Uncomplicated Firewall),是对 iptables 的简化封装,新手也能快速上手。核心思路只有一句话:默认全部拒绝,只放行你明确需要的。
先放行 SSH(一定要先做这一步,否则启用防火墙的瞬间就会把自己断开):
sudo ufw allow 22222/tcp # 换成你自己的 SSH 端口
然后设置默认策略并启用:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
启用时会提示可能中断 SSH 连接,确认已放行 SSH 端口后输入 y。之后按需放行服务端口,比如网站:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
用 sudo ufw status numbered 查看规则列表,用 sudo ufw delete <编号> 删除误加的规则。建议每加一条规则都马上验证服务是否可达,避免"关了防火墙服务也连不上"的乌龙。
三、给 SSH 再加一道限流:防暴力破解
即使换了端口,也可能有人扫到新端口继续爆破。UFW 自带限流规则可以限制单位时间内的连接数:
sudo ufw limit 22222/tcp
这条规则的意思是:同一 IP 在短时间内发起过多连接会被拒绝,正常登录不受影响。如果想更进一步,可以安装 fail2ban,它会分析日志、自动封禁频繁失败的 IP:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
fail2ban 默认就带 sshd 规则,开箱即用,用 sudo fail2ban-client status sshd 查看封禁情况。
四、上线检查清单
做完上面三步,对照这份清单逐项确认:
- [ ] SSH 已改高位端口,22 端口不再监听(
ss -tlnp | grep ssh验证) - [ ]
PermitRootLogin no,PasswordAuthentication no已生效 - [ ] 旧 SSH 会话不断开的情况下,新会话登录成功
- [ ] UFW 已启用,默认拒绝入站,
ufw status规则数与预期一致 - [ ] 业务端口(80/443 等)放行后从外部可正常访问
- [ ] 云厂商控制台的安全组同样做了最小化放行(主机防火墙和安全组是两道独立防线,都要收紧)
最后提醒一点:安全加固是持续动作。系统补丁要定期更新(sudo apt update && sudo apt upgrade),密钥不要外泄,多台服务器不要复用同一对密钥。今天的 10 分钟投入,换来的是之后每一天的安心。
(全文约 950 字,原创实操文)
- 点赞
- 收藏
- 关注作者
评论(0)