云服务器开启 22 端口后,安全上必须立刻做的事
【摘要】 云服务器开启 22 端口后,安全上必须立刻做的事一台新服务器只要带上公网 IP、放开 22 端口,上线几分钟内就会出现在僵尸网络的扫描列表里。默认配置 = 裸奔。下面按“先保命、再收敛、最后可观测”的顺序讲。一、先明确一个认知:22 端口不是“开了就行”SSH 是服务器最重要的入口,开启 22 端口意味着:全网机器人会持续扫你(Failed password for root from .....
云服务器开启 22 端口后,安全上必须立刻做的事
一台新服务器只要带上公网 IP、放开 22 端口,上线几分钟内就会出现在僵尸网络的扫描列表里。默认配置 = 裸奔。下面按“先保命、再收敛、最后可观测”的顺序讲。
一、先明确一个认知:22 端口不是“开了就行”
SSH 是服务器最重要的入口,开启 22 端口意味着:
- 全网机器人会持续扫你(
Failed password for root from ...会刷屏) - 风险不在“端口本身”,而在认证方式 + 暴露面 + 权限模型
安全目标只有三句话:
- 让攻击者连不上(网络层收敛)
- 连上也没法登(认证层加固)
- 登了也拿不到权限(权限层隔离)
二、改配置前:先留好“逃生通道”
千万别把自己锁外面,这是运维第一铁律。
- 保持当前 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-authenticator2. 硬件密钥 / 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)