云服务器开启 22 端口后,安全上必须立刻做的事

举报
yd_238049558 发表于 2026/10/30 00:34:49 2026/10/30
【摘要】 云服务器开启 22 端口后,安全上必须立刻做的事一台新服务器只要带上公网 IP、放开 22 端口,上线几分钟内就会出现在僵尸网络的扫描列表里。默认配置 = 裸奔。下面按“先保命、再收敛、最后可观测”的顺序讲。一、先明确一个认知:22 端口不是“开了就行”SSH 是服务器最重要的入口,开启 22 端口意味着:全网机器人会持续扫你(Failed password for root from .....

云服务器开启 22 端口后,安全上必须立刻做的事

一台新服务器只要带上公网 IP、放开 22 端口,上线几分钟内就会出现在僵尸网络的扫描列表里。
默认配置 = 裸奔。下面按“先保命、再收敛、最后可观测”的顺序讲。

一、先明确一个认知:22 端口不是“开了就行”

SSH 是服务器最重要的入口,开启 22 端口意味着:
  • 全网机器人会持续扫你(Failed password for root from ... 会刷屏)
  • 风险不在“端口本身”,而在认证方式 + 暴露面 + 权限模型
安全目标只有三句话:
  1. 让攻击者连不上(网络层收敛)
  2. 连上也没法登(认证层加固)
  3. 登了也拿不到权限(权限层隔离)

二、改配置前:先留好“逃生通道”

千万别把自己锁外面,这是运维第一铁律。
  • 保持当前 SSH 会话不断开
  • 另开一个终端测试新配置
  • 确认云厂商控制台/VNC/串行终端可用(紧急时救命)
  • 改前备份配置:
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)

三、认证层:最关键的保命三连

1. 禁用密码登录,只用密钥(优先级最高)

密码再复杂也扛不住暴力破解,密钥才是正解。
本地生成密钥(优先 ed25519):
ssh-keygen -t ed25519 -C "admin@myserver"
把公钥传上去:
ssh-copy-id user@服务器IP
服务端配置 /etc/ssh/sshd_config:
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
⚠️ 先确认密钥能登进去,再关密码,否则直接失联。

2. 禁止 root 直接远程登录

PermitRootLogin no
日常用普通用户登录,再 sudo 提权:
adduser deploy
usermod -aG sudo deploy
好处:
  • 即使普通账号被破,也没有直接超级权限
  • 所有提权行为有审计日志

3. 限制能登录的用户

AllowUsers deploy
或者更细:
AllowUsers deploy@你的办公IP
系统里其他账号(mysql、www、redis)默认不能 SSH 登录。

四、网络层:别把 22 对全网开放

1. 云安全组:优先限制来源 IP

这是最有效的一层(比改端口有用 10 倍)。
  • 安全组规则:22 端口仅允许公司/家宽固定 IP
  • 没有固定 IP → 用 VPN / 零信任组网(Tailscale、WireGuard、堡垒机)
示例(安全组入站):

端口
协议
来源
22
TCP
1.2.3.4/32
80
TCP
0.0.0.0/0
443
TCP
0.0.0.0/0

2. 系统防火墙再挡一层(纵深防御)

Ubuntu(UFW):
ufw default deny incoming
ufw default allow outgoing
ufw allow from 1.2.3.4 to any port 22 proto tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
CentOS(firewalld):
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="22" protocol="tcp" accept'
firewall-cmd --reload

3. 改端口只是“降噪”,不是安全

把 22 改成 2222 可以:
  • 减少 90% 自动化扫描日志
  • 让 auth.log 干净很多
但nmap 一秒扫出来,别把它当核心防护。
真要改:
Port 22222
记得:安全组 + 防火墙同步放行,再 reload。

五、暴力破解兜底:Fail2ban

密码关了其实已经不怕爆破,但 fail2ban 仍建议装:
  • 自动封掉异常 IP
  • 清理日志噪声
  • 作为“探测行为”的告警源
apt install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.local:
[sshd]
enabled = true
maxretry = 3
bantime = 86400
findtime = 600
systemctl enable --now fail2ban
fail2ban-client status sshd

六、会话与协议收敛

/etc/ssh/sshd_config 补充:
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 0

X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

LogLevel VERBOSE
含义:
  • 认证失败 3 次就断
  • 20 秒没认证直接踢
  • 闲置 5 分钟断线
  • 关掉不需要的转发能力
改完校验:
sshd -t
systemctl reload sshd

七、更高安全场景(生产/团队/合规)

1. 双因素认证(2FA)

密钥 + TOTP:
AuthenticationMethods publickey,keyboard-interactive
配合 libpam-google-authenticator

2. 硬件密钥 / SSH 证书

  • YubiKey / FIDO2(私钥不可导出)
  • SSH CA 证书(多机器运维,统一签发/吊销)
适合:
  • 多人团队
  • 服务器 > 10 台
  • 等保 / 金融 / 企业内网

3. 跳板机架构(推荐)

你 → 堡垒机(强加固) → 后端服务器(22 不暴露公网)
后端主机安全组:只放行跳板机 IP。

八、监控与应急:看不见 = 没安全

1. 看日志

Debian/Ubuntu:
journalctl -u ssh --since today
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn
CentOS:
/var/log/secure
关注:
  • 陌生 IP 高频失败
  • 非工作时间登录成功
  • 新公钥被写入 authorized_keys

2. 告警与审计

  • 登录成功/失败 → 钉钉/飞书/邮件
  • auditd 记录配置变更
  • 定期审计:
    cat ~/.ssh/authorized_keys
    last -a | head

3. 被入侵的应急动作

  • 立即改密钥 + 重置云控制台密码
  • 封禁可疑 IP
  • 排查 authorized_keys、cron、systemd timer、可疑进程
  • 保留日志,别急着删
  • 有快照先打快照再处理

九、系统层别漏了

SSH 再稳,系统烂也白搭:
  • 系统更新:
    apt update && apt upgrade -y
  • 开自动安全更新(unattended-upgrades)
  • 关掉不需要的服务(ss -tulnp 看监听端口)
  • 数据库/Redis/缓存端口绝不暴露公网
  • 开启 SELinux / AppArmor(别图省事关掉)

十、生产环境最小安全基线(直接抄)

Port 22222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
AllowUsers deploy
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 0
X11Forwarding no
AllowAgentForwarding no
AllowTcpForwarding no
LogLevel VERBOSE
网络层:
  • 安全组:22/22222 仅信任 IP
  • 系统防火墙:默认拒绝入站
  • fail2ban 开启
  • 云控制台 VNC 可用

十一、一句话总结

开 22 端口不可怕,可怕的是:
密码登录 + root 直登 + 全网开放 + 不改默认配置。
正确姿势是:
密钥登录 + 禁 root + 限 IP + 防火墙 + 日志监控 + 逃生通道
做到这几条,SSH 层基本能挡掉 99% 的自动化攻击。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。