Linux服务器SSH安全加固与Fail2ban暴力破解防护实战

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/

(0)
小编小编
上一篇 9小时前
下一篇 9小时前

相关推荐