fail2ban的功能和特性

https://fedoraproject.org/wiki/Fail2ban_with_FirewallD

1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
3、在logpath选项中支持通配符
4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
5、需要安装python,iptables,tcp-wrapper,shorewall,Gamin。如果想要发邮件,那必需安装postfix/sendmail

/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

1.下载,安装
wget https://github.com/fail2ban/fail2ban/archive/0.11.tar.gz -O fail2ban-0.11.tar.gz
tar -zvxf fail2ban-0.11.tar.gz && cd fail2ban-0.11
python setup.py install

2.修改配置文件
vim /etc/fail2ban/fail2ban.conf
修改以下内容
socket = /var/run/fail2ban.sock
pidfile = /var/run/fail2ban.pid
:wq 保存退出

3.自定义规则
vim /etc/fail2ban/jail.local
修改以下内容

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 3000
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure

[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
maxretry = 20
findtime = 60
bantime = 300
action = %(action_mwl)s
logpath = /opt/nginx/logs/access.log

:wq 保存退出

4.设置自动启动
[root@centos7 system]# vim /etc/systemd/system/fail2ban.service
修改以下内容

[Unit]
Description=Fail2Ban Service
Documentation=man:fail2ban(1)
After=network.target iptables.service firewalld.service
PartOf=firewalld.service

[Service]
Type=forking
ExecStart=/usr/bin/fail2ban-client -x start
ExecStop=/usr/bin/fail2ban-client stop
ExecReload=/usr/bin/fail2ban-client reload
PIDFile=/var/run/fail2ban.pid
Restart=always

[Install]
WantedBy=multi-user.target

:wq 保存退出

[root@centos7 system]# vim /etc/systemd/system/fail2ban.service
修改以下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =

:wq 保存退出

5.调试过滤器 (查看fail2ban过滤器是否适用于特定日志文件)

fail2ban-regex /opt/nginx/logs/access.log /etc/fail2ban/filter.d/nginx-cc.conf

如果,输出内容是零匹配,那么过滤器的正规表达式可能有问题。
-----------------------------------------------------------------------------------------------------------------------
[root@centos7 system]#cat /opt/nginx/logs/access.log
192.168.1.222 - - [26/Oct/2019:15:01:34 +0800] "GET / HTTP/1.1" 200 96 "-" "curl/7.29.0"
127.0.0.1 - - [26/Oct/2019:19:34:29 +0800] "GET / HTTP/1.1" 200 96 "-" "curl/7.29.0"
127.0.0.1 - - [26/Oct/2019:19:34:35 +0800] "GET / HTTP/1.1" 200 96 "-" "curl/7.29.0"
192.168.1.107 - - [26/Oct/2019:19:34:57 +0800] "GET / HTTP/1.1" 200 96 "-" "Mozilla/5.0 (Windows NT 10.0; Win6 4; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
192.168.1.107 - - [26/Oct/2019:19:34:57 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.1.221/" "Mo zilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537. 36"
192.168.1.107 - - [26/Oct/2019:19:37:56 +0800] "GET / HTTP/1.1" 200 96 "-" "curl/7.65.3"
192.168.1.107 - - [26/Oct/2019:19:38:25 +0800] "GET / HTTP/1.1" 200 96 "-" "fasthttp"
192.168.1.107 - - [26/Oct/2019:19:38:25 +0800] "GET / HTTP/1.1" 200 96 "-" "fasthttp"

正式则表达式匹配
# ^<HOST> - - .*HTTP/1.1.*$
# ^<HOST>.*$
# ^<HOST>.*Mozilla.*$
# ^<HOST>.*"fasthttp".*$
# failregex = ^<HOST>.*"curl/7.29.0".*$
# failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$
-----------------------------------------------------------------------------------------------------------------------

6. 设为允许默认启动
systemctl enable fail2ban
systemctl restart fail2ban && systemctl status fail2ban

7.查看版本,状态
fail2ban-client version
fail2ban-client status
fail2ban-client status sshd

8.查看当前触发规则,删除规则禁止IP (需要指定规则名称及IP,sshd,192.168.1.107)
ipset list
fail2ban-client set sshd unbanip 192.168.1.107

9.查看相关文件日志
tail -f /var/log/secure
tail -f /var/log/fail2ban.log
cat /var/spool/mail/root

10.查看防火墙
firewall-cmd --state
firewall-cmd --reload && iptables -L --line-numbers|grep ACCEPT
firewall-cmd --zone=public --list-ports
firewall-cmd --direct --get-all-rules
------------------------------------------------------------
添加规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.77 -j ACCEPT
## 只允许172.25.254.77通过80端口访问主机的http服务。
## 主机内核同意开启http服务,需要在表filter中设置INPUT。
##-p 数据包类型;--dport 服务端口;
------------------------------------------------------------

fail2ban的功能和特性(实测)的更多相关文章

  1. [SQL]SQL语言入门级教材_SQL功能与特性(一)

    SQL功能与特性 其实,在前面的文章中,已经提及SQL命令的一些基本功能.然而,通过 SQL命令,程序设计师或数据库管理员(DBA)可以: (一)建立数据库的表格.(包括设置表格所可以使用之空间) ( ...

  2. Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...

  3. 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性

    写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...

  4. Redis 7.0 新功能新特性总览

    说明:本文根据Redis 7 RC2 的release note 整理并翻译 近日,Redis 开源社区发布了7.0的两个预览版.在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令 ...

  5. css中定位功能的特性

    它有四大特性,页面找不到盒子的情况 1.z-index值表示谁压着谁,数值大的压盖数值小的 2.只有定位了的元素,才有z-index.也就是说,不管相对定位,绝对定位,固定定位,都可以使用z-inde ...

  6. 防暴力破解 Fail2Ban之python

    fai2ban的介绍 fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要 ...

  7. fail2ban的介绍

    fail2ban的介绍 http://www.jb51.net/article/48591.htm http://lilinji.blog.51cto.com/5441000/1784726 fail ...

  8. 实测Tengine开源的Dubbo功能

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 搜索关注微信公众号"捉虫大师",后端技术分享,架构设计.性能优化.源码阅读 ...

  9. MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)

    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...

随机推荐

  1. flutter 中的样式

    flutter 中的样式 样式 值 width 320.0 height 240.0 color Colors.white,Colors.grey[300] textAlign TextAlign.c ...

  2. 使用NSProxy和NSObject设计代理类的差异

    经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并 ...

  3. arduino入门笔记

    以 ARDUINO® UNO R3为例 一.将板子与电脑连接 初次使用会自动安装驱动. Arduino Uno通过USB连接到计算机或外部电源自动获取电源,因此此时能看到电源指示灯会亮. 我的L13也 ...

  4. Tic-Tac-Toe-(暴力模拟)

    https://ac.nowcoder.com/acm/contest/847/B #include<algorithm> #include<cstring> #include ...

  5. 简单双向链表的实现&新约瑟夫问题

    题目描述: 给定m个人,从s开始报数,数字顺加,报到n的人出列,然后数字顺减报到k的人出列,求出列顺序 样例输入: 8 1 3 2 样例输出: 3 6 1 5 2 8 4 7 分析: 约瑟夫问题主要就 ...

  6. 多目标跟踪MOT综述

    https://blog.csdn.net/u012435142/article/details/85255005 多目标跟踪MOT 1评价指标 https://www.cnblogs.com/YiX ...

  7. linux学习14 Linux运维高级系统应用-glob通配及IO重定向

    一.回顾 1.bash基础特性:命令补全,路径补全,命令引用 2.文件或目录的复制,移动及删除操作 3.变量:变量类型 存储格式,数据表示范围,参与运算 二.bash的基础特性 1.globbing: ...

  8. ent facebook 开源的golang orm 框架

    ent 是facebook 开源的golang orm 框架,简单强大,具有提下特性 schema 即代码 方便的图遍历 静态类型以及显示api 多种存储引擎支持(当前是mysql,sqlite,以及 ...

  9. 20101010 exam

    目录 2018 10.10 exam 解题报告 T1:LOJ #10078 新年好 题目描述(原题来自:CQOI 2005): 输入格式: 输出格式: 样例输入: 样例输出: 数据范围与提示: 思路: ...

  10. 某神奇的cf跳转插件

    // ==UserScript== // @name Codeforces快速跳转菜单 // @namespace http://tampermonkey.net/ // @version 2019. ...