前言
fail2ban是一款安全保护工具,触发限制后会创建防火墙规则封锁IP,诸如对ssh暴力破解、ftp/http密码穷举等场景提供强有力的保护,主要作用概要为以下几点:
- 避免被穷举攻击(brute force)
- 查看验证失败的日志
- 自动创建防火墙规则封锁IP
- 支持多种服务
- 高度可定制
一、安装
1.软件源安装
|
发行版 |
安装命令 |
|
Arch |
pacman -Sy fail2ban/yay -Sy fail2ban |
|
CentOS/Redhat |
yum install -y fail2ban |
|
Debian |
apt-get install fail2ban |
2.源码安装
代码语言:shell
AI代码解释
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install
这会将fail2ban安装到python库目录中。可执行脚本放在 /usr/bin中,配置目录在/etc/fail2ban。
我的系统为CentOS7, 本以为这样就能轻松的完成安装了。
结果当我敲出:systemctl status fail2ban 时候显示并不存在该服务
问题一:fail2ban采用的为python3,而我的系统为默认的python2
解决方法:
安装依赖包
关于Python3.7以上的版本,需要多安装一个依赖包:
代码语言:javascript
AI代码解释
> yum install -y libffi-devel
否则会出现ModuleNotFoundError: No module named _ctypes的报错。
安装python 3.7.3
代码语言:javascript
AI代码解释
# 下载
> wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
# 解压
> tar -zxf Python-3.7.3.tgz
# 安装依赖包
> yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc libffi-devel
# 进入python目录
> cd Python-3.7.3
# 编译
> ./configure --prefix=/usr/local/python3.7
#安装
> make && make install
备份Python2版本
由于系统有些软件还是依赖Python2运行,所以不能删除Python2,需要对原来的python软连接指向python3
> ln -s /usr/local/python/bin/python3.7 /usr/bin/python
这里注意,你下载安装的python3路径可能是这样的。
> /usr/local/python3.7/bin/python3.7
并不是上面的那条路径,软链接最终指向应该为python安装路径bin目录下的python3.7可执行文件
查看Python版本
> python -V
更改yum配置
因为yum需要使用python2,将/usr/bin/python改为python3后,yum就不能正常运行了,因此需要更改一下yum的配置。
- 编辑这两个文件,将文件头的#!/usr/bin/python改为#!/usr/bin/python2
- > vim /usr/bin/yum
· > vim /usr/libexec/urlgrabber-ext-down
问题二:ln命令失效
在执行创建python软链接的时候,我多次敲命令发现无任何回显。测试单纯输入ln命令也没有任何回显,使用file命令查看ln文件情况显示为empty
- > file /usr/bin/ln
解决方案
方法 1:使用 yum 强制重装(即使“Nothing to do”)
sudo yum reinstall -y coreutils
如果还是报 Nothing to do,那是因为 yum 认为“已安装且无需更改”。我们需要先移除再重装,但注意:coreutils 是系统核心包,不能直接 yum remove(会连带删掉整个系统!)。
方法 2:手动下载 RPM 包并强制覆盖安装
1. 确认你的系统版本和架构:
cat /etc/redhat-release # 查看 CentOS/RHEL 版本
uname -m # 通常是 x86_64
2. 从官方镜像下载对应 coreutils RPM 包例如,如果你是 CentOS 7 x86_64:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/coreutils-8.22-24.el7.x86_64.rpm
3. 强制重新安装 RPM 包(不依赖 yum):
sudo rpm -Uvh --force --replacefiles coreutils-*.rpm
4. 验证是否恢复:
ls -l /bin/ln
/bin/ln --help # 应该有输出了
问题三:通过源代码安装的方式安装fail2ban,结果安装之后systemctl status fail2ban显示没这个服务
在执行了安装之后,其实已经完成好了安装步骤,通过查看源码目录的build文件夹确认是否存在fail2ban.service验证。
ls -l build/fail2ban.service
同时校验配置文件是否已存在
Ls /etc/fail2ban/
将 build/fail2ban.service 复制到 systemd 目录:
sudo cp build/fail2ban.service /etc/systemd/system/
创建运行目录(避免启动失败)
sudo mkdir -p /var/run/fail2ban
sudo chmod 755 /var/run/fail2ban
重载 systemd 并启动
sudo systemctl daemon-reload
sudo systemctl enable --now fail2ban