En todo tipo de organización sin importar el tipo de información usada ni la cantidad de usuarios que pertenecen a ella, siempre como personal del área de sistemas o IT debemos velar porque la seguridad sea un factor primordial dentro de ella, mas cuando se gestionan uno o más servidores.
Cuando hablamos de servidores con distribuciones Linux, muchas veces pensamos que están exentos de ataques, pero en un mundo en línea que cambia frecuentemente ya no existe un sistema seguro y cualquier distribución está expuesta a ataques de malware, virus, ataques DDOS y muchos más. Como administradores o usuarios con acceso a los eventos y registros del servidor, es normal detectar intentos de inicio de sesión de fuerza bruta, inundaciones web, búsqueda de explotadores y demás amenazas que de una u otra forma pueden poner en riesgo la integridad y disponibilidad de la información.
Por ello, es necesario hacer uso de herramientas que nos provean las mejores opciones y alternativas de seguridad; y pensando en ello Solvetic explicará como usar Fail2ban para detectar y asegurar nuestros sistemas operativos Linux.
Por regla general, Fail2Ban es usado para actualizar las reglas del firewall con el fin de que este rechace las direcciones IP en un período de tiempo específico, pero también se puede configurar otra regla que pueda poner en riesgo la seguridad del sistema. Aunque Fail2Ban puede reducir la tasa de intentos de autenticación incorrectos dentro del sistema, es ideal que los métodos de autenticación no sean débiles. Para ello podemos configurar los servicios para que usen solo dos factores o mecanismos de autenticación público / privado para proteger así los servicios en Linux.
La única dependencia que necesitaremos para usar Fail2ban será Python, según la versión deseada será lo siguiente:
- Fail2ban branch 0.9.x: Python >=2.6 o Python >=3.2
- Fail2ban branch 0.8.x: Python >=2.4
- Netfilter/Iptables
- Shorewall
- TCP Wrapper
- Script de correo
- Ipset
La versión actual de Fail2ban es la 0.9.x la cual nos ofrece características como:
- Acciones basadas en Python.
- Soporte de base de datos.
- Análisis multilínea en filtros.
- Soporte de fecha y hora personalizado para filtros.
- Reconocimiento de zona horaria por defecto.
- Tiempo de espera en los comandos de prohibición.
- Conjunto de caracteres de reconocimiento en los archivos de registro.
- Soporte Python3 +
- Arquitectura cliente / servidor.
- Multi-hilo.
- Altamente configurable a través del uso de archivos de configuración divididos.
- Usa Netfilter / Iptables de forma predeterminada, pero también sera posible usar TCP Wrapper y muchos otros cortafuegos disponibles.
- Permite manejar múltiples servicios a la vez como sshd, apache, vsftp y más.
- Ejecuta comandos cuando se detecta un patrón para la misma dirección IP durante más de X veces para prohibir esa dirección.
1. Cómo instalar Fail2ban en Linux
Para instalar Fail2ban vamos a ejecutar los siguientes comandos en su orden:
yum update
yum install epel-release
Ingresamos la letra y para confirmar la descarga e instalación del repositorio EPEL.
Luego instalamos Fail2ban ejecutando:
yum install fail2ban
Luego de este análisis veremos que se instalaran todas las dependencias de Fail2ban. Aceptamos la descarga e instalación de Fail2ban.
En el caso de usar Debian o Ubuntu debemos ejecutar lo siguiente:
apt-get update && apt-get upgrade -y apt-get install fail2banDe forma opcional podemos habilitar el soporte de correo, para las notificaciones de correo, instalando sendmail de la siguiente manera:
yum install sendmail
apt-get install sendmail-bin sendmail
Después de esto, vamos a habilitar Fail2ban y Sendmail usando los siguientes comandos:
systemctl start fail2ban systemctl enable fail2ban systemctl start sendmail systemctl enable sendmail
2. Cómo configurar de Fail2ban en Linux
Por defecto, Fail2ban usa los archivos .conf ubicados en el directorio /etc/fail2ban/ ; a los cuales accede en primer lugar, pero estos pueden ser reemplazados por archivos .local ubicados en el mismo directorio.
Así, el archivo .local no necesita incluir todas las configuraciones del archivo .conf, sino solo las que deseamos implementar para la seguridad del sistema. Cada cambio debe hacerse en los archivos .local que no estén en .conf con el fin de evitar que se sobrescriban los cambios, al actualizar el paquete fail2ban.
Para esto vamos a copiar el archivo fail2ban.conf existente en fail2ban.local así:
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
Ahora será posible realizar los cambios en el archivo .local creado usando algún editor de texto, los valores que podemos editar son:
- CRITICAL
- ERROR
- WARNING
- NOTICE
- INFO
- DEBUG
- STDOUT: Salida de cualquier dato.
- STDERR: Genera cualquier error.
- SYSLOG: Registro basado en mensajes.
- File: Salida a un archivo
3. Cómo configurar Fail2ban jail.local en Linux
En Fail2ban, uno de los archivos más importantes es jail.conf, el cual define las cárceles o medidas de protección. Allí se deben definir los servicios para los cuales Fail2ban debe estar habilitado.
Vamos a crear un archivo jail.local para poder aplicar las modificaciones, para esto ejecutamos:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localAccedemos a este archivo local usando la siguiente sintaxis:
nano /etc/fail2ban/jail.localAllí ubicamos la línea backend y editamos el valor por defecto Auto a systemd:
El archivo jail.local habilitará SSH de forma predeterminada para Debian y Ubuntu, pero no en CentOS, de modo que si deseamos habilitar SSH vamos a agregar la línea enabled = true bajo [sshd]:
4. Cómo configurar los tiempos de prohibición y reintento en Fail2ban Linux
Con Fail2ban podemos configurar la forma en la cual se bloquea una dirección IP. Para ese propósito; para esto, Fail2ban hace uso de bantime, findtime y maxretry.
5. Cómo configurar direcciones IP de lista blanca en Fail2ban Linux
Es posible añadir direcciones IP en la lista blanca (permitidas) de Fail2ban. Para ello en el archivo jail.local debemos descomentar la siguiente línea:
ignoreip = 127.0.0.1/8 ::1Alli podemos ingresar las direcciones IP que deben ser ignoradas. Las direcciones IP deben estar separadas por espacios o comas.
6. Cómo crear alertas de correo en Fail2ban Linux
Esta opción es ideal si deseamos recibir alertas sobre cualquier cambio o novedad en los registros. Para ello debemos editar el archivo /etc/fail2ban/jail.local, las opciones son:
El mta predeterminado (agente de transferencia de correo) está configurado con sendmail.
Para recibir una notificación por correo, también será necesario cambiar la configuración de " Action " en la siguiente línea:
Action = %(action_)sPor la siguiente configuración:
action = %(action_mw)s action = %(action_mwl)s
% (action_mw) s
% (action_mwl) s
7. Configuraciones adicionales de Fail2ban Linux
Si se desea configurar una cárcel (jail), esta debe ser habilitada en el archivo jail.local. La sintaxis es la siguiente:
[jail] . . . enabled = truePodemos ver la estructura de la cárcel para SSHD. Automáticamente Fail2ban añade los parámetros adicionales.
También será posible habilitar el filtro mediante el cual se puede identificar si una línea en el registro es una falla. El valor del filtro es una referencia a un archivo con el nombre del servicio seguido de .conf. Por ejemplo podemos usar
/etc/fail2ban/filter.d/sshd.conf.La sintaxis a usar es:
filter = servicioA medida que añadamos cárceles, podemos usar el cliente de Fail2ban para ver cuales están activas en el servidor, para ello ejecutamos lo siguiente:
fail2ban-client statusAlli serán desplegadas a medida que creemos estas restricciones.
Podemos ver como Fail2ban es una utilidad práctica para aumentar la seguridad en las distribuciones de Linux evitando accesos no autorizados y todo lo relacionado con malas practicas que se ejecuten en la organización.