fail2ban可在linux服务器上通过包管理器(debian/ubuntu用apt、rhel系用dnf+epel)或源码编译安装,并需配置jail.local启用sshd防护规则,最后验证日志、封禁列表及防火墙规则生效。

如果您希望在Linux服务器上部署Fail2Ban以阻止SSH等服务遭受暴力破解攻击,则需根据系统发行版选择对应安装方式并完成基础配置。以下是具体操作步骤:
一、基于Debian/Ubuntu系统的安装与启用
Debian及其衍生发行版(如Ubuntu)提供官方仓库中的fail2ban软件包,安装过程简洁且兼容性良好,适用于大多数生产环境。
1、更新本地软件包索引列表:
sudo apt update
2、安装fail2ban软件包:
sudo apt install fail2ban -y
3、启用并启动服务:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
4、验证服务运行状态:
sudo systemctl status fail2ban
二、基于RHEL/CentOS/Rocky Linux的安装与启用
RHEL系列系统默认未启用EPEL仓库,而fail2ban通常位于EPEL中,因此需先配置扩展源再安装,确保获取稳定版本。
1、安装EPEL仓库(以Rocky Linux 8为例):
sudo dnf install epel-release -y
2、安装fail2ban:
sudo dnf install fail2ban -y
3、启用并启动服务:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
4、检查服务是否处于活跃运行状态:
sudo systemctl is-active fail2ban
三、通过源码编译安装Fail2Ban
当系统仓库中fail2ban版本过旧或需自定义功能模块时,可采用源码编译方式安装,该方法对Python依赖及构建工具链有明确要求。
1、安装必要依赖:
sudo apt install python3-pip python3-setuptools build-essential -y(Debian/Ubuntu)
或
sudo dnf groupinstall "Development Tools" -y && sudo dnf install python3-pip python3-devel -y(RHEL系)
2、下载最新稳定版源码(以0.11.2为例):
wget https://github.com/fail2ban/fail2ban/archive/refs/tags/0.11.2.tar.gz
3、解压并进入源码目录:
tar -xzf 0.11.2.tar.gz
cd fail2ban-0.11.2
4、执行安装:
sudo python3 setup.py install
5、复制默认配置文件到/etc/fail2ban目录:
sudo cp -r files/debian-initd /etc/fail2ban/
sudo cp config/jail.conf /etc/fail2ban/
sudo cp config/fail2ban.conf /etc/fail2ban/
6、创建systemd服务单元文件(若不存在)并启用服务:
sudo cp files/systemd/fail2ban.service /lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
四、基础配置与SSH防护启用
Fail2Ban默认不启用任何过滤器,必须手动启用jail规则才能生效;SSH是首要防护目标,需确认sshd jail处于启用状态并匹配正确日志路径。
1、复制jail.local模板以避免覆盖升级时的默认配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2、编辑jail.local文件:
sudo nano /etc/fail2ban/jail.local
3、在[sshd]段落中确保以下参数存在且未被注释:
enabled = true
maxretry = 3
findtime = 600
bantime = 3600
4、确认sshd日志路径与系统实际一致(例如Ubuntu为/var/log/auth.log,CentOS为/var/log/secure):
logpath = /var/log/auth.log(Debian/Ubuntu)
或
logpath = /var/log/secure(RHEL/CentOS/Rocky)
5、重启fail2ban服务使配置生效:
sudo systemctl restart fail2ban
五、验证Fail2Ban是否正常拦截失败登录
Fail2Ban通过解析日志识别异常行为并调用iptables或nftables添加拒绝规则,可通过日志与命令行工具双重确认其工作状态。
1、查看fail2ban服务实时日志:
sudo journalctl -u fail2ban -f
2、检查当前被封禁的IP列表:
sudo fail2ban-client status sshd
3、手动触发一次失败SSH登录(如使用错误密码连接),等待数秒后再次执行上一步命令,观察IPTABLES链中是否新增条目及Banned IP list是否出现对应地址
4、确认底层防火墙规则已写入:
sudo iptables -L INPUT -n | grep f2b-sshd(iptables后端)
或
sudo nft list chain inet fail2ban filter_input | grep sshd(nftables后端)










