Cómo configurar un Tarpit sin fin en Ubuntu 22.04

El autor seleccionó el Fondo de Código Libre y Abierto para recibir una donación como parte del programa Write for DOnations .

Introducción

Cuando miras los registros de autenticación, es posible que veas varios intentos de inicio de sesión fallidos desde varias direcciones IP. Estos intentos de inicio de sesión fallidos a menudo provienen de un nodo en una botnet que escanea toda la web en busca de servidores vulnerables con credenciales predeterminadas. Si bien la mayoría de las personas tendrán una contraseña segura o claves SSH que impidan que los atacantes inicien sesión en su servidor, algunos servidores serán vulnerables a este escaneo. Aunque es posible que no puedas detener estos ataques, puedes ralentizarlos con tarpits .

En este tutorial, instalará y configurará Endlessh , un tarpit que envía lentamente un banner infinitamente largo a cualquier usuario que intente iniciar sesión. También configurará el servicio SSH para que se ejecute en un puerto diferente, lo que hará que sus registros de autenticación sean más legibles.

Después de completar este tutorial, podrá conectarse a su servidor en un puerto no estándar, mientras que cualquier bot que escanee su servidor descubrirá que pierde el tiempo tocando una puerta que nunca se abrirá.

Prerrequisitos

Para completar este tutorial, necesitará lo siguiente:

  • Un servidor Ubuntu con un usuario sudo no root, un firewall y al menos 1 GB de RAM, que puede configurar siguiendo la Configuración inicial del servidor con Ubuntu 22.04 .
  • Git instalado en tu servidor, lo cual puedes completar con el tutorial de instalación de Git .

Paso 1: mover SSH a un puerto no estándar

En este paso, moverás SSH a un puerto no estándar para liberar un puerto para Endlessh. Debido a que las redes de bots no tienen recursos ilimitados, normalmente escanean solo el puerto SSH predeterminado ( 22). Al mover tu SSH a un puerto no estándar, puedes atrapar al bot en el tarpit de Endlessh.

Para comenzar, haga una copia de seguridad de su archivo de configuración SSH desde su servidor con el siguiente comando:

  1. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Este archivo se puede utilizar para restaurar la configuración original si algo no funciona o si decide volver a mover SSH al puerto predeterminado.

Abra el archivo de configuración SSH /etc/ssh/sshd_configusando nano o su editor de texto favorito:

  1. sudo nano /etc/ssh/sshd_config

Localice la línea #Port 22. Quite el comentario de esta línea eliminando el #, y luego cambie el puerto a un puerto no utilizado en su servidor:

/etc/ssh/sshd_config

...Port 2222...

Un ejemplo de un puerto que normalmente no se utiliza es 2222. Puede seleccionar el puerto que desee utilizar para sus conexiones SSH recurrentes. Guarde y cierre el archivo.

Si su servidor utiliza un firewall, como ufw, deberá permitir el tráfico al nuevo puerto:

  1. sudo ufw allow 2222/tcp

A continuación, reinicie el servicio SSH:

  1. sudo systemctl restart sshd

En una sesión de terminal independiente, intente conectarse a su servidor utilizando el nuevo puerto:

  1. ssh sammy@your_server_ip -p 2222

Advertencia: No cierre su sesión SSH activa a menos que haya confirmado que puede usar SSH en el nuevo puerto. Si no puede conectarse a través del nuevo puerto, corre el riesgo de perder el acceso a su servidor al cerrar la sesión. Si no puede conectarse a su servidor en una sesión de terminal independiente, puede restaurar su configuración SSH original ejecutando los siguientes comandos:

  1. sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  2. sudo systemctl restart sshd

Si encuentra más problemas, verifique que sshdse haya reiniciado correctamente y revise la configuración de su firewall para asegurarse de que el puerto 2222acepte tráfico TCP.

Una vez que hayas verificado que puedes realizar una nueva conexión al puerto 2222, puedes cerrar tu terminal original de forma segura. Cuando te conectes a tu servidor en el futuro, siempre tendrás que especificar el nuevo puerto, de la siguiente manera:

  1. ssh sammy@your_server_ip -p 2222

Ahora que ha movido exitosamente SSH a un puerto no estándar, es momento de configurar Endlessh.

Paso 2 – Instalación de Endlessh

Endlessh no tiene un paquete oficial, por lo que clonarás el repositorio para compilarlo manualmente. Usarás Git para clonar el repositorio, el build-essentialpaquete (para compilar el proyecto) y el libc6-devpaquete.

Instale los paquetes necesarios utilizando el administrador de paquetes apt:

  1. sudo apt install build-essential libc6-dev

Confirme la instalación ycuando se le solicite.

Luego clona el repositorio Endlessh desde GitHub a tu directorio de inicio:

  1. git clone https://github.com/do-community/endlessh

Vaya al directorio del proyecto y use el makecomando para compilar Endlessh:

  1. cd endlessh
  2. make

Ahora puedes iniciar Endlessh con el siguiente comando:

  1. sudo ./endlessh -v -p 22

Para comprobar que Endlessh está funcionando, puedes intentar realizar una conexión SSH al puerto 22con el -vindicador verbose, que mostrará el mensaje sin fin que se está transmitiendo. En una nueva ventana de terminal, realiza una conexión SSH al puerto 22con cualquiera de los siguientes comandos:

  1. ssh sammy@your_server_ip -v
  1. ssh sammy@your_server_ip -p 22 -v

Cuando su nueva sesión SSH intente conectarse al puerto 22, verá aparecer una cadena de caracteres aleatorios en la terminal de conexión cada 10 segundos hasta que se cierre la sesión, como el resultado a continuación:

Outputdebug1: kex_exchange_identification: banner line 0: NvnHF]W4p+tg*"+debug1: kex_exchange_identification: banner line 1: ndebug1: kex_exchange_identification: banner line 2: @/O5c0/;1b{qd(M,vKdebug1: kex_exchange_identification: banner line 3: i+ OZdebug1: kex_exchange_identification: banner line 4: yndebug1: kex_exchange_identification: banner line 5: T[V[HUg

Una vez que haya confirmado que funciona intentando conectarse con una nueva sesión, puede cerrar la nueva terminal y dejar de usar Endlessh Ctrl+Cen su sesión de terminal original.

En este paso, descargaste y creaste Endlessh desde la fuente. A continuación, lo configurarás y lo implementarás como un servicio para que sea persistente al cerrar sesión y reiniciar tu servidor.

Paso 3 – Configuración de Endlessh

En este paso, configurará Endlessh como un servicio que persistirá después de que finalice su sesión y durante los reinicios del sistema.

Mueva el binario compilado al /usr/local/bindirectorio:

  1. sudo mv ./endlessh /usr/local/bin/

Introduzca su contraseña si se le solicita.

Copie el archivo de servicio del proyecto al /etc/systemd/systemdirectorio:

  1. sudo cp util/endlessh.service /etc/systemd/system/

Modificará ligeramente el archivo de servicio para ejecutar Endlessh en los puertos que se encuentran debajo 1024. Abra el archivo de servicio en nano o en su editor de texto favorito:

  1. sudo nano /etc/systemd/system/endlessh.service

Encuentre la sección sobre cómo ejecutar Endlessh en los puertos en 1024.

Actualice el archivo eliminando #al principio de la línea con AmbientCapabilities=CAP_NET_BIND_SERVICE y agregando #al principio de la línea PrivateUsers=true, de la siguiente manera:

/etc/systemd/system/endlessh.servicio

...## If you want Endlessh to bind on ports  1024## 1) run: ##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh## 2) uncomment following lineAmbientCapabilities=CAP_NET_BIND_SERVICE## 3) comment following line#PrivateUsers=true...

Guardar y salir del archivo.

A continuación, permitirá que Endlessh se ejecute en puertos inferiores a 1024, también denominados puertos privilegiados del dominio de Internet . Establezca esta capacidad para el binario Endlessh con el setcapcomando:

  1. sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

Necesitará definir un archivo de configuración para Endlessh para indicarle qué puerto utilizar. Cree y abra un archivo de configuración llamado /etc/endlessh/config:

  1. sudo mkdir /etc/endlessh
  2. sudo nano /etc/endlessh/config

En el archivo de configuración, defina el puerto a utilizar como 22:

/etc/endlessh/config

Port 22

Guarde y cierre el archivo.

Ahora puedes iniciar el servicio Endlessh de forma persistente:

  1. sudo systemctl --now enable endlessh

Incluirlo --now enablehará que el servicio persista después de reiniciar el servidor.

Para comprobar que el servicio se inició correctamente, puede utilizar el systemctl statuscomando:

  1. sudo systemctl status endlessh

Si se inició correctamente, verá un resultado como este:

Output● endlessh.service - Endlessh SSH Tarpit     Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled)     Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago       Docs: man:endlessh(1)   Main PID: 34007 (endlessh)      Tasks: 1 (limit: 1081)     Memory: 380.0K     CGroup: /system.slice/endlessh.service             └─34007 /usr/local/bin/endlessh

Si se está ejecutando, puede intentar conectarse al puerto 22en una nueva sesión de terminal:

  1. ssh sammy@your_server_ip

Debido a que su tarpit se está ejecutando, la nueva sesión de terminal no podrá conectarse y se ejecutará de forma perpetua hasta que se detenga manualmente Ctrl+Cen la terminal de conexión.

Si desea detener la ejecución del servicio, puede utilizar el siguiente comando:

  1. sudo systemctl --now disable endlessh

Después de detener el servicio, puede utilizar las instrucciones de restauración de SSH en la advertencia del Paso 1 para restaurar la configuración original del servidor. Puede volver a habilitar el servicio sudo systemctl --now enable endlesshsin tener que pasar por el proceso de configuración nuevamente, pero asegúrese de que SSH no se esté ejecutando en el puerto 22cuando lo haga.

Conclusión

Ha instalado y configurado correctamente Endlessh, ha ayudado a limpiar sus registros de autenticación y está preparado para perder el tiempo con bots SSH aleatorios.

Después de configurar su tarpit Endlessh, revise otras medidas de seguridad recomendadas para proteger sus servidores .

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

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

Scroll al inicio