# Fail2Ban jail configuration for diary-family Django application # 家庭日报系统 fail2ban 监狱配置 [diary-family] # 启用该监狱 enabled = true # 监狱名称和过滤器 filter = diary-family # 要监控的日志文件路径 # 如果使用syslog,可以设置为 /var/log/syslog 或 /var/log/messages # 如果使用文件日志,设置为 Django 项目的 auth.log 路径 logpath = /var/log/syslog /var/www/diary-family/logs/auth.log # 触发封禁前的最大失败次数 maxretry = 5 # 封禁时间(秒)- 默认1小时(3600秒) # 可以设置为: # - 3600 = 1小时 # - 86400 = 1天 # - 604800 = 1周 # - -1 = 永久封禁 bantime = 3600 # 检测时间窗口(秒)- 在多长时间内计算失败次数 # 例如:findtime = 600 表示在10分钟内失败 maxretry 次则封禁 findtime = 600 # 忽略的IP地址(白名单) # 可以添加本地网络、办公网络等不需要封禁的IP ignoreip = 127.0.0.1/8 ::1 # 192.168.1.0/24 # 本地网络示例 # 10.0.0.0/8 # 内网示例 # 使用的封禁动作 # 默认使用 iptables 封禁所有端口 # 可选动作: # - iptables-allports: 封禁所有端口 # - iptables-multiport: 封禁指定端口 # - nftables-allports: 使用 nftables 封禁 # - ufw: 使用 UFW 防火墙 # - cloudflare: 封禁 Cloudflare 上的IP banaction = iptables-allports # 发送邮件通知(可选) # 需要配置邮件服务器 # destemail = admin@example.com # sender = fail2ban@example.com # mta = sendmail # action = %(action_mwl)s # 发送邮件并记录日志 # 后端选择 # - auto: 自动选择(推荐) # - systemd: 使用 systemd journal # - polling: 轮询模式 backend = auto # 端口(用于 multiport 动作) port = 80,443,8000