应部署Fail2ban监控日志并封禁IP、启用SSH密钥认证禁用密码登录、配置UFW限制访问源、修改SSH端口及隐藏版本信息。

如果您发现Linux服务器的SSH服务频繁遭受密码猜测攻击,则可能是由于缺乏有效的登录失败防护机制。以下是防止暴力破解SSH的具体操作步骤:
一、安装Fail2ban服务
Fail2ban是一款开源入侵防御工具,通过监控系统日志识别异常登录尝试,并自动将可疑IP加入防火墙黑名单。它依赖Python运行环境,需先确认基础依赖已就绪。
1、更新系统软件包索引:sudo apt update(Debian/Ubuntu)或 sudo yum update(CentOS 7)或 sudo dnf update(CentOS 8/RHEL 8+)。
2、安装Fail2ban主程序:sudo apt install fail2ban(Debian/Ubuntu)或 sudo yum install epel-release && sudo yum install fail2ban(CentOS 7)或 sudo dnf install fail2ban(CentOS 8/RHEL 8+)。
3、启用并启动服务:sudo systemctl enable fail2ban && sudo systemctl start fail2ban。
二、配置SSH防护规则
默认配置文件位于/etc/fail2ban/jail.conf,但直接修改该文件易在升级时被覆盖,应使用jail.local进行覆盖式配置。
1、复制默认配置生成本地配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local。
2、编辑本地配置文件:sudo nano /etc/fail2ban/jail.local。
3、在[sshd]节中取消注释并设置以下参数:enabled = true、maxretry = 3、bantime = 3600、findtime = 600。
4、保存退出后重启服务:sudo systemctl restart fail2ban。
三、启用SSH密钥认证并禁用密码登录
密钥认证可彻底规避密码暴力破解风险,其安全性远高于口令验证,且无需依赖第三方工具即可生效。
1、在客户端生成RSA密钥对:ssh-keygen -t rsa -b 4096,按提示保存至默认路径。
2、将公钥上传至服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip。
3、登录服务器后编辑SSH配置:sudo nano /etc/ssh/sshd_config。
4、修改以下两行:PasswordAuthentication no、PubkeyAuthentication yes。
5、重载SSH服务:sudo systemctl reload sshd(Ubuntu/Debian)或 sudo systemctl reload sshd(RHEL/CentOS)。
四、配置UFW防火墙限制SSH访问源
通过主机级防火墙限制允许连接SSH的IP范围,可大幅降低暴露面,尤其适用于固定办公网络或运维终端有静态IP的场景。
1、启用UFW防火墙:sudo ufw enable。
2、默认拒绝所有入站连接:sudo ufw default deny incoming。
3、仅放行指定IP段的SSH端口:sudo ufw allow from 192.168.1.0/24 to any port 22(替换为实际管理网段)。
4、若需保留本地回环访问,添加:sudo ufw allow from 127.0.0.1 to any port 22。
5、查看规则状态:sudo ufw status verbose。
五、修改SSH默认端口并隐藏版本信息
更改SSH监听端口可过滤掉大量自动化扫描流量;隐藏SSH服务版本号则减少攻击者对服务漏洞的精准识别能力。
1、编辑SSH主配置文件:sudo nano /etc/ssh/sshd_config。
2、修改端口号(例如改为2222):Port 2222。
3、关闭版本信息泄露:DebianBanner no。
4、保存后检查配置语法:sudo sshd -t。
5、重载SSH服务:sudo systemctl reload sshd。
6、同步更新UFW规则:sudo ufw allow 2222/tcp,并删除旧端口规则:sudo ufw delete allow 22。










