fail2ban

作者: 挑战_bae7 | 来源:发表于2021-07-08 16:49 被阅读0次

    1.安装

    yum install fail2ban -y
    

    2.使用

    2.1 配置文件

    [root@proxy ~]# vim /etc/fail2ban/jail.conf 
    #忽略IP
    ignoreip = 127.0.0.1/8 192.168.120.7
    #名称 跟下面不重复
    [nginx-v2ray]
    enabled = true
    #检查端口
    port = 80
    # /etc/fail2ban/filter.d/nginx.conf  跟这个名字一样 如果自带无法满足 必须写正则匹配
    filter = nginx
    #监督日志内容
    logpath = /var/log/nginx/access.log
    #检查 匹配正则的次数
    maxretry = 2
    #多少时间内检查有效 单位 秒
    findtime = 60
    #检查到封锁多久
    bantime = 3600
    #iptables 规则 检测到添加iptables规则 
    action = iptables[name=HTTP_V2RAY, port=80, protocol=tcp]
    #白名单
    #ignoreip = 192.168.122.199 
    [ssh-ip]
    enabled = true
    port = ssh
    #sshd 自带的规则
    filter = sshd
    logpath = /var/log/secure
    maxretry = 3
    findtime = 60
    bantime = 3600
    action = iptables[name=ssh-ip, port=ssh, protocol=tcp]
    

    2.2 匹配规则

    [root@proxy ~]# cat /etc/fail2ban/filter.d/nginx.conf
    [Definition]
    #45.141.87.59 - - [06/Jul/2021:21:57:04 +0800] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr" 400 157 "-" "-" "-"
    failregex = <HOST> - - .* 400 157 .* "-"$
    #failregex = <HOST> - - .* 404 .* "-"$
    ignoreregex =
    

    2.3 启动检查

    systemctl start fail2ban 
    systemctl enable fail2ban 
    
    #检查 正则匹配情况
    [root@proxy ~]# fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx.conf
    Running tests
    =============
    
    Use   failregex filter file : nginx, basedir: /etc/fail2ban
    Use         log file : /var/log/nginx/access.log
    Use         encoding : UTF-8
    Results
    =======
    Failregex: 37 total
    |-  #) [# of hits] regular expression
    |   1) [37] <HOST> - - .* 400 157 .* "-"$
    `-
    Ignoreregex: 0 total
    Date template hits:
    |- [# of hits] date format
    |  [125] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
    `-
    Lines: 125 lines, 0 ignored, 37 matched, 88 missed
    [processed in 0.07 sec]
    Missed line(s): too many to print.  Use --print-all-missed to print all 88 lines
    
    #查看启动服务后匹配状态
    [root@proxy ~]# fail2ban-client status ssh-ip
    Status for the jail: ssh-ip
    |- Filter
    |  |- Currently failed: 0
    |  |- Total failed: 3
    |  `- File list:    /var/log/secure
    `- Actions
       |- Currently banned: 1
       |- Total banned: 1
       `- Banned IP list:   192.168.120.18
    
    #检查iptables规则
    [root@proxy ~]# iptables -nvL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
     1326  103K f2b-ssh-ip  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
        0     0 f2b-HTTP_V2RAY  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    
    Chain f2b-HTTP_V2RAY (1 references)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    
    Chain f2b-ssh-ip (1 references)
     pkts bytes target     prot opt in     out     source               destination         
        2   120 REJECT     all  --  *      *       192.168.120.18       0.0.0.0/0            reject-with icmp-port-unreachable
     1324  103K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    
    # 解禁一个特定IP    主要set 后面是上面编辑的名称
    [root@proxy ~]# fail2ban-client set ssh-ip unbanip 192.168.120.18
    1
    [root@proxy ~]# iptables -nvL
    Chain f2b-ssh-ip (1 references)
     pkts bytes target     prot opt in     out     source               destination         
     1449  112K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0   
    #手动添加黑名单IP
    [root@proxy ~]# fail2ban-client set ssh-ip banip 192.168.120.7
    1
    

    相关文章

      网友评论

          本文标题:fail2ban

          本文链接:https://www.haomeiwen.com/subject/vljtpltx.html