Debian10_Centos8_fail2ban
阅读原文时间:2023年07月12日阅读:2

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-11-7.

  • Debian-10 的 fail2ban 支持 ipv6。防火墙内核是 nft,缺省用 iptables/ip6tables 指令,也可以装 nftables 用 nft 指令。
  • CentOS-8 的 fail2ban 支持 IPv6. 防火墙内核用 nft,缺省用 firewall-cmd, nft, iptables/ip6tables 指令。
  • CentOS-7 的 fail2ban 还不支持 IPv6. 防火墙内核是 iptables,缺省用 firewall-cmd, iptables 指令。

安装配置 fail2ban (debian10)

  • apt install fail2ban

  • debian-10 安装后,默认就已经"激活" 并 "启动"

  • 创建 /etc/fail2ban/filter.d/nginx-MyRule.local (按需。如果你不需要,就不用创建)

    这是自定义的nginx访问的规则。

    目的是阻止网页的扫描,如果有大量访问"文件不存在的页面",就禁了他。

    [INCLUDES]

    #before = botsearch-common.conf

    [Init]

    Block is the actual non-found directories to block

    block = \/?(|||cgi-bin|mysqladmin)[^,]*

    These are just convenient definitions that assist the blocking of stuff that

    isn't installed

    webmail = roundcube|(ext)?mail|horde|(v-?)?webmail

    phpmyadmin = (typo3/|xampp/|admin/|)(pma|(php)?[Mm]y[Aa]dmin)

    wordpress = wp-(login|signup|admin).php

    [Definition]

    failregex = ^ - \S+ [] \"(GET|POST|HEAD) \/\S+ \S+\" (400|401|404) .+$
    ^ - \S+ [] \"(GET|POST|HEAD) \/ \S+\" 404 .+$

    ignoreregex =

    datepattern = {^LN-BEG}%%ExY(?P<_sep>[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s%%z)? ^[^[][({DATE})
    {^LN-BEG}

    Author: MyLocalRule

  • 创建 /etc/fail2ban/jail.local

    [sshd]
    enabled = true
    port = 22,2222
    #ignoreip=127.0.0.1/8 192.168.0.0/16
    ignoreip=127.0.0.1/8
    findtime=300

    一次ssh密码错产生3条匹配

    maxretry=10
    bantime=1800

    以下部分,按需。(不需要就整段不要)

    [nginx-MyRule]
    enabled = true
    port = http,https,10443
    logpath = %(nginx_access_log)s
    ignoreip = 127.0.0.1/8
    maxretry = 30
    findtime = 1200
    bantime = 14400

  • 重启 service fail2ban reload

  • fail2ban 启动后不会马上在iptables中创建规则。所以这时去看防火墙规则,是没有变化的。要等到需要deny时,才动态创建的。

  • 如果满足ban规则,因为 debian-10 默认是用 iptables/ip6tables 指令。

    • 默认用 multiport 动作。一条对应多个端口的规则分别加入iptables/ip6tables的INPUT,跳转到f2b-sshd。
    • ipv4, debian-10 会在 iptables 的 Chain f2b-sshd 中插入对应ipv4的deny规则。
    • ipv6, debian-10 会在 ip6tables 的 Chain f2b-sshd 中插入对应ipv6的deny规则。
    • 以上规则,最终会自动转换为 nft rule 执行。
      • 多端口的一条规则分别加入table ip(6) filter { chain INPUT { ... } }跳转f2b-sshd。
      • ipv4/ipv6的deny插入table ip(6) filter { chain f2b-sshd { ... } }

安装配置 fail2ban (centos-8)

  • dnf install fail2ban

  • 其他配置,和 debian-10 相同。

  • centos-8 安装后,没有"激活" 和 "启动", 所以需要手工激活/启动。

    systemctl enable fail2ban; systemctl start fail2ban

  • fail2ban 启动后不会在nft中创建规则。所以nft中看不到变化。要等到需要deny时,才会在nft中添加rule。

  • 如果满足ban规则,因为 centos-8 默认是用 nft 做防火墙。

    • 用 tcp dport 动作。一个端口插入一条deny规则。
    • ipv4/ipv6, centos-8 都会在 table inet firewalld { chain filter_IN_public_deny { ... } } 插入deny规则。
    • iptables/ip6tables 中 没有规则。

转载注明来源: 本文链接 来自osnosn的博客.

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章