SSH暴力破解攻击现状与服务器安全风险分析
SSH暴力破解是Linux服务器面临的最常见攻击之一。攻击者通过自动化工具对22端口发起大量用户名密码组合尝试,一旦成功即可获得服务器控制权。公开互联网上的Linux服务器平均每天承受数百次至数千次SSH登录尝试,其中90%以上为自动化攻击脚本发起的字典式爆破。
SSH暴力破解的危害远不止账号被盗。攻击者成功入侵后通常执行挖矿程序、植入后门、横向渗透内网、将服务器加入僵尸网络发起DDoS攻击。部分攻击者在获取root权限后修改系统文件、植入Rootkit实现持久化驻留,清理难度极大。
服务器安全加固的纵深防御策略应包含:修改默认端口、禁用密码登录、限制登录来源、配置Fail2ban自动封禁、启用两步验证五个层面。
SSH服务配置加固与密钥认证部署
SSH服务的核心配置文件为/etc/ssh/sshd_config,以下为关键安全配置项:
# 修改默认端口(降低被扫描概率,不构成真正安全屏障)
Port 29722
# 禁用root直接登录
PermitRootLogin no
# 禁用密码认证,仅允许密钥登录
PasswordAuthentication no
PubkeyAuthentication yes
# 限制仅特定用户可SSH登录
AllowUsers deploy admin@10.0.0.0/8
# 禁用空密码
PermitEmptyPasswords no
# 设置登录超时(秒)
LoginGraceTime 30
# 限制最大认证尝试次数
MaxAuthTries 3
# 禁用不需要的认证方式
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no
# 仅允许SSH协议版本2
Protocol 2
密钥认证部署流程:在客户端生成ED25519密钥对(比RSA更安全且密钥更短),将公钥上传至服务器~/.ssh/authorized_keys,设置权限600。ED25519密钥生成命令:
ssh-keygen -t ed25519 -C "deploy@server" -f ~/.ssh/id_ed25519
Fail2ban安装配置与暴力破解自动封禁规则
Fail2ban通过监控SSH日志文件,识别频繁失败的登录尝试,自动调用iptables/nftables封禁攻击源IP。核心工作流程:解析日志 -> 匹配失败模式 -> 统计失败次数 -> 触发阈值后执行封禁动作。
安装与基础配置:
# CentOS/RHEL
yum install -y fail2ban fail2ban-firewalld
# Ubuntu/Debian
apt install -y fail2ban
# 创建本地配置(覆盖默认配置)
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.local中SSH防护配置:
[sshd]
enabled = true
port = 29722
filter = sshd
logpath = /var/log/secure
# 10分钟内3次失败即封禁
maxretry = 3
findtime = 600
# 封禁24小时
bantime = 86400
# 封禁动作使用firewalld
banaction = firewallcmd-rich-rules[actiontype=<multiport>]
生产环境建议调整bantime为更长周期(如1周),对反复攻击的IP设置递增封禁时长。Fail2ban支持bantime.increment配置实现递增封禁:
[DEFAULT]
bantime.increment = true
bantime.factor = 2
bantime.formula = ban.Time * math.exp(float(ban.Count+1)*ban.factor)/math.exp(1*ban.factor)
高级防护策略与入侵检测联动
密钥+Fail2ban组合已覆盖大部分场景,以下高级策略可进一步提升安全水位:
SSH两步验证:安装Google Authenticator PAM模块,登录时除密钥外还需输入动态验证码。配置/etc/pam.d/sshd添加auth required pam_google_authenticator.so,在sshd_config启用AuthenticationMethods publickey,keyboard-interactive。
端口敲门(Port Knocking):SSH端口默认关闭,只有按特定顺序访问预设端口序列后才临时开放。使用knockd实现,将SSH端口隐藏在敲门序列之后,极大降低被扫描概率。
日志监控与告警:将SSH日志接入ELK或Loki,配置告警规则对异常登录行为实时通知。关注以下异常模式:非工作时间成功登录、从未知IP成功登录、短时间多IP尝试同一账号。
# 查看Fail2ban封禁状态
fail2ban-client status sshd
# 手动解封IP
fail2ban-client set sshd unbanip 1.2.3.4
# 查看当前iptables封禁规则
iptables -L f2b-sshd -n -v
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-ssh-an-quan-jia-gu-yu-fail2ban-bao-li-po-jie/