fail2ban -停止HTTP(S)路由滥用/暴力破解

・6 分钟阅读

最近 Laravel 在5.1发布了一个新特性 throttle身份验证 简单地增加一个特征到身份验证控制器。我很高兴看到这个framework添加到Laravel中,但是,我们的其他一些应用程序没有建立在Laravel上,比如,WordPress登录甚至一些开放的API等? 最终,我们试图简单地消除那些滥用HTTP/HTTPS路由或其他服务的东西(在这个例子中,暴力强制进入登录)。我们可以利用fail2ban在appliation/Nginx访问日志中为特定路由创建定制的过滤器,而不是/或添加代码,对于这个示例Apache 。

如果还没有安装fail2ban,则可以使用aptitude快速安装它:

sudo apt-get install -y fail2ban

你可以检查fail2ban是否正在运行:

sudo service fail2ban status

您还可以检查运行的"jails"/filter:

sudo fail2ban-client status

Fail2ban位于 /etc/fail2ban,在此文件夹中,你应该看到一个jail.conf,你也可能会看到一个jail.local ,jail.conf是fail2ban中使用的所有过滤器的主配置文件, jail.local是替代jail.conf中所有内容的配置,如果没有jail.local,应该将jail.conf复制到jail.local,并对本地文件进行任何添加/编辑,这将在将来升级fail2ban时减少任何问题。

首先,让我们创建新的定义,所有过滤器定义都位于filter.d目录中,我们需要在这个目录中创建一个新的过滤器。

sudo touch weblogin.conf

现在,我们可以在我们的选择编辑器中打开它:

sudo nano weblogin.conf

如果你打开apache访问日志,我们将设置一个过滤器,该过滤器将扫描apache访问日志,以便向/login.发送POST请求,/var/log/apache2/access.log 你将能够看到所有请求,并能够找到你想要扫描的请求。

例如:

10.1.1.1 - - [02/Sep/2015:11:27:56 -0400] "POST /login HTTP/1.1"

在你的auth.conf文件中,我们创建了我们的定义:


[Definition]
failregex = ^<HOST> .* "POST /login
ignoreregex =

现在我们已经创建了定义,我们需要指定日志路径,并启用过滤器,让我们回到/etc/fail2ban,并且打开jail.local文件。

sudo nano jail.local

我们将在文件末尾为我们创建的新定义添加一个新的jail 。


[weblogin]
enabled = true
filter = weblogin
action = iptables-multiport[name=NoAuthFailures, port="http,https"]
logpath = /var/log/apache2/access.log
banTime = 3600
findtime = 60
maxRetry = 20

新条目应与新定义conf文件的名称匹配(在本例中为weblogin.conf)。所以,我们说,如果在(1)分钟中有(20 )POST请求,我们将禁止用户访问http/https 1个小时。

  • -是否应打开或不打开过滤器,
  • filter -你放置在filters.d中的配置文件的名称
  • action -我们希望采取的操作,在这种情况下禁止用户使用http,https通信,
  • -我们希望fail2ban扫描的日志路径,在这种情况下,Apache日志,但是,这很可能是你的Nginx访问日志,
  • banTime -我们希望禁止用户使用(以秒为单位)的时间
  • findtime -我们希望fail2ban在日志中查看时间,看看是否应该禁止用户,(以秒为单位)
  • maxRetry -主机在触发筛选器之前可以进行尝试的次数,

配置完设置之后,我们需要做的就是重新启动fail2ban服务:

sudo service fail2ban restart

我们可以再次检查状态来检查服务是否正在运行

sudo fail2ban-client status

你很可能看到这个输出,你会看到你的监狱被列出,在本例中。


Status
|- Number of jail: 2
`- Jail list: weblogin, ssh

你可以测试过滤器以确保它正常工作,就个人而言,我将跟踪fail2ban日志: sudo tail -f /var/log/fail2ban.log ,一旦你触发了过滤器,你就会看到自己被禁止,然后最终被取消禁止。我通常用短的时间来测试过滤器,以确保我是正确的,: )


2015-09-03 22:19:12,215 fail2ban.actions: WARNING [weblogin] Ban 10.1.1.1
2015-09-03 22:20:12,321 fail2ban.actions: WARNING [weblogin] Unban 10.1.1.1

我们已经完成了一种非常简单的方法来保护特定的HTTP路由,在项目中不需要额外的代码,你可以看到,你可以将它应用到fail2ban可以扫描的任何日志文件。

Zhongy0410 profile image