CentOS 7 部署Fail2Ban防护SSH暴力破解

admin 2025年3月21日10:03:47评论6 views字数 2671阅读8分54秒阅读模式

Fail2Ban 是一个通过动态分析日志文件来识别恶意 IP 的连续攻击行为,并自动触发防火墙规则进行封禁的工具。它支持多种服务的防护,包括但不限于:

SSH:防御暴力密码爆破攻击。

Apache/Nginx:防护 Web 目录扫描和 CC 攻击。

FTP(vsftpd/proftpd):阻止反复登录尝试。

SMTP/MySQL:保护邮件和数据库服务免受攻击。

本文以 SSH 防护为例,介绍如何在 CentOS 7 上安装、配置并使用 Fail2Ban 来增强服务器的安全性。

一、安装步骤

fail2ban依赖python运行,在centos7默认安装python2.7版本,如果没有或版本不适配,请提前安装python(最新版1.1.0要求python版本为3.5及以上)。

CentOS 7 部署Fail2Ban防护SSH暴力破解

方式一、使用 Yum 安装

1.安装 EPEL 库:

yum install epel-release -y

2.安装 Fail2Ban:

yum install fail2ban -y
CentOS 7 部署Fail2Ban防护SSH暴力破解
CentOS 7 部署Fail2Ban防护SSH暴力破解

3.启动并启用服务:

systemctl start fail2bansystemctl enable fail2ban
CentOS 7 部署Fail2Ban防护SSH暴力破解
CentOS 7 部署Fail2Ban防护SSH暴力破解

4.检查服务状态:

systemctl status fail2ban

5.获取帮助信息:

fail2ban-client -h

方式二、手动安装(可选)

如果希望从源码安装 Fail2Ban(yum和git安装版本相同,均为0.11.2),可以执行以下步骤:

1.克隆仓库:

git clone https://github.com/fail2ban/fail2ban.gitcd fail2banpython setup.py install
CentOS 7 部署Fail2Ban防护SSH暴力破解

2.配置 Systemd 服务:

系统init/service 脚本不会自动安装。要启用 fail2ban作为自动服务,只需将脚本从文件目录复制到/etc/init.d

cp build/fail2ban.service /etc/systemd/system/systemctl daemon-reload

3.验证安装版本:

fail2ban-client -V

CentOS 7 部署Fail2Ban防护SSH暴力破解

二、配置 SSHD 防护

jail.conf:这是 fail2ban 的主配置文件,包含了所有预定义的服务和规则。由于这个文件是由软件包管理器维护的,如果直接对其进行修改,那么在系统更新或软件包升级时,你的更改可能会被覆盖。

为了确保你的自定义配置不会因为软件包更新而丢失,建议使用以下两种方法之一进行配置。

方式一:使用 jail.local 文件

这是一个用户自定义的配置文件,优先级高于 jail.conf。  如果创建了这个文件,fail2ban 会先读取 jail.conf 中的配置,然后应用 jail.local 中的设置来覆盖或扩展它们。

1.复制默认配置文件:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

2.编辑 jail.local 文件,添加或修改以下部分以启用对 SSH 的防护:

[sshd]enabled = truelogpath = /var/log/securemaxretry = 3 #在3次失败尝试后封禁IPfindtime = 60 #在60s内触发规则bantime = 600 #封禁时间为600秒,默认单位为s, m - minutes, h - hours, d - days, w - weeks, mo - months, y - yearsbackend = systemdaction = firewallcmd-ipset[name=sshd, port="ssh", protocol=tcp] #默认为iptables,这里指定为firewallfailregex = ^.*Failed password for .* from <HOST> port d+ ssh2$ #正则匹配,实测不加无法正确匹配
CentOS 7 部署Fail2Ban防护SSH暴力破解

重启 Fail2Ban 使更改生效:

systemctl restart fail2ban

方式二:独立配置文件

jail.d/ 目录下的单独 .conf 文件.例如,可以创建一个名为 /etc/fail2ban/jail.d/sshd.conf 的文件,专门用于配置 SSH 服务的防护规则。

在jail.d下创建sshd.conf,并在配置文件中添加如下内容:

[sshd]enabled = truelogpath = /var/log/securemaxretry = 3 #在5次失败尝试后封禁IPfindtime = 60 #在60s内触发规则bantime = 600 #封禁时间为600秒,默认单位为s, m - minutes, h - hours, d - days, w - weeks, mo - months, y - yearsbackend = systemdaction = firewallcmd-ipset[name=sshd, port="ssh", protocol=tcp] #默认为iptables,这里指定为firewallfailregex = ^.*Failed password for .* from <HOST> port d+ ssh2$ #正则匹配,实测不加无法正确匹配
CentOS 7 部署Fail2Ban防护SSH暴力破解

重启 Fail2Ban 使更改生效:

systemctl restart fail2ban

测试规则

在进行任何更改之后,建议测试规则是否正确:

fail2ban-client -t
CentOS 7 部署Fail2Ban防护SSH暴力破解

三、测试与维护

触发封禁测试

故意输入错误密码3次后验证:

fail2ban-client status sshd
CentOS 7 部署Fail2Ban防护SSH暴力破解

解除 IP 封锁

如果需要解除某个 IP 地址的封锁,可以使用如下命令:

fail2ban-client set sshd unbanip 10.10.68.59

日志路径

Fail2Ban日志:

/var/log/fail2ban.log

防火墙拦截查看

fail2ban 默认使用iptables进行拦截,可使用以下命令查看具体信息:

iptables -L -n -v
CentOS 7 部署Fail2Ban防护SSH暴力破解

当切换firewall时,fail2ban使用firewalld的ipset模块,使用以下命令可查看具体信息:

ipset list
CentOS 7 部署Fail2Ban防护SSH暴力破解

四、常见问题:

centos默认安全日志在/var/log/secure,如果查看没有相关错误登录日志,则在sshd_config配置下启用以下配置并重启sshd服务

SyslogFacility AUTHPRIVLogLevel INFO
CentOS 7 部署Fail2Ban防护SSH暴力破解
参考链接:

https://github.com/fail2ban/fail2ban/blob/master/config/jail.conf

原文始发于微信公众号(网络个人修炼):CentOS 7 部署Fail2Ban防护SSH暴力破解

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月21日10:03:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CentOS 7 部署Fail2Ban防护SSH暴力破解https://cn-sec.com/archives/3866032.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息