In questa guida, vi mostreremo come realizzare un honeypot (una trappola/esca per catturare eventuali attacchi informatici) SSH utilizzando sshesame con Docker su GNU/Linux.

Un honeypot SSH è un finto server SSH che è possibile eseguire sul vostro sistema GNU/Linux per intercettare i malintenzionati, siano essi degli utenti o dei bot che tentano di accedere al nostro server.

Il punto più interessante dell’utilizzo di un honeypot è che ci dà la possibilità di avere un’idea di quali credenziali vengono testate e che comandi verrebbero eseguiti una volta ottenuto l’accesso tramite SSH.

Ovviamente, trattandosi di un honeypot, qualsiasi comando impartito non verrà eseguito, tuttavia all’attaccante sembrerà che sia andato a buon fine, grazie al fatto che sshesame falsifica le risposte.

Potenzialmente potresti tenere un honeypot anche su un Raspberry Pi o su una macchina virtuale ad-hoc (ad esempio se hai un server dedicato con Proxmox, VMWare o altri software di virtualizzazione), eviterei di metterlo sulla stessa macchina dove hai dati e altri servizi.

L’ideale sarebbe utilizzare un qualcosa di isolato, così da non rischiare nulla qualora venisse bypassato in qualche modo sshesame. Per questo un Raspberry Pi può essere un ottimo dispositivo per configurare un honeypot SSH, se hai intenzione di monitorare gli attacchi al tuo server casalingo. Altrimenti, se hai un server dedicato, potrebbe essere più sensata una VM.

Il software che utilizzeremo supporta sia le versioni a 32 bit che a 64 bit di Raspberry Pi OS, permettendoci di installarlo dal Raspberry PI 2 in poi (visto che supporta solo ARMv7), nel caso in cui vogliate utilizzarlo più in un ambito domestico. Altrimenti, su piattaforma x86_64 siamo già apposto e non dobbiamo preoccuparci di nulla.

Requisiti

  • Raspberry PI 2 o successivo (o equivalente), altrimenti una macchina virtuale anche piccolina, tipo 512 MB di RAM e 0.5 vCPU.
  • Almeno 4 GB di spazio liberi (così da avere spazio per docker e i log);
  • Sistema operativo GNU/Linux (es: Debian, Ubuntu, Raspberry PI OS) con Docker installato.
  • Connettività a Internet con un indirizzo IP pubblico su cui è possibile aprire porte.

Installazione ed esecuzione dell’honeypot SSH su GNU/Linux

Nella seguente sezione, ti spiegheremo come procedere all’installazione dell’honepyhot SSH “sshesame” su Linux, tramite l’utilizzo di Docker (che ci semplifica un sacco la vita).

Per tale motivo, ti invitiamo ad installare Docker prima di procedere con le seguenti sezioni.

Preparazione per l’esecuzione di sshesame

1. Come prima cosa, creiamo una directory in cui salvare il file di Docker Compose per l’esecuzione di sshesame con Docker, tramite il comando seguente:

sudo mkdir -p /opt/stacks/sshesame

2. Dopodiché entriamo nella directory appena creata per iniziare a scrivere il file di Docker Compose, con il comando cd:

cd /opt/stacks/sshesame

3. Adesso che siamo nella directory giusta, iniziamo a scrivere il file di Docker Compose sfruttando l’editor di testo nano, eseguendo il comando:

sudo nano compose.yaml

4. Dentro a questo file, copia-incolliamo il seguente contenuto:

services:
  sshesame:
    image: ghcr.io/jaksi/sshesame
    ports:
      - "2022:2022"
    volumes:
      - sshesame-data:/data
volumes:
  sshesame-data: {}

N.B: possiamo variare la porta in ascolto, ad esempio, l’ideale, sarebbe mettere la porta 22 (quella di default di SSH), ma ovviamente prima di farlo, dovremmo modificare la configurazione di sshd sita in /etc/ssh/sshd_config (il parametro “Port 22“, che di solito è commentato, ha un “#” davanti, ricordandoci poi di cambiare anche l’eventuale configurazione del firewall).

Ti ricordo che se cambi la porta di SSH, per accedere al server dovrai specificare l’opzione “-p <porta-di-SSH>” se ti colleghi utilizzando il comando “ssh username@tuo-server.it”. Conseguentemente, il comando completo, diventerà così: “ssh -p <nuovaPorta> username@tuo-server.it”, ad esempio se nel file sshd_config hai messo “Port 14001“, il comando per accedere al server sarà: “ssh -p 14001 root@tuo-server.it”.

Inoltre, se cambi la configurazione di OpenSSHd, dovrai ricordati di riavviarne il servizio, utilizzando il comando:

sudo service ssh restart

Tornando a sshesame, puoi configurare opzioni aggiuntive sfruttando il file di Docker Compose descritto qui sopra. Per un elenco di tutte le opzioni configurabili, ti invitiamo a dare un’occhiata alla configurazione completa disponibile sulla pagina GitHub del progetto.

5. Dopo aver finito di scrivere questo file, è possibile salvare e uscire premendo i tasti CTRL+ X, Y e poi ENTER.

Avviare sshesame con Docker Compose

6. Con il file Docker Compose ora scritto, è possibile avviare l’honeypot SSH utilizzando il seguente comando.

Questo dovrebbe metterci un po’, sulla base della tua connessione, poiché Docker scaricherà l’immagine di sshesame e la avvierà automaticamente appena finito il download.

docker compose up -d

7. Una volta avviato il container di sshesame, potrai visionarne i log per vedere eventuali attacchi e tutto ciò che fa un’attaccante, tramite il comando:

docker compose logs -f

N.B: se vuoi consultare così i log, devi ricordarti di accedere alla directory dove hai salvato il file di Docker Compose, quel “compose.yaml” che abbiamo scritto prima. Altrimenti dovresti specificarlo nel comando, tramite il parametro -f, esempio:

docker compose logs -f /opt/stacks/sshesame/compose.yaml

8. Se hai configurato un firewall, ricordati di esporre la porta su cui hai deciso di tenere in esecuzione l’honeypot. La procedura può variare, in base al sistema, ad esempio se hai UFW potrebbe bastarti:

sudo ufw allow 2022/tcp

Inoltre, se hai deciso di realizzare questo setup in un ambiente domestico, dovresti aprire le porte sul tuo modem/router. Purtroppo la configurazione cambia in base al modello che hai, quindi ti consigliamo di cercare una guida per il tuo modello specifico, oltre al fatto che il tuo ISP deve permetterti di aprire le porte sull’IP pubblico (se hai una connessione 4G/5G, è molto probabile che di default questa cosa non sia fattibile, salvo eventuali contratti con IP pubblico statico).

Se invece disponi della classica connessione DSL (Fibra o Fibra misto rame o addirittura ADSL) è molto probabile che tu riesca nell’impresa.

Testare l’honeypot SSH

10. Utilizzando il seguente comando, è possibile testare la vostra honeypot SSH direttamente sulla stessa macchina dove lo avete installato.

Quando richiesto, è possibile digitare qualsiasi password, poiché verrà sempre accettata da sshesame.

ssh 127.0.0.1 -p 2022

11. Dopo aver effettuato l’accesso alla tua honeypot SSH, puoi vedere ogni azione che viene effettuata tramite i log.

Di seguito è riportato un piccolo esempio dei dati riportati dall’honeypot. Puoi vedere la password e il nome utente utilizzati per completare questa connessione. Inoltre, è possibile vedere ogni comando che l’utente tenta di eseguire.

sshesame-1  | 2024/07/28 14:08:07 [192.168.0.3:35654] authentication for user "prova" without credentials rejected
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] authentication for user "dragone2" with password "questoeunhoneypot" accepted
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] connection with client version "SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10" established
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] [channel 0] session requested
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] [channel 0] PTY using terminal "xterm-256color" (size 80x24) requested
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] [channel 0] environment variable "LANG" with value "it_IT.UTF-8" requested
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] [channel 0] shell requested
sshesame-1  | 2024/07/28 14:09:11 [192.168.0.9:35654] proof of ownership of host keys "host_rsa_key" requested
sshesame-1  | 2024/07/28 14:10:27 [192.168.0.9:35654] [channel 0] input: "lastlog"
sshesame-1  | 2024/07/28 14:10:43 [192.168.0.9:35654] [channel 0] input: "ls /"
sshesame-1  | 2024/07/28 14:10:51 [192.168.0.9:35654] [channel 0] input: "exit"
sshesame-1  | 2024/07/28 14:10:51 [192.168.0.9:35654] [channel 0] closed
sshesame-1  | 2024/07/28 14:10:51 [192.168.0.9:35654] connection closed

A questo punto dovresti avere una buona idea di come puoi installare e configurare un honeypot SSH sul tuo sistema GNU/Linux.

Un honeypot ti consente di intrappolare e osservare gli utenti che stanno tentando di attaccare il tuo server utilizzando SSH. Puoi esaminare quali comandi un intruso tenta di utilizzare e registrare il nome utente e l’indirizzo IP che ha usato per connettersi.

Lasciare pure un commento qui sotto se hai avuto problemi o hai domande in merito a come configurare questo honeypot sul tuo sistema.

Se ti è piaciuto questo tutorial, ti consigliamo, come sempre, di dare un’occhiata ai nostri altri progetti dedicati al mondo GNU/Linux.

Rispondi