Skip to main content
  1. Lab-blue/

[TODO] Lab - Jump Server SSH (Bastion Host)

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Dimostra il pattern jump server: Mac→Ubuntu→Kali in catena SSH. Ubuntu è il bastion host esposto, Kali è il server interno raggiungibile solo tramite salto. Usa ProxyJump per fare tutto in un comando.

TL;DR
#

Senza jump server:  Mac ─SSH─▶ Kali (Kali esposta direttamente)
Con jump server:    Mac ─SSH─▶ Ubuntu ─SSH─▶ Kali
                              Bastion host — unico punto esposto, hardened
VantaggioPerché
Superficie ridottaSolo il jump server è esposto su internet — gli altri server non hanno SSH raggiungibile dall'esterno
Audit centralizzatoTutti gli accessi loggati sul jump server
SegmentazioneI server interni sono raggiungibili solo dalla rete interna
Note

Il vantaggio del jump server non è nel numero di chiavi — le chiavi pubbliche stanno su ogni server come sempre. Il vantaggio è che solo 1 porta SSH è esposta su internet invece di N. Con UFW su Kali (ufw allow from 192.168.64.3 to any port 22) è fisicamente impossibile raggiungerla dall'esterno senza passare per Ubuntu.


Fase 1 — Verifica prerequisiti
#

  • Task 1.1 — SSH attivo su Ubuntu

    # Dal Mac
    ssh utente@192.168.64.3
    • Come sai che hai finito: sei dentro Ubuntu
  • Task 1.2 — SSH attivo su Kali

    # Da Kali (verifica che sshd sia in ascolto)
    sudo systemctl status ssh
    sudo systemctl start ssh   # se non attivo
    • Come sai che hai finito: ss -tlnp | grep 22 mostra sshd in ascolto
  • Task 1.3 — Verifica IP Kali

    ip a | grep 192.168
    # Deve essere 192.168.64.200

Fase 2 — Catena manuale: Mac → Ubuntu → Kali
#

  • Task 2.1 — SSH dal Mac a Ubuntu

    ssh utente@192.168.64.3
  • Task 2.2 — Da Ubuntu, SSH a Kali

    # Ora sei dentro Ubuntu — salta a Kali
    ssh kali@192.168.64.200
    • Come sai che hai finito: sei dentro Kali
  • Task 2.3 — Verifica da dove vieni

    # Da Kali — chi si è connesso?
    who
    last | head -5
    • Come sai che hai finito: Kali vede la connessione proveniente da 192.168.64.3 (Ubuntu) — non dal Mac (192.168.64.1)
    • Questa è l'essenza del jump server: il server finale non vede mai il client originale

Fase 3 — ProxyJump: un comando solo dal Mac
#

ProxyJump fa la catena automaticamente senza dover fare SSH manuale in due step.

  • Task 3.1 — ProxyJump inline

    # Dal Mac — un comando solo, passa per Ubuntu e arriva a Kali
    ssh -J utente@192.168.64.3 kali@192.168.64.200
    • Come sai che hai finito: sei dentro Kali con un comando solo dal Mac
  • Task 3.2 — Configura ~/.ssh/config per ProxyJump permanente

    # Sul Mac — edita o crea ~/.ssh/config
    nano ~/.ssh/config

    Aggiungi:

    Host jump
      HostName 192.168.64.3
      User utente
    
    Host kali-interno
      HostName 192.168.64.200
      User kali
      ProxyJump jump
    # Ora basta:
    ssh kali-interno
    • Come sai che hai finito: ssh kali-interno ti porta direttamente su Kali passando per Ubuntu

Fase 4 — Hardening del jump server (concetti)
#

  • Task 4.1 — Limita gli IP che possono connettersi al jump server

    # Su Ubuntu — permetti SSH solo dal Mac
    sudo ufw allow from 192.168.64.1 to any port 22
    sudo ufw deny 22
    sudo ufw enable
    • Come sai che hai finito: SSH funziona dal Mac, non da altri IP
  • Task 4.2 — Verifica i log di accesso

    # Su Ubuntu — chi si è connesso?
    sudo tail -20 /var/log/auth.log | grep sshd
    
    # Su Kali — journald, non auth.log
    journalctl -u ssh | tail -20

    Output reale del lab (24/05/2026):

    May 24 15:52:14 kali sshd-session[1515]: Failed password for invalid user kali from 192.168.64.3 port 50926 ssh2
    May 24 15:52:17 kali sshd-session[1515]: Connection closed by invalid user kali 192.168.64.3 port 50926 [preauth]
    May 24 15:52:39 kali sshd-session[1521]: Accepted password for barno from 192.168.64.3 port 53100 ssh2
    May 24 15:52:39 kali sshd-session[1521]: pam_unix(sshd:session): session opened for user barno(uid=1000) by barno(uid=0)

    Osservazione chiave: il log mostra from 192.168.64.3 (Ubuntu) — non 192.168.64.1 (Mac). Il Mac si è connesso da .1 ma Kali non lo vede mai: vede solo il jump server. Questo è esattamente il comportamento corretto del bastion host.

    Il primo tentativo fallito (invalid user kali) è il tentativo con username sbagliato prima di usare barno.


Scenario Reale
#

Un amministratore deve accedere a 50 server nella LAN interna. Invece di esporre SSH su tutti e 50, espone solo il jump server (hardened, MFA obbligatorio, ogni accesso loggato). Dall'esterno entra sul jump server, da lì raggiunge i server interni. Se un attaccante compromette un server interno, non ha accesso diretto dall'esterno — deve passare per il jump server che è monitorato.


Risorse
#

  • man ssh_config — ProxyJump e opzioni avanzate
  • Gibson SY0-701 Cap 3 — Jump Server

Collegato a
#

  • cap-03-security-architecture — jump server / bastion host

Related