Fail2banを使用して誤ったISPConfigログインをブロックする
まず第一に、あなたがパラノイアでないなら、あなたはこれを必要としません。 ISPConfigは、1分間に5回以上失敗するユーザーログインをブロックするための優れた機能を果たします。
一方、これを少し微調整できるようにしたいと思うかもしれません。
このチュートリアルでは、失敗したログインをsyslogに記録し、rsyslogdを使用してそれらのエントリをフィルタリングし、fail2banルールを追加して悪意のあるユーザーのIPをブロックするISPConfigプラグインを作成します。
繰り返しますが、この部分も必要ありません。 ISPConfigのログレベルを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にjailを追加します:
[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log
fail2banを再起動すれば完了です。
service fail2ban restart
楽しんでください!