如何避免SSH 暴力爆破?
美国、香港服务器
如何避免SSH 暴力爆破?
06-16 来源:
一、网络层拦截(第一道防线,最有效)
1. 云安全组 / 防火墙仅放行你固定公网 IP
绝对不要开放 SSH 0.0.0.0/0 全网
阿里云 / 腾讯云控制台安全组:
删除 22 端口 0.0.0.0/0 规则
新增规则:仅你的公网 IP、自定义 SSH 端口放行
系统防火墙示例(Ubuntu UFW)
bash
运行
# 关闭所有入站默认放行
ufw default deny incoming
ufw default allow outgoing
# 只允许你的IP访问SSH 22345(替换IP与端口)
ufw allow from 123.45.67.89/32 to any port 22345
# 放行网站端口
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
CentOS firewalld 同理,只添加本机 IP 富规则。
2. 修改 SSH 默认 22 端口,规避扫描器批量扫
编辑配置
bash
运行
vi /etc/ssh/sshd_config
ini
#Port 22
Port 22345 # 1024-65535高位端口任选
重启服务
bash
运行
systemctl restart sshd
操作前务必在防火墙 / 安全组放行新端口,防止断开连不上服务器。
二、SSH 服务端配置加固(限制登录行为)
bash
运行
vi /etc/ssh/sshd_config
写入完整防护配置:
ini
# 禁止root远程登录,黑客首要爆破账号
PermitRootLogin no
# 只允许你自己的运维账号登录,其他用户无法SSH
AllowUsers ubuntu
# 密码最多尝试3次直接断开
MaxAuthTries 3
# 登录输入密码超时1分钟,防止长时间暴力尝试
LoginGraceTime 60
# 空闲5分钟自动踢下线,防止账号挂着被劫持
ClientAliveInterval 60
ClientAliveCountMax 5
# 禁用DNS反向解析,加速连接并屏蔽扫描
UseDNS no
重启 sshd:
bash
运行
systemctl restart sshd
三、自动拉黑工具 Fail2ban(扫描到爆破 IP 自动封禁)
1. 安装启动
bash
运行
# Ubuntu
apt install fail2ban -y
# CentOS
yum install fail2ban -y
systemctl enable --now fail2ban
2. 自定义防护规则
bash
运行
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vi /etc/fail2ban/jail.local
修改核心参数:
ini
# 白名单本机IP,永不封禁
ignoreip = 127.0.0.1 123.45.67.89
# 10分钟统计周期
findtime = 600
# 失败5次封禁
maxretry = 5
# 封禁1小时
bantime = 3600
[sshd]
enabled = true
port = 22345 # 你的自定义SSH端口
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
3. 生效与查看封禁列表
bash
运行
systemctl restart fail2ban
# 查看当前封禁IP
fail2ban-client status sshd
四、登录失败自动锁定账号(PAM faillock,兜底防护)
连续输错密码直接锁定账号,就算换 IP 也无法登录该用户
bash
运行
vi /etc/pam.d/common-auth
文件顶部添加两行:
ini
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=3600
auth requisite pam_faillock.so authfail audit deny=5 unlock_time=3600
deny=5:输错 5 次锁定
unlock_time=3600:锁定 1 小时自动解锁
手动解锁被锁用户:
bash
运行
faillock --user ubuntu --reset
五、终极方案:彻底关闭密码登录,仅使用 SSH 密钥(无密码可爆破)
1. 本地生成密钥对(Xshell、MobaXterm、Windows 终端均可)
2. 上传公钥至服务器
bash
运行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ssh-rsa 你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. 关闭密码认证
sshd_config 修改:
ini
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
重启 sshd。
关闭密码登录后,不存在任何密码爆破的可能性,安全性拉满。
六、配套辅助防护
强密码策略
若必须保留密码登录,设置密码最小 16 位,大小写 + 数字 + 特殊符号,杜绝弱口令。
服务器安全狗 Linux 版
开启 SSH 暴力破解防护,自动拦截高频扫描 IP,可视化查看爆破日志。
定期巡检登录日志
bash
运行
# 查看爆破失败记录
grep "Failed password" /var/log/auth.log
# 查看陌生IP成功登录
grep "Accepted password" /var/log/auth.log
推荐落地组合(运维最优平衡)
安全组 / 防火墙仅放行自己固定 IP 访问 SSH 自定义端口
sshd 禁止 root 登录、限制指定用户、3 次密码尝试限制
部署 Fail2ban 自动拉黑攻击 IP
PAM 输错密码锁定账号
有条件直接关闭密码登录,纯密钥登录
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快