Uso de Fail2ban para bloquear inicios de sesión incorrectos de ISPConfig
En primer lugar:si no eres paranoico, no necesitas esto. ISPConfig hace un buen trabajo al bloquear cualquier inicio de sesión de usuario que falle más de cinco veces por minuto.
Por otro lado, es posible que desee ajustar esto un poco.
En este tutorial, escribiremos un complemento ISPConfig para registrar los inicios de sesión fallidos en syslog, filtrar esas entradas usando rsyslogd y agregar una regla fail2ban para bloquear las direcciones IP de los usuarios maliciosos.
De nuevo:tampoco necesitaríamos esta parte. Si establece el nivel de registro de ISPConfig en DEBUG, los inicios de sesión fallidos se registrarán de todos modos. Pero no queremos todo ese otro desorden, ¿verdad?
Entonces, primero necesitamos un complemento para registrar los inicios de sesión fallidos en 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 tiene una forma extraña de almacenar en caché sus complementos, por lo que es posible que desee borrar el caché de su navegador para su dominio ahora.
Ahora, no queremos eso en /var/log/syslog. Si su servidor está abarrotado, habrá un registro masivo allí y fail2ban no necesita filtrar toda esa basura.
Usemos rsyslogd para eso:
/etc/rsyslog.d/12-ispconfig.conf
if $programname == 'ispconfig' then /var/log/ispconfig.log
Ahora reinicie rsyslog
service rsyslog restart
Cree una regla de filtro fail2ban:
/etc/fail2ban/filter.d/ispconfig.conf
[Definition]
failregex = (.*) Login failed for user (.*) on IP <HOST>
ignoreregex =
Pruébelo (debe intentar iniciar sesión con un nombre de usuario/contraseña falso para que esto muestre algo).
fail2ban-regex /var/log/ispconfig.log /etc/fail2ban/filter.d/ispconfig.conf
y agregue una cárcel a su /etc/fail2ban/jail.conf:
[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log
Reinicie fail2ban y listo.
service fail2ban restart
¡Diviértete!