软件 - fail2ban

  1. 简介
  2. 安装
  3. 配置
    1. ssh
    2. Nginx
  4. 参考

简介

filter规则目录:/etc/fail2ban/filter.d/

日志文件:/var/log/fail2ban.log

参数
action
banaction iptables-multiport,iptables-allports
banaction_allports iptables-allports
bantime 是主机被封禁的时间量,以秒为单位的整数或时间缩写格式(m - 分钟,h - 小时,d - 天,w - 周,mo - 月,y - 年) 10m
bantime.increment 允许使用数据库来搜索先前被禁止的IP地址,以使用特殊公式增加默认的禁止时间,默认情况下为 banTime * 1, 2, 4, 8, 16, 32…… true,false
bantime.rndtime 用于与随机时间混合的最大秒数,以防止“聪明”的僵尸网络计算出IP可以再次解禁的确切时间
bantime.maxtime 是禁止时间可以达到的最大秒数(不再增长)
bantime.factor 计算公式的指数增长系数或常规乘数,默认值为1,在默认公式的情况下,禁止时间增加为1、2、4、8、16
bantime.formula 默认用于计算下一个禁止时间值的公式
bantime.multipliers 1 5 30 60 300 720 1440 2880
bantime.overalljails (如果为true)指定将在整个监狱中执行IP地址的数据库搜索,如果为false(默认值),则仅在当前监狱中执行搜索 true,false
enable
findtime 如果主机在过去的 “findtime” 秒内生成了 “maxretry” 次失败,则会被封禁 10m
maxretry 主机在被封禁之前的失败次数
mode ddos, normal, aggressive
protocol tcp, udp, icmp, ipv6-icmp
port 0:65535
ignoreself 是否应忽略本地的 IP 地址 true
ignoreip 可以是一个 IP 地址、CIDR 子网掩码或 DNS 主机的列表。Fail2ban 不会封禁与此列表中的地址匹配的主机。可以使用空格(和/或逗号)分隔符定义多个地址。 127.0.0.1/8 ::1
backend 指定用于获取文件修改的后端 auto, polling, pyinotify, systemd
logpath
filter 定义了jail要使用的filter。默认情况下,jail的名称与其filter名称匹配
usedns yes, warn, no, raw

配置样例

[nginx]
enabled = true
port = http,https
filter = nginx
logpath = /var/log/nginx*/*access.log
action = iptables-multiport[name=404, port="http,https", protocol=tcp]
maxretry = 5
findtime = 30
bantime = 7200

安装

系统:Debian 12
内核:6.7.5

  1. 克隆仓库到本地

    git clone https://github.com/fail2ban/fail2ban.git && cd fail2ban
    
  2. 安装

    python3 setup.py install
    
  3. 复制文件到启动项

    cp files/debian-initd /etc/init.d/fail2ban
    
  4. 添加系统启动项

    update-rc.d fail2ban defaults
    
  5. 启动fail2ban

    systemctl start fail2ban.service
    
  6. 查看fail2ban状态

    systemctl status fail2ban.service
    

    fail2ban启动

配置

ssh

  1. 编辑/etc/fail2ban/jail.local,添加以下

    [sshd]
    enabled = true
    port = 22
    banaction = iptables-allports
    mode = aggressive
    maxretry = 1
    findtime = 10m
    bantime = 24h
    

    Debian 12有可能会出现以下报错

    Failed during configuration: Have not found any log file for sshd jail

    还需要安装python3-systemd和添加如下配置

    backend=systemd
    
  2. 查看规则生效情况

    fail2ban-client status sshd
    

    规则生效

Nginx

参考

Install fail2ban on your Linux distribution


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 cnlnnn@qq.com

文章标题:软件 - fail2ban

字数:690

本文作者:cnlnn

发布时间:2024-03-08, 01:16:00

最后更新:2024-10-06, 14:21:44

原始链接:https://cnlnn.pages.dev/posts/fail2ban/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。