在使用 CentOS 等 Linux 系统时,SSH 服务常常成为黑客攻击的目标,尤其是暴力破解攻击。暴力破解通常依赖于自动化工具对系统登录密码进行不断尝试,直到成功登录。以下是防止 SSH 暴力破解攻击的主要原因和方法

这是我登录服务器时显示 这段时间内共有37137次登录尝试失败

WX20250113-103837@2x-ipuxtwhb.png

为了防止 SSH 暴力破解攻击,可以采取多种措施来增强 CentOS 系统的安全性。下面是一些常见的防止 SSH 暴力破解的措施

更改 SSH 默认端口

修改 SSH 的默认端口(22)可以有效减少攻击者的扫描目标,降低被暴力破解的风险。

编辑 SSH 配置文件

sudo vi /etc/ssh/sshd_config

修改 Port 配置项,将端口改为不常见的端口,例如 2200

Port 2200

重新启动 SSH 服务

sudo systemctl restart sshd

配置防火墙允许新的端口

sudo firewall-cmd --zone=public --add-port=2200/tcp --permanent
sudo firewall-cmd --reload

禁用 Root 用户 SSH 登录

禁用 root 用户直接通过 SSH 登录,减少暴力破解攻击者直接获取管理员权限的风险

编辑 SSH 配置文件

sudo vi /etc/ssh/sshd_config

设置 PermitRootLoginno

PermitRootLogin no

重新启动 SSH 服务

sudo systemctl restart sshd

启用 SSH 密钥认证

使用 SSH 密钥认证来代替密码认证,是防止暴力破解的最有效手段之一

在本地机器上生成 SSH 密钥对(如果没有密钥对)

ssh-keygen

将公钥复制到远程服务器

ssh-copy-id <username>@<hostname>

编辑 SSH 配置文件禁用密码登录

sudo vi /etc/ssh/sshd_config

设置 PasswordAuthenticationno

PasswordAuthentication no

重新启动 SSH 服务

sudo systemctl restart sshd

安装并配置 Fail2Ban

Fail2Ban 可以帮助防止暴力破解,它会监控登录失败的次数,并封禁尝试暴力破解的 IP 地址。

安装 fail2ban

sudo yum install epel-release
sudo yum install fail2ban

设置开机自启

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

配置 fail2ban

编辑 /etc/fail2ban/jail.local 文件:

sudo vi /etc/fail2ban/jail.conf

[sshd] 配置部分,启用并配置参数:

[sshd]
enabled = true               # 启用此jail,表示启用针对SSH登录的监控和防护
port    = ssh                # 设置监听的端口为SSH默认端口 22
logpath = /var/log/auth.log   # 设置SSH登录日志的路径,用于Fail2Ban分析和判断是否触发封禁
maxretry = 5                 # 如果同一IP地址在短时间内登录失败超过5次,就会被封禁
bantime = 10m                # 设置封禁时间为10分钟,封禁该IP地址10分钟
findtime = 10m               # 在10分钟内发生超过最大失败次数(maxretry)的登录失败次数,将触发封禁

重新启动

sudo systemctl restart fail2ban

查看状态

sudo fail2ban-client status sshd

取消封禁

sudo fail2ban-client unbanip <IP地址>

总结

采取这些措施可以有效防止 SSH 暴力破解攻击,确保服务器的安全性。特别是禁用 root 登录、启用 SSH 密钥认证和安装 fail2ban 都是防御暴力破解的重要手段。通过定期审查系统日志和加强密码策略,可以进一步增强系统的防护能力。