Configurar servidor VPS desde cero III: uso de fail2ban

Después de explicar la forma de utilizar rkhunter para aumentar la seguridad de nuestro vps, a continuación, veremos como hacer lo propio con Fail2ban

Fail2ban nos permite monitorizar los accesos desde las distintas ips a nuestro servidor y bloquear los ataques de fuerza bruta.

Índice()

    Instalación de fail2ban

    Debian

    En Debian, como es nuestro caso, es muy sencilla la instalación de fail2ban, tan solo hace falta teclear desde una ventana de terminal como root:

    apt-get install fail2ban
    

    Si queremos recibir alertas de fail2ban por correo electrónico, debemos instalar sendmail:

    apt-get install sendmail-bin sendmail 
    

    Fedora

    En caso de utilizar fedora, lo instalaremos de la siguiente manera:

    dnf install fail2ban
    

    Si queremos recibir alertas por correo, instalamos sendmail:

    dnf install sendmail
    

    Por último, iniciamos y activamos los servicios de fail2ban y sendmail:

    systemctl start fail2ban
    systemctl enable fail2ban
    systemctl start sendmail
    systemctl enable sendmail
    

    Ubuntu

    Si usamos la distro Ubuntu, instalaremos fail2ban de la siguiente manera:

    apt-get install fail2ban
    

    Si queremos recibir avisos por email, instalaremos sendmail:

    apt-get install sendmail
    

    Como funciona fail2ban

    Fail2ban monitoriza continuamente el fichero /var/log/auth.log, donde se registran todos los accesos a nuestro servidor.

    Si detecta un número de accesos fallidos a distintos puertos/servicios durante un determinado periodo de tiempo, procede a bloquear esa ip. El tiempo del bloqueo aplicado a esa ip puede ser configurada por nosotros, así como el número de intentos fallidos ejecutados. Por defecto, fail2ban permite un máximo de 3 intentos fallidos en los últimos 600 segundos.

    Como configurar fail2ban

    El fichero de configuración de fail2ban está en /etc/fail2ban/jail.conf. De todas maneras, es recomendable realizar una copia para poder modificar el fichero de configuración y adaptarlo a nuestras necesidades:

    cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    

    A partir de ahora, modificaremos solo el fichero /etc/fail2ban/jail.local, que será el que automáticamente leerá fail2ban, ignorando el /etc/fail2ban/jail.conf

    Por defecto, fail2ban está activo para el servicio ssh. Si queremos activarlo para otro tipo de servicios, deberemos editar el fichero /etc/fail2ban/jail.local

    [ssh]
    
    enabled  = true
    port     = ssh
    filter   = sshd
    logpath  = /var/log/auth.log
    maxretry = 6
    

    En cada servicio tenemos una serie de parámetros para poder configurarlo:

    ParámetroFunción
    enabledIndica si el filtro está activo o no.
    portPuerto utilizado por el servicio. En caso de utilizar el puerto por defecto podremos escribir su nombre en vez del número de puerto.
    filterEl nombre del fichero (sin la extensión .conf) situado en /etc/fail2ban/filter.d que contiene la expresión regular usada para filtrar el contenido del fichero de log.
    logpathLa ruta del fichero de log del servicio que queremos filtrar con fail2ban
    maxretryEste parámetro sobreescribe el parametro maxretry definido en jail.conf.

    A continuación veremos una serie de ejemplos de configuración útiles que nos pueden venir muy bien para nuestro servidor vps

    Añadir ip a la lista blanca

    Podemos añadir una lista de ips que serán ignoradas en el filtro del fail2ban. Esto nos será útil en caso de conectarnos desde una ip fija a nuestro servidor vps, evitando que nos bloquee fail2ban.

    Editamos el fichero /etc/fail2ban/jail.local, y en el parámetro ignoreip, añadimos nuestra ip (por ejemplo 1.1.1.1):

    nano /etc/fail2ban/jail.local
    
    [DEFAULT]
    
    # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
    # ban a host which matches an address in this list. Several addresses can be
    # defined using space separator.
    ignoreip = 127.0.0.1/8 1.1.1.1
    

    Configurar número de reintentos y tiempo de bloqueo

    Podremos modificar el tiempo que bloqueamos una ip, así como el número máximo de intentos fallidos de acceso a nuestro servidor, modificando los siguientes parámetros del fichero /etc/fail2ban/jail.local

    ParámetroFunciónValor por defecto
    bantimeDuración del tiempo en segundos por la que una ip es bloqueada. Si se indica un valor negativo, el bloqueo es permanente.600
    findtimeLa duración del tiempo el segundos entre intentos de acceso a nuestro servidor antes de ser bloqueada la ip. Si se define un valor de maxretry de 3 intentos, fail2ban bloqueara la ip si se producen 3 intentos fallidos en el tiempo especificado por findtime.
    600
    maxretryNúmero máximo de intentos de acceso al servidor desde la misma ip antes de bloquearla.3

    Recibir alertas de fail2ban por correo electrónico

    Si queremos recibir alertas por correo electrónico de fail2ban cuando proceda a bloquear un ip, debemos configurar los siguientes parámetros en el fichero /etc/fail2ban/jail.local

    ParámetroFunción
    destemailLa dirección de correo electrónico donde recibiremos las alertas de fail2ban.
    sendernameEl nombre del remitente del correo electrónico de las alertas de fail2ban.
    senderLa dirección de correo electrónico desde la que nos enviará las alertas fail2ban.

    Ademas, deberemos cambiar el parámetro action, ya que por defecto fail2ban esta configurado para realizar únicamente el bloqueo de la ip.

    ParámetroFunción
    %(action_)sFail2ban solo bloquea la ip
    %(action_mw)sFail2ban bloquea la ip, además de enviar por correo electrónico los datos de whois de la ip.
    %(action_mwl)sFail2ban bloquea la ip, envía los datos por correo electrónico de whois de la ip y las líneas del fichero de log asociadas al bloqueo.

    Filtro para wordpress

    Si para nuestra web usamos wordpress, podemos crear un filtro que monitorice los intentos de acceso al panel de control y bloquee las ips de robots que intentan un ataque de fuerza bruta.

    Accedemos al directorio de filtros /etc/fail2ban/filter.d:

    cd /etc/fail2ban/filter.d
    

    Creamos un fichero con el nombre wordpress.conf:

    nano wordpress.conf
    

    Y copiamos el contenido del filtro:

    # Fail2Ban filter for WordPress
    #
    #
    
    [Definition]
    
    failregex =  - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 -\d{4}\] "POST /wp-login.php HTTP/1.1" 200
    ignoreregex =
    

    Grabamos el fichero y editamos el fichero /etc/fail2ban/jail.local para añadir el nuevo filtro:

    [wordpress]
    enabled  = true
    filter   = wordpress
    logpath  = /var/www/miweb/log/access.log
    port     = 80,443
    

    Tenemos que modificar el parámetro logpath (marcado en negrita) e indicar la ruta del fichero access.log de nuestra web.

    En caso de tener mas de una web instalada, podemos modificar el parámetro logpath para incluir los ficheros de acceso de todas:

    [wordpress]
    enabled  = true
    filter   = wordpress
    logpath  = /var/www/miweb1/log/access.log
               /var/www/miweb2/log/access.log
               /var/www/miweb3/log/access.log
    port     = 80,443
    

    Grabamos el fichero y reiniciamos el servicio de fail2ban:

    /etc/init.d/fail2ban restart
    

    Uso de fail2ban-client

    A la hora de manejar fail2ban, podemos utilizar una utilidad incluida, fail2ban-client.

    De manera sencilla, podremos arrancar y parar el servicio, recargar la configuración, etc.
    El formato del comando es el siguiente:

    fail2ban-client COMANDO
    

    Donde el comando es uno de la siguiente lista:

    ComandoFuncion
    startInicia el servicio fail2ban
    reloadRecarga los ficheros de configuración de fail2ban
    reload JAILRecarga el fichero de configuración de una regla de bloqueo que se llama JAIL (tendremos que cambiar ese nombre)
    stopDetiene el servicio de fail2ban
    statusMuestra el estado actual de fail2ban, mostrando el listado de reglas de bloqueo activas
    status JAILMuestra el estado de la regla de bloqueo JAIL

    Podemos ver más información sobre los comandos de fail2ban-cliente en la Wiki de Fail2ban

    ¡Haz clic para puntuar esta entrada!
    (Votos: 0 Promedio: 0)

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir