1. 首页 > 技术教程 > 正文

防暴力破解:修改 SSH 默认端口与防扫描策略

防暴力破解:修改 SSH 默认端口与防扫描策略

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

防暴力破解:修改 SSH 默认端口与防扫描策略的图片

为什么 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