防暴力破解:修改 SSH 默认端口与防扫描策略
服务器刚上线,SSH 日志里就刷满了 Failed password 记录?别慌,这是扫描器在试探你。主机选这篇 Linux 教程直接告诉你:改端口 + 防扫描,两步就能把暴力破解挡在门外。

为什么 SSH 默认端口 22 是靶子
端口 22 是 SSH 的默认入口,扫描器根本不用猜。你装完系统、开好防火墙,十分钟内就能看到来自全球的扫端口请求。老手都知道:不改端口,等于把钥匙插在门上还挂了块牌子。
扫描器怎么找你的服务器
扫描器先扫 0-65535 端口,发现 22 开放后,立刻用常见用户名(root、admin、test)配合弱密码字典开始爆破。一次扫描能同时攻击几千台机器,命中率再低也架不住量大。
改端口的核心逻辑
把 SSH 端口从 22 换成 10000 以上高位端口,扫描器要全端口扫描才能发现你。一台机器全端口扫描至少花几分钟,攻击者没那个耐心。这是防暴力破解最基础、最有效的一招。
修改 SSH 端口的具体操作步骤
下面的命令在 CentOS 7/8、Ubuntu 20.04/22.04、Debian 11/12 上都能跑。先备份配置文件,万一改坏了还能还原。
第一步:修改 sshd_config
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 备份,别问为什么
vi /etc/ssh/sshd_config
找到 `#Port 22` 这一行,去掉注释,把 22 改成你想要的端口。比如改成 23456:
Port 23456
注意:不要用 1-1024 的知名端口,容易被系统服务占用。建议用 20000-50000 之间的端口,比如 23456、34567。
第二步:放行防火墙新端口
改完配置后防火墙默认还拦着新端口,不放行就连不上。
CentOS/RHEL 7+ 使用 firewalld
firewall-cmd –permanent –add-port=23456/tcp
firewall-cmd –reload
Ubuntu/Debian 使用 ufw
ufw allow 23456/tcp
ufw reload
第三步:重启 SSH 服务并保留旧端口
重启 SSH 前,建议先保留 22 端口,万一新端口连不上还能回退。在 sshd_config 里添加两行:
Port 22
Port 23456
然后重启 SSH:
systemctl restart sshd
新开一个终端窗口,用新端口连接测试:
ssh -p 23456 root@你的服务器IP
能连上就关掉 22 端口,不能连上就检查防火墙和配置。
第四步:彻底关闭旧端口
确认新端口正常工作后,删除 sshd_config 里的 `Port 22` 那一行,再次重启 SSH:
systemctl restart sshd
同时从防火墙里移除 22 端口:
firewall-cmd –permanent –remove-port=22/tcp
firewall-cmd –reload
防暴力破解的辅助策略
改端口只是第一道门,防扫描策略才能让攻击者彻底放弃。
使用 fail2ban 自动封禁 IP
fail2ban 会监控 SSH 登录失败的日志,短时间内失败次数过多直接封 IP。
安装 fail2ban
yum install fail2ban -y # CentOS
apt install fail2ban -y # Ubuntu/Debian
配置 jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vi /etc/fail2ban/jail.local
找到 `[sshd]` 部分,修改:
[sshd]
enabled = true
port = 23456 # 改成你实际使用的端口
maxretry = 3 # 3次失败就封
bantime = 3600 # 封1小时
findtime = 600 # 10分钟内
启动 fail2ban:
systemctl start fail2ban
systemctl enable fail2ban
限制 root 直接登录
用普通用户登录后再 su 到 root,能绕过很多只扫 root 的脚本。
vi /etc/ssh/sshd_config
找到 PermitRootLogin,改为 no
PermitRootLogin no
然后重启 SSH:
systemctl restart sshd
使用密钥登录代替密码
密钥登录比密码安全一百倍,配合禁用密码登录,几乎不可能被暴力破解。
本地生成密钥对
ssh-keygen -t ed25519
将公钥上传到服务器
ssh-copy-id -p 23456 user@你的服务器IP
服务器上禁用密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshd
老鸟叮嘱:改端口后千万别犯的错
改端口后最坑的事:忘了加 `-p` 参数。很多人改完端口,直接 `ssh root@IP` 连不上,就开始怀疑人生。记住:新端口必须用 `-p` 指定。
另一个常见坑:在云服务商控制台的安全组里放行了新端口,但忘了放行服务器自身的防火墙。两个地方都要放,别漏了。
常见问题 FAQ
Linux SSH 连不上怎么办?
先检查端口号是否写对,再用 `telnet 你的IP 端口` 测试端口是否开放。如果 telnet 不通,检查防火墙和安全组。
VPS 防火墙端口放行后还是访问不了是什么原因?
检查两个地方:一是云服务商控制台的安全组/防火墙规则,放行了没有;二是服务器内部的 iptables/firewalld 规则。很多 VPS 默认两个防火墙都开着,只放一个没用。
Linux 小白可以直接用 root 账号操作吗?
可以,但不推荐。建议创建普通用户,用 sudo 提权。如果非要用 root,至少把端口改掉,禁用密码登录,用密钥登录。
BBR 开启后为什么速度没有明显提升?
BBR 对带宽延迟积高的场景(如跨国连接)效果明显,但如果是本地小水管,提升有限。先检查丢包率,丢包率低于 0.5% 时 BBR 作用不大。
修改 SSH 端口后,网站访问会不会受影响?
不会。SSH 端口只影响远程管理,和网站(80/443)完全无关。放心改。
fail2ban 封错了自己的 IP 怎么办?
用另一个 IP 登录服务器,执行 `fail2ban-client set sshd unbanip 你的IP` 解封。如果只有一个 IP,提前在配置里加白名单:`ignoreip = 你的IP`。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9515.html 商家投稿邮箱:zhujixuanblog@qq.com
