wget -O fail2ban-1.1.0 https://github.com/fail2ban/fail2ban/archive/refs/tags/1.1.0.tar.gz
tar -xzvf fail2ban-1.1.0.tar.gz
cd fail2ban-1.1.0
或通过git下载:
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
确保系统已安装 Python(推荐 Python 3.6+)及开发工具:
# Debian/Ubuntu
sudo apt install python3 python3-dev python3-setuptools
# RHEL/CentOS
sudo dnf install python3 python3-devel
执行安装脚本
使用 Python 的 setup.py 进行安装:
sudo python3 setup.py install
验证安装
fail2ban-client --version
sudo cp build/fail2ban.service /etc/systemd/system/
如果启动失败,可以尝试修改模板内容,例如注释掉 Environment="PYTHONNOUSERSITE=1"
(设置环境变量,禁止Python加载用户本地安装的第三方库)
或 新建 vi /etc/systemd/system/fail2ban.service
插入:
[Unit]
Description=Fail2Ban Service
Documentation=man:fail2ban(1)
After=network.target iptables.service firewalld.service ip6tables.service ipset.service nftables.service
PartOf=iptables.service firewalld.service ip6tables.service ipset.service nftables.service
[Service]
Type=simple
# Environment="PYTHONNOUSERSITE=1"
ExecStartPre=/bin/mkdir -p /run/fail2ban
ExecStart=/usr/local/bin/fail2ban-server -xf start
# if should be logged in systemd journal, use following line or set logtarget to sysout in fail2ban.local
# ExecStart=/usr/local/bin/fail2ban-server -xf --logtarget=sysout start
ExecStop=/usr/local/bin/fail2ban-client stop
ExecReload=/usr/local/bin/fail2ban-client reload
PIDFile=/run/fail2ban/fail2ban.pid
Restart=on-failure
RestartPreventExitStatus=0 255
[Install]
WantedBy=multi-user.target
重载 systemd 并启动服务
sudo systemctl daemon-reload
sudo systemctl enable fail2ban.service
sudo systemctl start fail2ban.service
检查服务状态
sudo systemctl status fail2ban.service