Come configurare una trappola Endlessh su Ubuntu 22.04

L’autore ha selezionato il Fondo per il Software Libero e Open Source per ricevere una donazione come parte del programma Scrivi per le Donazioni.

Introduzione

Quando si esaminano i log di autenticazione, è possibile vedere diversi tentativi di accesso falliti da vari indirizzi IP. Questi tentativi di accesso falliti provengono spesso da un nodo di una botnet che scansiona l’intera rete alla ricerca di server vulnerabili con credenziali predefinite. Sebbene la maggior parte delle persone abbia una password sicura o chiavi SSH che impediscono agli attaccanti di accedere al proprio server, alcuni server potrebbero essere vulnerabili a questa scansione. Anche se potresti non essere in grado di fermare questi attacchi, puoi rallentarli con tarpits.

In questo tutorial, installerai e configurerai Endlessh, una trappola che invia lentamente un banner infinitamente lungo a qualsiasi utente che tenta di accedere. Configurerai anche il servizio SSH per funzionare su una porta diversa, il che renderà i tuoi log di autenticazione più leggibili.

Dopo aver completato questo tutorial, sarai in grado di connetterti al tuo server su una porta non standard, mentre qualsiasi bot che scansiona il tuo server troverà che il loro tempo è sprecato bussando a una porta che non si aprirà mai.

Prerequisiti

Per completare questo tutorial, avrai bisogno dei seguenti elementi:

Passaggio 1 – Spostare SSH su una Porta Non-Standard

In questo passaggio, sposterai SSH su una porta non standard per liberare una porta per Endlessh. Poiché i botnet non hanno risorse infinite, di solito scansionano solo la porta SSH predefinita (22). Spostando il tuo SSH su una porta non standard, puoi intrappolare il bot nella trappola Endlessh.

Per iniziare, fai un backup del file di configurazione SSH dal tuo server con il seguente comando:

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

Questo file può essere usato per ripristinare le impostazioni originali se qualcosa non funziona o se decidi di riportare SSH alla porta predefinita.

Apri il file di configurazione SSH /etc/ssh/sshd_config usando nano o il tuo editor di testo preferito:

  1. sudo nano /etc/ssh/sshd_config

Trova la riga #Port 22. Rimuovi il commento da questa riga eliminando il #, e quindi cambia la porta con una porta non utilizzata sul tuo server:

/etc/ssh/sshd_config
...
Port 2222
...

Un esempio di porta normalmente non utilizzata è 2222. Puoi selezionare qualsiasi porta desideri utilizzare per le tue connessioni SSH ricorrenti. Salva e chiudi il file.

Se il tuo server sta utilizzando un firewall, come ufw, sarà necessario consentire il traffico alla nuova porta:

  1. sudo ufw allow 2222/tcp

Successivamente, riavvia il servizio SSH:

  1. sudo systemctl restart sshd

In una sessione terminale separata, tenta di connetterti al tuo server utilizzando la nuova porta:

  1. ssh sammy@your_server_ip -p 2222

Avviso: Non chiudere la tua sessione SSH attiva a meno che tu non abbia confermato di poter utilizzare SSH sulla nuova porta. Se non riesci a connetterti tramite la nuova porta, rischi di perdere l’accesso al tuo server chiudendo la sessione. Se non riesci a connetterti al tuo server in una sessione terminale separata, puoi ripristinare le impostazioni SSH originali eseguendo i seguenti comandi:

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

Se incontri ulteriori problemi, verifica che sshd sia stato riavviato con successo e rivedi le impostazioni del firewall per assicurarti che la porta 2222 accetti il traffico tcp.

Una volta verificato di poter effettuare una nuova connessione alla porta 2222, puoi chiudere in modo sicuro il tuo terminale originale. Quando ti connetterai al tuo server in futuro, dovrai sempre specificare la nuova porta, come segue:

  1. ssh sammy@your_server_ip -p 2222

Ora che hai spostato con successo SSH su una porta non standard, è il momento di configurare Endlessh.

Passaggio 2 – Installazione di Endlessh

Endlessh non ha un pacchetto ufficiale, quindi clonerai il repository per compilarlo manualmente. Utilizzerai Git per clonare il repository, il pacchetto build-essential (per compilare il progetto) e il pacchetto libc6-dev.

Installa i pacchetti necessari utilizzando il gestore di pacchetti apt:

  1. sudo apt install build-essential libc6-dev

Conferma l’installazione con y quando richiesto.

Quindi clona il repository di Endlessh da GitHub nella tua directory home:

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

Sposta nella directory del progetto e utilizza il comando make per compilare Endlessh:

  1. cd endlessh
  2. make

Ora puoi avviare Endlessh con il seguente comando:

  1. sudo ./endlessh -v -p 22

Per verificare che Endlessh funzioni, puoi tentare di effettuare una connessione SSH alla porta 22 con il flag dettagliato -v, che mostrerà il banner infinito trasmesso. In una nuova finestra del terminale, effettua una connessione SSH alla porta 22 con uno dei seguenti comandi:

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

Quando la tua nuova sessione SSH tenta di connettersi alla porta 22, vedrai apparire una stringa di caratteri casuali nel terminale di connessione ogni 10 secondi fino a quando la sessione non verrà chiusa, come nell’output seguente:

Output
debug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+ debug1: kex_exchange_identification: banner line 1: n< debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK debug1: kex_exchange_identification: banner line 3: i+ OZ debug1: kex_exchange_identification: banner line 4: yn debug1: kex_exchange_identification: banner line 5: T[V\\[HUg

Una volta confermato il corretto funzionamento tentando di connetterti con una nuova sessione, puoi chiudere il nuovo terminale e arrestare Endlessh usando Ctrl+C nella tua sessione terminale originale.

In questo passaggio, hai scaricato e compilato Endlessh dalla sorgente. Successivamente, lo configurerai e lo distribuirai come servizio per renderlo persistente durante il logout e il riavvio del server.

Passaggio 3 – Configurazione di Endlessh

In questo passaggio, configurerai Endlessh come servizio che persiste dopo la chiusura della sessione e durante i riavvii di sistema.

Sposta il file binario compilato nella directory /usr/local/bin:

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

Inserisci la tua password se richiesto.

Copia il file del servizio dal progetto nella directory /etc/systemd/system:

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

Modificherai leggermente il file di servizio per eseguire Endlessh su porte sotto 1024. Apri il file di servizio in nano o nel tuo editor di testo preferito:

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

Trova la sezione riguardante l’esecuzione di Endlessh su porte sotto 1024.

Aggiorna il file rimuovendo # dall’inizio della riga con AmbientCapabilities=CAP_NET_BIND_SERVICE e aggiungendo # all’inizio della riga PrivateUsers=true, così:

/etc/systemd/system/endlessh.service
...
## Se desideri che Endlessh si leghi alle porte < 1024
## 1) esegui: 
##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) decommenta la seguente riga
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) commenta la riga seguente
#PrivateUsers=true
...

Salva ed esci dal file.

Successivamente, consentirai a Endlessh di eseguirsi su porte inferiori a 1024, anche indicate come porte privilegiate del dominio internet. Imposta questa capacità per il binario di Endlessh con il comando setcap:

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

Dovrai definire un file di configurazione per Endlessh per indicargli quale porta utilizzare. Crea e apri un file di configurazione chiamato /etc/endlessh/config:

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

Nel file di configurazione, definisci la porta da utilizzare come 22:

/etc/endlessh/config
Port 22

Salva e chiudi il file.

Ora puoi avviare il servizio Endlessh in modo persistente:

  1. sudo systemctl --now enable endlessh

Includere --now enable renderà il servizio persistente dopo il riavvio del server.

Per verificare che il servizio sia stato avviato correttamente, puoi utilizzare il comando systemctl status:

  1. sudo systemctl status endlessh

Se avviato correttamente, vedrai un output simile a questo:

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

Se è in esecuzione, puoi tentare di connetterti alla porta 22 in una nuova sessione terminale:

  1. ssh sammy@your_server_ip

Poiché il tuo tarpit è in esecuzione, la nuova sessione terminale non sarà in grado di connettersi e continuerà ad essere in esecuzione in perpetuo fino a quando non verrà interrotta manualmente con Ctrl+C nel terminale di connessione.

Se desideri interrompere il servizio in esecuzione, puoi utilizzare il seguente comando:

  1. sudo systemctl --now disable endlessh

Dopo aver interrotto il servizio, puoi utilizzare le istruzioni di ripristino SSH nel messaggio di avvertimento del Passaggio 1 per ripristinare la configurazione originale del tuo server. Puoi riattivare il servizio con sudo systemctl --now enable endlessh senza dover ripetere il processo di configurazione, ma assicurati che SSH non sia in esecuzione sulla porta 22 quando lo fai.

Conclusione

Hai installato e configurato con successo Endlessh, hai aiutato a pulire i tuoi registri di autenticazione e ti sei preparato a perdere tempo con i bot SSH casuali.

Dopo aver impostato la tua trappola Endlessh, dai un’occhiata alle altre Misure di Sicurezza Consigliate per Proteggere i Tuoi Server.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-endlessh-tarpit-on-ubuntu-22-04