GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo proteger SSH con Fail2Ban

Es imprescindible proteger su servidor de ataques de fuerza bruta. La pregunta es, ¿cómo exactamente? Por suerte para usted, Fail2Ban está a la vuelta de la esquina para proteger su servidor, pero la configuración predeterminada de Fail2Ban necesita algunos ajustes para una seguridad óptima. Sin embargo, no se preocupe, este tutorial lo tiene cubierto.

En este tutorial, aprenderá cómo configurar Fail2Ban y evitar ataques de fuerza bruta asegurando su servidor SSH.

¿Listo? ¡Siga leyendo para optimizar la seguridad de su servidor SSH!

Requisitos

Este tutorial comprende instrucciones paso a paso. Si desea seguir, asegúrese de tener lo siguiente en su lugar:

  • Servidores Ubuntu y Debian:este tutorial utiliza un servidor que ejecuta Ubuntu 18.04 LTS para configurar Fail2Ban y un servidor Debian 10 para probar las configuraciones de prohibición de Fail2Ban.
  • Acceso raíz o privilegios sudo en el servidor para ejecutar comandos como superusuario.
  • Fail2Ban instalado en un servidor Ubuntu o Debian.

Configuración de un cortafuegos base

Fail2Ban protege su servidor al monitorear los registros y prohibir las direcciones IP que realizan demasiados intentos de inicio de sesión dentro de un período de tiempo determinado. Pero primero, configurará un firewall base donde puede agregar reglas para bloquear actos maliciosos en su servidor.

1. Primero, ejecuta el service comando a continuación para detener Fail2Ban (fail2ban stop ) de correr. Detenga Fail2Ban cuando realice cambios en sus archivos de configuración para que pueda probar los cambios y asegurarse de que funcionan como se esperaba.

sudo service fail2ban stop

2. Ejecute el apt install comando para instalar Sendmail y IPTables-persistent . Sendmail es un programa que utiliza Fail2Ban para notificarle cuando prohíbe una dirección IP. Si bien IPTables-persistent es un programa que guarda los ajustes de configuración modificados en /etc/sysconfig/iptables expediente.

Tener estos programas instalados mantiene intacta la configuración de su firewall incluso si ocurre algo inesperado, como un corte de energía.

sudo apt install sendmail iptables-persistent -y

Ahora ejecuta cada iptables Comando a continuación para configurar su firewall. Estos comandos no generarán ningún resultado, pero agregarán cuatro reglas a su firewall. Estas reglas permiten o bloquean las conexiones a su servidor.

## First Rule - Accepts all traffic generated by the server (lo interface) 
sudo iptables -A INPUT -i lo -j ACCEPT
## Second Rule - Accepts all traffic that are part 
## of an established o related connection
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Third Rule - Allows SSH traffic on port 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Fourth Rule - Arops all other traffic
sudo iptables -A INPUT -j DROP

4. Ejecute el iptables Comando a continuación para ver un resumen de lo que ha configurado en su firewall.

sudo iptables -S

A continuación, se destacan las reglas que ha agregado en su firewall.

5. A continuación, ejecute los siguientes comandos para guardar sus reglas en /etc/sysconfig/iptables-config e inicie el servicio Fail2Ban. El iptables-config El archivo contiene todas sus reglas de firewall permanentes.

Fail2Ban agregará automáticamente algunas reglas a su firewall para proteger su servidor.

sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start

6. Finalmente, vuelva a ejecutar el iptables Comando a continuación para ver las reglas de su cortafuegos.

sudo iptables -S

A continuación, resaltadas en rojo, se muestran las nuevas reglas que Fail2Ban ha agregado a su firewall.

Ajuste de su configuración local de Fail2Ban

Ahora que tiene un firewall básico en ejecución, es hora de ajustar su archivo de configuración local de Fail2Ban para agregar más control sobre la seguridad de su servidor. Este tutorial utiliza /etc/fail2ban/jail.conf archivo de configuración ya que contiene todas las opciones necesarias para configurar los ajustes globales para la aplicación Fail2Ban.

Tal vez desee crear reglas personalizadas para su servidor SSH. Si es así, creará un nuevo jail.local archivo (basado en jail.conf file) y coloque las reglas específicas de SSH en jail.local expediente. Si lo hace, le permite anular la configuración en jail.conf archivo para su servidor.

1. Ejecute el awk Comando a continuación para realizar lo siguiente:

  • Imprime el contenido ('{ printf "# "; print; }' ) de los /etc/fail2ban/jail.conf archivo.
  • Cree un archivo llamado jail.local (basado en jail.conf archivo), que puede usarse para anular la configuración predeterminada en jail.conf archivo.
  • Transmitir el contenido del /etc/fail2ban/jail.conf archivo al tee dominio. Al hacerlo, se escribirá el jail.conf contenido del archivo a su sistema de archivos local (/etc/fail2ban/jail.local ).
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local

2. Una vez que haya creado el jail.local archivo, ejecute el ls comando a continuación. El comando enumera el contenido del directorio Fail2Ban de su servidor (/etc/fail2ban ) para verificar que su jail.local El archivo se genera correctamente.

ls /etc/fail2ban

Si ve el nuevo jail.local como se muestra a continuación, su archivo local se generó correctamente.

3. Abra el /etc/fail2ban/jail.local archivo en su editor de texto preferido y vaya a [ssh] sección.

Descomente el [sshd] y habilitado opciones eliminando el # símbolo delante de las opciones, como se muestra a continuación para habilitar SSH.

Desde este punto hasta el resto del tutorial, elimine el # símbolo delante de cualquiera de las secciones u opciones para habilitarlas.

4. Desplácese hacia abajo y descomente el [DEFAULT] sección que se muestra a continuación. Esta sección es donde configura los ajustes predeterminados para Fail2Ban. Cualquier configuración en esta sección se aplicará a todas las cárceles que administra Fail2Ban.

5. A continuación, desplácese hacia abajo hasta bantime y establece un bantime por 60 minutos. La hora del banquillo La opción establece la cantidad de tiempo, en minutos, que una dirección IP está bloqueada después de un intento fallido de inicio de sesión.

La configuración de tiempo de baneo predeterminada es de 600 segundos (10 minutos). Puede ajustar esta configuración a su gusto, pero es importante tener en cuenta que cuanto menor sea la configuración de bantime, más carga experimentará su servidor.

6. Navegue hasta findtime y reintento máximo opciones Mantenga el findtime tal cual (10m ) y baje el maxretry a 3 .

El tiempo de búsqueda La opción establece la cantidad de tiempo, en minutos, que una dirección IP puede fallar al iniciar sesión antes de que sea prohibida. Mientras que maxretry La opción establece el número de intentos de inicio de sesión fallidos antes de que se prohíba una dirección IP.

El tiempo de búsqueda predeterminado la configuración es de 10 minutos y maxretry son 5 minutos Como resultado, se prohibirá una dirección IP que no inicie sesión 5 veces en un período de 10 minutos.

7. Desplácese hacia abajo, descomente y configure el destemail , remitente y mta opciones:

  • destemail – Ingrese una dirección de correo electrónico donde Fail2Ban envía notificaciones.
  • remitente – Configure el campo “De” en el correo electrónico que Fail2Ban envía a destemail .
  • mta – Mantenga el valor predeterminado (sendmail ) como es. El mta La opción establece el agente de entrega de correo electrónico que utiliza Fail2Ban para enviar notificaciones.

8. Navegue a la acción opciones, como se muestra a continuación, y descomente el action_mwl opción. Si lo hace, Fail2Ban le enviará correos electrónicos de logwatch. Puede revisar los correos electrónicos de logwatch para investigar más a fondo cualquier posible problema de seguridad en su servidor.

Guarde los cambios y salga del editor de texto.

9. Ahora ejecuta los siguientes comandos para reiniciar tu fail2ban Servicio.

sudo service fail2ban stop
sudo service fail2ban start

10. Finalmente, ejecute el siguiente comando para verificar su fail2ban servicio status . sudo service fail2ban status Si el servicio Fail2Ban está funcionando, obtendrá un resultado como el que se muestra a continuación.

sudo service fail2ban status

Si el servicio Fail2Ban está funcionando, obtendrá un resultado como el que se muestra a continuación.

Probar sus configuraciones de prohibición

Acaba de configurar Fail2Ban, por lo que ahora es el momento de probar si las configuraciones de prohibición realmente funcionan. Intente varios inicios de sesión SSH fallidos en su servidor Fail2Ban desde un servidor secundario y vea si ese servidor secundario está prohibido.

1. Inicie sesión en su servidor secundario (Debian) y ejecute el siguiente comando para SSH en su servidor Fail2Ban.

Esta demostración utiliza un servidor Debian 10 con una IP de 134.122.20.103 a ssh al fail2ban servidor que tiene una IP de 69.28.83.134 .

ssh [email protected]

2. Ingrese una contraseña aleatoria cuando se le solicite y presione Entrar.

En el primer intento, el servidor Fail2Ban detendrá el intento de inicio de sesión SSH e imprimirá el Permiso denegado mensaje, como se muestra a continuación. Repita el intento de inicio de sesión SSH unas dos o tres veces más, y el servidor Fail2Ban eventualmente dejará de responder a su intento de inicio de sesión SSH.

En este punto, no obtendrá un Permiso denegado mensaje más que una pantalla en blanco. Obtener una pantalla en blanco indica que su segundo servidor (Debian) ha sido prohibido en el servidor Fail2Ban.

Pero quizás ya tenga una lista de direcciones IP para bloquear desde su servidor Fail2Ban. Si es así, abra el jail.local archivo y vaya a [DEFAULT] sección. Descomente el ignoreip y configure las direcciones IP para bloquear, como se muestra a continuación.

La dirección puede ser múltiples entradas IPv4 o IPv6 separadas, o separadas por comas.

3. En su servidor Fail2Ban (Ubuntu), vuelva a ejecutar el iptables Comando a continuación para ver las reglas de su cortafuegos.

sudo iptables -S

Observe a continuación que hay una nueva regla que rechaza los intentos de inicio de sesión SSH desde 134.122.20.103 Dirección IP.

También recibirá un correo electrónico de Fail2Ban, luego de una prohibición exitosa, con un archivo de registro adjunto si tiene configurado sendmail en su servidor Fail2Ban. La notificación por correo electrónico indica que Fail2Ban detuvo con éxito un ataque de fuerza bruta y salvó a su servidor de posibles daños.

Conclusión

A lo largo de este tutorial, ha aprendido a configurar Fail2Ban en un servidor Ubuntu. En este punto, debe estar bien equipado con el conocimiento para proteger su servidor SSH de ataques de fuerza bruta.

Ahora, ¿por qué no llevar este nuevo conocimiento a un nivel superior? ¿Quizás comenzar con el bloqueo de direcciones IP en todos los puertos con Fail2Ban en un host docker?


Linux
  1. Cómo usar Fail2ban para asegurar SSH en CentOS 7

  2. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  3. Proteja su servidor Linux con Fail2Ban [Guía para principiantes]

  4. Cómo proteger Apache y SSH con Fail2Ban en CentOS 8

  5. Cómo proteger su servidor Ubuntu con CSF Firewall

Cómo administrar de forma remota un servidor Linux con SSH

Cómo administrar de forma remota el servidor Ubuntu con SSH

Cómo configurar un servidor FTP seguro en Debian 10 con Pure-FTPd

Cómo configurar un servidor FTP seguro con Pure-FTPd en Ubuntu

Cómo SSH al servidor a través de Linux

Cómo bloquear su servidor CentOS con IPTables