什么是 Fail2Ban?

我们需要在我们网站中防止密码的暴利破解。Fail2Ban 是一个 Python 的应用来查看日志文件,使用的是正则表达式,同时还可以与Shorewall (或者 iptables)直接工作来来启用临时黑名单。当一定的密码破解规则被使用后,就可以使用上面的方法了。我们可以用这个来限制给定的 URL 来访问 Confluence 的登录界面的次数。

安装要求

  • 需要 Python 2.4 或者更新的版本。
  • 需要指定下面的特定文档,这意味着你的 Apache 实例需要登录你的 Confluence 才能访问一个已知的日志文件(logfile)。你需要按照下面的要求正确调整配置

如何设置

本列表是安装的核心部分:

  • 针对 RHEL 我们有 RPM 是可以按照的,请进入下载页面,同时你还可以下载源代码收手动进行安装。
  • 配置文件在 /etc/fail2ban
  • 在原始状态下,默认的配置文件在 .conf 文件(fail2ban.conf 和 jail.conf)。请不要对这个进行修改,如果你进行修改的话,将会导致升级的时候困难。
  • 在 .local 文件中对配置进行修改,这个将会与 .conf 文件中的配置进行合并。这个文件只会对你需要的修改部分进行修改,能够让你的维护更加容易和简单。
  • 过滤器(Filters)在 filter.d  中进行定义 — 在这里这里,你可以定义正则表达式,每个正则表达式进入自己的文件。
  • Actions 在 action.d 文件中定义 — 你可能不需要添加一个,但是你知道在那里进行定义的能够帮你更好的找到问题。
  • "jails" 是配置单元,这个配置单元用来指定一个进行检查的正则表达式,当线程达到数量后,更多的 actions 将会被启动,这个是在线程中配置的(例如,在 60 秒钟,超过 3 次的满足正则表达式条件的地址,将会被禁止访问 600 秒)
  • Jails 是在 jail.conf and jail.local 中定义的。不要忘记了为每一个都启动设置 — 这个有可能导致错误的启用,正确的却没有启用。

运行 Fail2Ban

  • 使用 /etc/init.d/fail2ban {start|stop|status} 来进行进程相关的操作
  • 使用 fail2ban-client -d 来导出当前的配置到 STDOUT。在你对问题进行查看的时候,这个就非常有帮助。
  • 请注意 CPU 的使用。尽管可能你使用了非常简单的正则表达式,也有可能会导致 CPU 的使用飙升,如果你的站点的访问量比较大的话。
  • 日志可以日志到 syslog 或者一个文件,你可以选择哪种方式更加适合你。

通用配置

jail.local

# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards. [DEFAULT] # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
# ignoreip = <space-separated list of IPs> # "bantime" is the number of seconds that a host is banned.
bantime = 600 # A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 60 # "maxretry" is the number of failures before a host get banned.
maxretry = 3 [ssh-iptables] enabled = false [apache-shorewall] enabled = true
filter = cac-login
action = shorewall
logpath = /var/log/httpd/confluence-access.log
bantime = 600
maxretry = 3
findtime = 60
backend = polling

Confluence 的配置

下面仅仅被用来作为示例,你需要根据你的站点调整。

filter.d/confluence-login.conf

[Definition]

failregex = <HOST>.*"GET /login.action

ignoreregex =

https://www.cwiki.us/display/CONF6ZH/Using+Fail2Ban+to+limit+login+attempts

Confluence 6 使用 Fail2Ban 来限制登录尝试的更多相关文章

  1. Spring Security笔记:登录尝试次数限制

    今天在前面一节的基础之上,再增加一点新内容,默认情况下Spring Security不会对登录错误的尝试次数做限制,也就是说允许暴力尝试,这显然不够安全,下面的内容将带着大家一起学习如何限制登录尝试次 ...

  2. login控件“您的登录尝试不成功。请重试”的解决方法

    原文:login控件"您的登录尝试不成功.请重试"的解决方法 遇到login控件“您的登录尝试不成功.请重试”报错之后,在网上找了很久,也按照如下帖子设置了 application ...

  3. asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件

    原文:asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功.请重试. Login控件 现象1.asp.net使用自定义sql server身份验证数据库,在A机器新增用户A,可以登录成 ...

  4. 给Django Admin添加验证码和多次登录尝试限制

    Django自带的Admin很好用,但是放到生产环境总还差了点什么= = 看看admin的介绍: Django奉行Python的内置电池哲学.它自带了一系列在Web开发中用于解决常见问题或需求的额外的 ...

  5. Confluence 6 基于 Confluence 数据中心的 SAML 单点登录

    安全申明标记语言(Security Assertion Markup Language (SAML))是一个基于 XML 的数据格式,允许各个软件平台通过identity provider (IdP) ...

  6. DenyHosts限制SSH登录尝试次数

    DenyHosts官方网站为:http://denyhosts.sourceforge.net 1. 安装 # tar -zxvf DenyHosts-2.6.tar.gz # cd DenyHost ...

  7. Shiro限制登录尝试次数

    /** * 认证信息.(身份验证) : Authentication 是用来验证用户身份 * * @param token * @return * @throws AuthenticationExce ...

  8. 使用Membership,您的登录尝试不成功。请重试"的解决方法

    提示信息是标准Login控件产生的,打开数据库,检查aspnet_Membership表,检查IsLockedOut字段的值是否为False, 如果为True,表示这个用户锁定了,把它改成False即 ...

  9. 14 Spring Boot Shiro限制登录尝试次数

随机推荐

  1. /*+ hint*/用法,该如何解决

    /*+ use_hash(b, a)*/用法SELECT /*+ use_hash(b, a)*/  1,  NVL(b.AgentWorkGroup, ' '),  ................ ...

  2. Simple Recurrent Unit,单循环单元

    SRU(Simple Recurrent Unit),单循环单元 src/nnet/nnet-recurrent.h 使用Tanh作为非线性单元 SRU不保留内部状态 训练时,每个训练序列以零向量开始 ...

  3. JVM栈和堆的详解

    一.基本了解 java的数据类型分为两种:基本类型和引用类型.基本类型的变量保存的是原始值,引用类型的变量保存的是引用值.引用值代表某个对象的引用,而不是对象本身,对象本身放在这个引用值所表示的地址的 ...

  4. s9.16作业,员工信息表

    转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下:id,name,age,phone,job1, ...

  5. 开源RPC Jupiter

    ref https://github.com/fengjiachun/doc/tree/master/netty https://budairenqin.iteye.com/ https://blog ...

  6. require/exports 与 import/export 的区别?

    文章作者:寸志链接:https://www.zhihu.com/question/56820346/answer/150724784来源:知乎 遵循的模块化规范不一样 模块化规范:即为 JavaScr ...

  7. Mybatis-利用resultMap 输出复杂pojo

    个:复杂的sql语句查询的数据集的字段和 pojo的字段不相同,需要用到resultMap做一个对应. ---------------- mybatis中使用resultMap完成高级输出结果映射. ...

  8. windows10+ubuntu16.04双系统搭建

    0 - 环境 操作系统: Windows 10 + Ubuntu 16.04 显卡: GTX 950M Cuda 9.0 cudnn v7.0 tensorflow-gpu==1.7.0 1 - ub ...

  9. android gradle tools 3.X中dependencies, implementation和compile区别

    在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加,但是有什么区别呢? api 指令 完全等同于compile指令 ...

  10. cartographer 最新版安装测试

    在官网的基础上稍加修改,但保证代码都是最新的 我的系统配置: Debian9 strech,  ROS lunar 该方法对 ubuntu 系列操作系统以及其他ROS版本同样适用. 1.  安装依赖库 ...