使用Fail2ban阻止错误的ISPConfig登录

使用Fail2ban来阻止错误的ISPConfig登录

首先:如果你不偏执,你不需要这个。 ISPConfig做一个很好的工作来阻止每分钟超过五次失败的用户登录。

另一方面,你可能想要微调这一点。

在本教程中,我们将编写一个ISPConfig插件来记录失败的登录到syslog,使用rsyslogd过滤这些条目,并添加一个fail2ban规则来阻止恶意用户的IP。

再次:我们也不需要这部分。 如果将ISPConfig的Loglevel设置为DEBUG,则无论如何都将记录失败的登录。 但是我们不想让所有其他的混乱,我们呢?

所以我们需要一个插件将失败的登录日志记录到syslog中:

〜ispconfig / interface / lib / plugins / login_fail2ban_plugin.inc.php

class login_fail2ban_plugin { 
var $plugin_name = 'login_fail2ban_plugin';
var $class_name = 'login_fail2ban_plugin';
function onLoad() {
global $app;
$app->plugin->registerEvent('login_failed',$this->plugin_name,'log_fail');
}
function log_fail($event_name,$data) {
openlog("ispconfig", LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_WARNING, "Login failed for user ".$_POST['username']." on IP ".$_SERVER['REMOTE_ADDR']);
}
}

ISPConfig有一种奇怪的方式缓存它的插件,所以你可能想要清除您的域的浏览器缓存现在。

现在,我们不希望在/ var / log / syslog中 。 如果您的服务器拥挤,则会出现大量日志记录,并且fail2ban不需要过滤所有垃圾。

我们来使用rsyslogd:

/etc/rsyslog.d/12-ispconfig.conf

if $programname == 'ispconfig' then /var/log/ispconfig.log

现在重新启动rsyslog

service rsyslog restart

创建一个fail2ban过滤器规则:

/etc/fail2ban/filter.d/ispconfig.conf

[Definition]
failregex = (.*) Login failed for user (.*) on IP <HOST>
ignoreregex =

测试它(您应该尝试使用虚假的用户名/密码登录,以显示任何内容)。

fail2ban-regex /var/log/ispconfig.log /etc/fail2ban/filter.d/ispconfig.conf

并为您的/etc/fail2ban/jail.conf添加一个监狱:

[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log

重新启动fail2ban,你完成了。

service fail2ban restart

玩的开心!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏