Použití Fail2ban k blokování nesprávných přihlášení ISPConfig
Za prvé:pokud nejste paranoidní, tohle nepotřebujete. ISPConfig odvádí dobrou práci při blokování všech uživatelských přihlášení, která selžou více než pětkrát za minutu.
Na druhou stranu to MOŽNÁ budete chtít trochu doladit.
V tomto tutoriálu napíšeme plugin ISPConfig pro protokolování neúspěšných přihlášení do syslog, filtrování těchto záznamů pomocí rsyslogd a přidání pravidla fail2ban k blokování IP adres uživatelů se zlými úmysly.
Opět:ani tuto část bychom nepotřebovali. Pokud nastavíte Loglevel ISPConfig na DEBUG, neúspěšná přihlášení budou stejně zaprotokolována. Ale my nechceme všechen ten další nepořádek, že?
Potřebujeme tedy plugin pro protokolování neúspěšných přihlášení do syslogu:
~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 má zvláštní způsob ukládání zásuvných modulů do mezipaměti, takže možná budete chtít nyní vymazat mezipaměť prohlížeče pro vaši doménu.
Nyní to v /var/log/syslog nechceme. Pokud je váš server přeplněný, dojde k masivnímu protokolování a fail2ban nemusí všechny ty svinstva filtrovat.
K tomu použijeme rsyslogd:
/etc/rsyslog.d/12-ispconfig.conf
if $programname == 'ispconfig' then /var/log/ispconfig.log
Nyní restartujte rsyslog
service rsyslog restart
Vytvořte pravidlo filtru fail2ban:
/etc/fail2ban/filter.d/ispconfig.conf
[Definition]
failregex = (.*) Login failed for user (.*) on IP <HOST>
ignoreregex =
Otestujte to (aby se něco ukázalo, měli byste se zkusit přihlásit pomocí falešného uživatelského jména/hesla).
fail2ban-regex /var/log/ispconfig.log /etc/fail2ban/filter.d/ispconfig.conf
a přidejte vězení do svého /etc/fail2ban/jail.conf:
[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log
Restartujte fail2ban a máte hotovo.
service fail2ban restart
Bavte se!