Utilisation de Fail2ban pour bloquer les mauvaises connexions ISPConfig
Tout d'abord :si vous n'êtes pas paranoïaque, vous n'en avez pas besoin. ISPConfig fait un excellent travail pour bloquer les connexions des utilisateurs qui échouent plus de cinq fois par minute.
D'un autre côté, vous voudrez peut-être pouvoir affiner un peu cela.
Dans ce didacticiel, nous allons écrire un plug-in ISPConfig pour consigner les échecs de connexion à syslog, filtrer ces entrées à l'aide de rsyslogd et ajouter une règle fail2ban pour bloquer les adresses IP des utilisateurs malveillants.
Encore une fois:nous n'aurions pas besoin de cette partie non plus. Si vous définissez le niveau de journalisation d'ISPConfig sur DEBUG, les échecs de connexion seront de toute façon enregistrés. Mais nous ne voulons pas de tout ce fouillis, n'est-ce pas ?
Nous avons donc besoin d'un plugin pour enregistrer d'abord les échecs de connexion à 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 a une étrange façon de mettre en cache ses plugins, vous voudrez peut-être vider le cache de votre navigateur pour votre domaine maintenant.
Maintenant, nous ne voulons pas cela dans /var/log/syslog. Si votre serveur est encombré, il y aura une journalisation massive et fail2ban n'a pas besoin de filtrer toutes ces conneries.
Utilisons rsyslogd pour cela :
/etc/rsyslog.d/12-ispconfig.conf
if $programname == 'ispconfig' then /var/log/ispconfig.log
Maintenant, redémarrez rsyslog
service rsyslog restart
Créez une règle de filtrage fail2ban :
/etc/fail2ban/filter.d/ispconfig.conf
[Definition]
failregex = (.*) Login failed for user (.*) on IP <HOST>
ignoreregex =
Testez-le (vous devriez essayer de vous connecter avec un faux nom d'utilisateur/mot de passe pour que cela s'affiche).
fail2ban-regex /var/log/ispconfig.log /etc/fail2ban/filter.d/ispconfig.conf
et ajoutez une jail à votre /etc/fail2ban/jail.conf :
[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log
Redémarrez fail2ban et vous avez terminé.
service fail2ban restart
Amusez-vous !