fail2ban-client命令

fail2ban-client 命令 #

fail2ban-client是 Fail2ban 系统的命令行客户端工具,用于与 Fail2ban 服务器通信并管理其配置。Fail2ban 是一个入侵防御框架,通过监控日志文件并根据预定义的规则临时封禁可疑 IP 地址,可以有效防止暴力破解和其他恶意活动。

语法 #

fail2ban-client [选项] <命令>

常用选项 #

选项 描述
-c 配置目录 指定配置目录
-s 套接字路径 指定套接字路径
-d 调试模式
-v 详细输出
-q 安静模式
-x 强制执行,不询问确认
-i 交互模式
-h, --help 显示帮助信息
--version 显示版本信息
--str2sec 时间字符串 将时间字符串转换为秒
--timeout 秒数 设置超时时间

常用命令 #

服务器管理 #

命令 描述
start 启动服务器
restart 重启服务器
reload 重新加载配置
stop 停止服务器
status 显示状态
ping 测试服务器是否运行

监狱(Jail)管理 #

命令 描述
add <监狱> 创建监狱
delete <监狱> 删除监狱
start <监狱> 启动监狱
stop <监狱> 停止监狱
status <监狱> 显示监狱状态
reload <监狱> 重新加载监狱配置

封禁管理 #

命令 描述
set <监狱> banip <IP> 封禁 IP 地址
set <监狱> unbanip <IP> 解封 IP 地址
set <监狱> bantime <秒数> 设置封禁时间
set <监狱> findtime <秒数> 设置查找时间
set <监狱> maxretry <次数> 设置最大重试次数
get <监狱> banned 获取已封禁的 IP 列表
get <监狱> bantime 获取封禁时间
get <监狱> findtime 获取查找时间
get <监狱> maxretry 获取最大重试次数

日志和过滤器管理 #

命令 描述
get <监狱> logpath 获取日志路径
set <监狱> logpath <路径> 设置日志路径
get <监狱> logencoding 获取日志编码
set <监狱> logencoding <编码> 设置日志编码
get <监狱> failregex 获取失败正则表达式
set <监狱> failregex <正则表达式> 设置失败正则表达式
get <监狱> ignoreregex 获取忽略正则表达式
set <监狱> ignoreregex <正则表达式> 设置忽略正则表达式

动作管理 #

命令 描述
get <监狱> actions 获取监狱的动作列表
get <监狱> action <动作> 获取动作的详细信息
set <监狱> addaction <动作> 添加动作
set <监狱> delaction <动作> 删除动作

常见用法 #

基本操作 #

1. 检查 Fail2ban 状态 #

fail2ban-client status

2. 检查特定监狱的状态 #

fail2ban-client status sshd

3. 重新加载配置 #

fail2ban-client reload

4. 重新加载特定监狱 #

fail2ban-client reload sshd

5. 停止 Fail2ban #

fail2ban-client stop

6. 启动 Fail2ban #

fail2ban-client start

监狱管理 #

1. 列出所有监狱 #

fail2ban-client status

2. 获取监狱详细信息 #

fail2ban-client status sshd

3. 启动特定监狱 #

fail2ban-client start sshd

4. 停止特定监狱 #

fail2ban-client stop sshd

封禁管理 #

1. 手动封禁 IP 地址 #

fail2ban-client set sshd banip 192.168.1.100

2. 解封 IP 地址 #

fail2ban-client set sshd unbanip 192.168.1.100

3. 查看已封禁的 IP 地址 #

fail2ban-client status sshd

4. 设置封禁时间 #

fail2ban-client set sshd bantime 3600

5. 设置查找时间 #

fail2ban-client set sshd findtime 600

6. 设置最大重试次数 #

fail2ban-client set sshd maxretry 5

日志和过滤器管理 #

1. 获取日志路径 #

fail2ban-client get sshd logpath

2. 设置日志路径 #

fail2ban-client set sshd logpath /var/log/auth.log

3. 获取失败正则表达式 #

fail2ban-client get sshd failregex

4. 测试过滤器 #

fail2ban-client -d

然后在交互模式中:

set sshd addlogpath /var/log/auth.log
get sshd failregex
get sshd logpath
status sshd

动作管理 #

1. 获取监狱的动作列表 #

fail2ban-client get sshd actions

2. 添加动作 #

fail2ban-client set sshd addaction custom-action

3. 删除动作 #

fail2ban-client set sshd delaction custom-action

高级用法 #

1. 创建自定义监狱 #

首先创建配置文件/etc/fail2ban/jail.d/custom.conf

[custom-jail]
enabled = true
filter = custom-filter
logpath = /var/log/custom.log
maxretry = 3
bantime = 3600
findtime = 600
action = iptables-multiport[name=custom, port="http,https"]

然后创建过滤器文件/etc/fail2ban/filter.d/custom-filter.conf

[Definition]
failregex = Authentication failure for .* from <HOST>
ignoreregex =

最后重新加载配置:

fail2ban-client reload

2. 使用自定义动作 #

创建动作文件/etc/fail2ban/action.d/custom-action.conf

[Definition]
actionstart = echo "Custom action started" >> /var/log/fail2ban-custom.log
actionstop = echo "Custom action stopped" >> /var/log/fail2ban-custom.log
actioncheck =
actionban = echo "Banned IP: <ip>" >> /var/log/fail2ban-custom.log
actionunban = echo "Unbanned IP: <ip>" >> /var/log/fail2ban-custom.log

[Init]

然后在监狱配置中使用此动作:

[sshd]
action = iptables-multiport
         custom-action

3. 使用数据库后端 #

编辑/etc/fail2ban/jail.local

[DEFAULT]
dbfile = /var/lib/fail2ban/fail2ban.sqlite3
dbpurgeage = 1d

4. 配置邮件通知 #

编辑/etc/fail2ban/jail.local

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

5. 使用多个日志文件 #

[sshd]
logpath = /var/log/auth.log
          /var/log/secure

6. 忽略特定 IP 地址 #

编辑/etc/fail2ban/jail.local

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24

配置文件 #

Fail2ban 的主要配置文件和目录:

  • /etc/fail2ban/fail2ban.conf:主配置文件
  • /etc/fail2ban/jail.conf:默认监狱配置
  • /etc/fail2ban/jail.local:本地监狱配置(覆盖默认配置)
  • /etc/fail2ban/jail.d/:监狱配置目录
  • /etc/fail2ban/filter.d/:过滤器配置目录
  • /etc/fail2ban/action.d/:动作配置目录
  • /var/log/fail2ban.log:Fail2ban 日志文件

监控和日志 #

1. 查看 Fail2ban 日志 #

tail -f /var/log/fail2ban.log

2. 使用 journalctl 查看日志 #

journalctl -u fail2ban

3. 检查防火墙规则 #

iptables -L -n

常见问题排查 #

1. 服务未运行 #

systemctl status fail2ban

如果服务未运行,启动它:

systemctl start fail2ban

2. 配置错误 #

检查配置语法:

fail2ban-client -d

3. 监狱未启用 #

确保监狱配置中有enabled = true

4. 正则表达式问题 #

测试正则表达式:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

5. 防火墙问题 #

确保防火墙已启用并且 Fail2ban 可以添加规则:

iptables -L -n | grep fail2ban

提示 #

  • 在修改配置前备份原始配置文件
  • 使用jail.local而不是直接修改jail.conf
  • 定期检查 Fail2ban 日志以监控活动
  • 为重要服务设置合理的封禁时间和重试次数
  • 使用ignoreip参数避免封禁可信 IP 地址
  • 结合其他安全措施(如强密码策略、SSH 密钥认证)使用 Fail2ban
  • 考虑使用持久化动作,以便在 Fail2ban 重启后保持封禁
  • 对于高流量服务器,调整findtimemaxretry以避免误封
  • 使用fail2ban-regex工具测试过滤器配置
  • 定期更新 Fail2ban 以获取最新的安全修复和功能