fail2ban -停止HTTP(S)路由滥用/暴力破解
Zhongy0410
・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可以扫描的任何日志文件。