Installare Metasploit su Ubuntu 22.04 senza sporcare il sistema
Metasploit Framework su Ubuntu 22.04 conviene installarlo in modo prevedibile, con dipendenze chiare e un minimo di isolamento operativo. La versione dei pacchetti nel repository di sistema non è sempre quella più aggiornata, mentre l’installazione via bundle ufficiale tende a essere più lineare per uso da laboratorio, assessment autorizzati e test interni. Il punto non è “mettere su msfconsole e basta”, ma evitare conflitti con Ruby di sistema, avere PostgreSQL pronto per il database e sapere dove guardare quando qualcosa non parte.
Su Ubuntu 22.04 il percorso più pulito è usare il pacchetto fornito dal progetto, oppure un’installazione controllata via Git se serve massima trasparenza. In questo articolo resto sul flusso più pratico per un server o una workstation tecnica: prerequisiti, installazione, inizializzazione del database, verifica e manutenzione. L’obiettivo è arrivare a una console funzionante senza lasciare il sistema in uno stato fragile.
Cosa serve prima di iniziare
Metasploit non è un tool “standalone” nel senso stretto: usa Ruby, componenti di sistema, spesso PostgreSQL e, in alcuni casi, librerie per compilare gem native. Se mancano questi pezzi, l’errore tipico è una console che parte ma non riesce a connettersi al database, oppure un’avvio lento con warning su gem mancanti. Prima di installare, conviene verificare che l’host sia aggiornato e che il profilo operativo sia quello giusto: una macchina di test, una VM dedicata o un container con rete controllata.
Se lavori in produzione o su un endpoint sensibile, considera il blast radius: l’installazione di strumenti di security testing aumenta la superficie operativa e va trattata come change controllato. Non serve aprire porte nuove se non le userai, e non conviene installare componenti extra a caso. Le credenziali del database, se create, vanno gestite come segreti e non scritte in chiaro dentro script condivisi.
Verifica dei prerequisiti su Ubuntu 22.04
Prima di tutto aggiorna l’indice pacchetti e controlla il livello base del sistema. Questo riduce i problemi di dipendenze e ti dice subito se l’ambiente è coerente.
sudo apt update
sudo apt -y upgrade
lsb_release -a
uname -a
Atteso: Ubuntu 22.04 LTS e kernel recente. Se il sistema è minimale, controlla anche che ci siano strumenti di base per scaricare e verificare i pacchetti.
sudo apt -y install curl wget gnupg ca-certificates build-essential
Per il database, verifica che PostgreSQL sia disponibile e attivo. Metasploit usa il database per sessioni, host, credenziali e risultati; senza, il framework funziona comunque ma perdi gran parte della comodità operativa.
sudo apt -y install postgresql postgresql-contrib
systemctl status postgresql --no-pager
Se il servizio risulta inactive o failed, leggi subito il journal prima di andare avanti:
journalctl -u postgresql -n 50 --no-pager
Installazione del Framework: opzione pratica e ripetibile
La via più semplice per un’installazione locale è usare il pacchetto ufficiale del progetto. Il vantaggio è che ricevi una distribuzione coerente del framework e dei suoi script di supporto. Il costo è che ti affidi al meccanismo di installazione del progetto, quindi è importante fare il backup o almeno sapere come rimuoverlo in modo pulito se devi tornare indietro.
Prima di installare, porta il sistema in uno stato ordinato. Evita repository terze parti non necessarie e controlla di non avere già versioni residue del framework installate manualmente in percorsi non standard, perché sono la causa classica dei conflitti tra binari e gem Ruby.
which msfconsole
sudo find / -name msfconsole 2>/dev/null
Se il comando non restituisce nulla, sei in una situazione pulita. Se invece trovi installazioni precedenti, annota il path e rimuovi solo ciò che sai di aver messo tu. Non fare pulizie aggressive su `/usr` o `/opt` senza inventario, perché il rollback diventa inutile.
Per installare il framework, scarica lo script ufficiale dal progetto e lancialo come utente con privilegi sudo. È un’operazione reversibile se la tieni confinata in un’area nota del filesystem.
cd /tmp
curl -o msfinstall https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/msfupdate.erb
chmod +x msfinstall
sudo ./msfinstall
Nota pratica: i dettagli dello script possono variare nel tempo, ma il concetto resta lo stesso. Se il download cambia nome o percorso, chiudi il gap consultando la documentazione corrente del progetto e verificando hash o firma, quando disponibili. Non fidarti mai di uno script scaricato senza controllo minimo.
Al termine, verifica che i binari siano presenti e raggiungibili:
msfconsole -v
msfvenom -v
Atteso: la versione del framework viene stampata senza errori di libreria. Se compare un errore su Ruby o su gem mancanti, il problema è quasi sempre una dipendenza non allineata o un’installazione parziale.
Configurare PostgreSQL per Metasploit
Il database non è obbligatorio per avviare la console, ma è fortemente consigliato. Su una macchina da assessment, il database ti evita di perdere tempo con output non persistenti e ti permette di cercare, filtrare e correlare i risultati. La configurazione va fatta con il minimo privilegio: un utente dedicato, un database dedicato, nessun riuso di account generici.
Su Ubuntu, il servizio PostgreSQL parte in genere già pronto. Crea un ruolo dedicato e un database separato per Metasploit. Se il tuo ambiente richiede un nome diverso, mantienilo coerente con l’inventario operativo.
sudo -u postgres createuser msf -P
sudo -u postgres createdb -O msf msf
Se preferisci evitare password nel prompt, puoi creare il ruolo da psql in modo interattivo e poi proteggerne l’uso con `pg_hba.conf`. In ogni caso, non mettere credenziali in chiaro dentro script condivisi o note operative non protette.
Avvia la console e inizializza il database dal prompt di Metasploit. Il comando `db_status` ti dice subito se la connessione è viva.
msfconsole
db_status
Atteso: stato connesso al database. Se vedi “No database connected”, controlla prima il servizio PostgreSQL, poi il file di configurazione del framework e infine il nome del database creato.
Inizializzazione corretta della workspace
Metasploit è molto più utile se organizzi subito la workspace. Anche in un lab piccolo, separare gli obiettivi per progetto evita di mischiare dati e riduce errori di interpretazione. L’operatività base è semplice: crea una workspace, importi risultati, mantieni lo storico ordinato e controlli il contesto prima di lanciare moduli.
workspace -a lab-ubuntu22
workspace
hosts
services
Atteso: la nuova workspace compare nell’elenco e i comandi `hosts` e `services` rispondono senza errori, anche se inizialmente vuoti. Se il database non è attivo, questi comandi falliscono o restituiscono dati incoerenti.
Se vuoi automatizzare il bootstrap, puoi salvare il set minimo di comandi in un file RC e richiamarlo all’avvio. È una soluzione utile quando devi ripetere setup in ambienti di test controllati.
cat > /tmp/msf-init.rc <<'EOF'
workspace -a lab-ubuntu22
setg RHOSTS 192.0.2.0/24
EOF
msfconsole -r /tmp/msf-init.rc
Qui il blocco di esempio usa una rete di documentazione. Sostituiscila solo con indirizzi autorizzati nel tuo laboratorio o nel perimetro che hai diritto di testare.
Verifica funzionale: la console deve essere coerente, non solo “aperta”
Un’installazione corretta non si misura dal fatto che `msfconsole` si apra, ma da tre segnali: la versione è leggibile, il database è connesso e i moduli si caricano senza errori evidenti. Se uno di questi tre punti manca, hai un’installazione fragile che ti farà perdere tempo al primo uso serio.
msfconsole -q -x 'version; db_status; exit'
Atteso: output pulito, database connesso, uscita senza stack trace. Se compaiono warning su gem native, controlla i pacchetti di compilazione e le librerie mancanti. Se compaiono errori di connessione al database, il problema è nella parte PostgreSQL o nei parametri di connessione.
Un’altra verifica utile è il caricamento di un modulo informativo, senza eseguire azioni invasive. In questo modo testi il parser dei moduli e la coerenza del framework.
msfconsole -q -x 'search type:auxiliary name:scanner; exit'
Se la ricerca restituisce risultati, il motore dei moduli è integro. Se invece fallisce, non è il momento di “forzare” altro: conviene leggere i log e correggere la base.
Problemi tipici su Ubuntu 22.04 e come leggerli senza perdere tempo
Il primo errore classico è il conflitto con Ruby di sistema. Ubuntu 22.04 ha una sua versione di Ruby e il framework può portarsene dietro una propria. Se mischi installazioni manuali, il risultato è un set di gem incoerente. Il sintomo è spesso un errore di caricamento all’avvio oppure una console che parte ma non esegue i comandi più banali.
Il secondo errore comune è il database non inizializzato. In quel caso `db_status` resta su “No database connected” e i dati non vengono persistiti. La correzione passa da tre verifiche rapide: servizio attivo, utente corretto, database esistente.
Il terzo problema è il filesystem o la memoria: se la macchina è piccola, scansioni pesanti o aggiornamenti di moduli possono saturare RAM e disco. Guarda `df -h`, `free -h` e il journal del sistema prima di attribuire la colpa al framework.
df -h
free -h
journalctl -xe --no-pager | tail -n 50
Se trovi OOM killer o partizioni piene, la soluzione non è reinstallare Metasploit: devi liberare spazio, aumentare risorse o spostare il lab su una VM con più margine.
Manutenzione minima: aggiornare senza rompere il lab
Il framework cambia spesso, quindi l’aggiornamento fa parte della manutenzione normale. Ma aggiornare senza strategia crea regressioni. Prima di toccare il sistema, fai uno snapshot della VM o almeno un backup dei file di configurazione e dell’inventario della workspace. Il rollback deve essere banale: tornare alla snapshot o reinstallare il pacchetto precedente, non ricostruire tutto a mano.
Se hai installato il pacchetto ufficiale, usa i meccanismi previsti dal progetto o dal gestore pacchetti, evitando manipolazioni manuali dentro directory interne. Se invece hai optato per un’installazione da sorgenti, tieni il repository versionato e annota la release esatta, così puoi riprodurre l’ambiente.
git -C /opt/metasploit-framework rev-parse --short HEAD
sudo apt update
sudo apt -y upgrade
Se l’aggiornamento rompe la compatibilità con una gem o con PostgreSQL, il rollback più rapido è il ripristino dello snapshot o della versione precedente del pacchetto. Non cercare di “aggiustare al volo” in produzione senza capire l’impatto: nel migliore dei casi perdi tempo, nel peggiore alteri il setup in modo non più ripetibile.
Uso responsabile e perimetro operativo
Metasploit è uno strumento tecnico, non un giocattolo. Va usato solo su sistemi per cui hai autorizzazione esplicita. Dal punto di vista operativo, questo significa tenere traccia del target, del motivo del test, della finestra oraria e del responsabile del change. Dal punto di vista della sicurezza, significa ridurre l’esposizione del sistema che ospita il framework: patch aggiornate, account locali limitati, niente servizi inutili esposti, segreti protetti e log consultabili.
Se condividi la macchina con altri operatori, separa gli account e i percorsi di lavoro. Un ambiente sporco, con cronologia shell riutilizzata e file RC sparsi, è il modo più veloce per introdurre errori e leak accidentali. Un minimo di disciplina qui vale più di qualsiasi “trucco” operativo.
Checklist finale di installazione
Prima di considerare chiuso il lavoro, verifica questi punti in sequenza:
`msfconsole -v` restituisce la versione senza errori di libreria.
`systemctl status postgresql` mostra il servizio attivo.
`db_status` dentro Metasploit indica connessione al database.
La workspace esiste e risponde ai comandi `workspace`, `hosts` e `services`.
Hai una snapshot o un backup del setup, utile per rollback rapido.
Se uno di questi punti fallisce, il problema è quasi sempre localizzato e risolvibile senza reinstallare tutto. La regola pratica è semplice: prima osserva, poi correggi, poi verifica di nuovo. Su Ubuntu 22.04 questa disciplina evita gran parte dei problemi che si vedono nei setup improvvisati.
Assunzione: l’installazione è eseguita su una macchina dedicata o comunque autorizzata, con accesso sudo e con uso del framework limitato ad attività di test legittime.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.