Linux怎么防止暴力破解SSH_Linux下Fail2ban安装与安全防护【指南】

应部署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 = truemaxretry = 3bantime = 3600findtime = 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 noPubkeyAuthentication 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