DigitalOcean è un provider cloud simile ad AWS, Microsoft Azure, Google Cloud Platform e molti altri. Offrono istanze, chiamate "droplet", con diverse distribuzioni Linux come Debian, Ubuntu, FreeBSD, ecc. Simile ad AWS, DigitalOcean ha datacenter in tutto il mondo e talvolta più datacenter in ogni paese.
Tuttavia, una caratteristica in particolare li distingue dai loro concorrenti. Qualche tempo fa hanno aggiunto il supporto per le immagini personalizzate, che consente agli utenti di importare i dischi delle macchine virtuali e usarli come droplet. Questo è perfetto per noi in quanto possiamo utilizzare la nostra versione di Kali Linux nel loro cloud.
Anche se potrebbe essere possibile caricare le immagini virtuali ufficiali di Kali Linux, non sarebbe molto efficiente. Invece, costruiremo un'installazione Kali leggera con il minimo indispensabile per farlo funzionare.
Genera una ISO
Per impostazione predefinita, le ISO di Kali Linux hanno una GUI installata e, sebbene potremmo usarla, vogliamo ridurre al minimo la quantità di dati che dobbiamo caricare su DigitalOcean per motivi di cui parleremo in seguito. Anche avere una GUI in esecuzione su un sistema headless è uno spreco di risorse, quindi mentre potremmo disinstallarla o disabilitarla, genereremo semplicemente una ISO Kali personalizzata senza una GUI o altri strumenti installati. La creazione dell'ISO richiederà circa 5 GB di spazio su disco rigido, quindi assicurati di averne abbastanza se stai seguendo.
Innanzitutto, ci assicureremo che il sistema sia aggiornato:
apt update
apt -y full-upgrade
Nel caso sia stato installato un nuovo kernel, riavviamo il sistema prima di continuare e poi procediamo con l'avvio della build.
apt -y install git live-build cdebootstrap devscripts
git clone https://gitlab.com/kalilinux/build-scripts/live-build-config.git
cd live-build-config
./build.sh --variant minimal --verbose
Ci vorrà del tempo per creare l'ISO poiché è necessario scaricare molti pacchetti e assemblarli. Nel frattempo, godetevi una bella tazza di caffè. O tè.
L'opzione '–verbose' visualizzerà il registro di build sullo schermo. Tuttavia, può essere rimosso e invece è possibile seguire i progressi nel build.log file:
tail -f build.log
Una volta che il nostro prompt ritorna sul terminale in cui è stato lanciato "build.sh", l'ISO è pronto e può essere trovato nelle immagini/ directory.
Crea la macchina virtuale
Con la nostra ISO costruita, ora possiamo iniziare a costruire la nostra macchina virtuale. Crea una nuova macchina virtuale impostando il sistema operativo sull'ultima Debian 64 bit e allocando un disco rigido da 20 GB. Se necessario, la configurazione dettagliata è spiegata sul sito Web di Kali Training. È importante archiviare il disco virtuale come un unico file allocato dinamicamente. Il resto come la quantità di CPU e RAM non ha importanza perché solo il file del disco verrà caricato su DigitalOcean.
La dimensione del disco è importante poiché la fatturazione si basa sulla dimensione del disco per le immagini personalizzate. Influirà anche sulla scelta dell'istanza che possiamo creare. Supponiamo che venga creato un disco rigido da 40 GB, non riuscirà a creare un'istanza al livello di $ 5 al mese perché la sua dimensione massima del disco rigido è 25 GB. In tal caso saremmo costretti a utilizzare l'opzione $ 10/mese per istanze con dischi da 50 GB. Non preoccuparti, anche se il disco è da 20 GB, verrà espanso a seconda del piano droplet scelto.
Durante l'installazione, seleziona il partizionamento manuale e configuralo come mostrato di seguito, con tutti i file in una partizione e nessun file di scambio.
Aggiorna il sistema
Al termine dell'installazione e dopo il riavvio, accediamo alla console e aggiorniamo il sistema:
apt update
apt -y full-upgrade
Se non lo vedi passare su un mirror durante 'apt update', potresti aver dimenticato accidentalmente di aggiungere un mirror di rete durante l'installazione. Segui le istruzioni sul sito Kali-Docs per risolverlo ed esegui nuovamente entrambi i comandi.
Installa i pacchetti richiesti
Affinché DigitalOcean possa configurare il sistema per noi, dobbiamo installare cloud-init pacchetto:
apt -y install cloud-init
echo 'datasource_list: [ ConfigDrive, DigitalOcean, NoCloud, None ]' > /etc/cloud/cloud.cfg.d/99_digitalocean.cfg
systemctl enable cloud-init
Aggiorna GRUB
All'avvio, il disco è collegato e mappato come sda1. Tuttavia, con le goccioline, è visto come vda1. Per rimediare, dobbiamo cambiare tutte le istanze di sda1 in vda1 in /boot/grub/grub.cfg :
sed -i 's/sda1/vda1/g' /boot/grub/grub.cfg
Con il file di configurazione aggiornato, possiamo eseguire "update-grub" per aggiornare il sistema:
update-grub
Prepara per SSH
Poiché dovremo utilizzare SSH per connetterci al sistema su DigitalOcean, il openssh-server anche il pacchetto deve essere installato (e abilitato):
apt -y install openssh-server
systemctl enable ssh.service
Quando crei un droplet standard, puoi scegliere di usare le chiavi SSH o meno. Tuttavia, quando si utilizzano immagini personalizzate, questa non è un'opzione e l'utilizzo di chiavi SSH è obbligatorio. Per questo motivo DigitalOcean ci richiede di rimuovere la password di root:
passwd -d root
Dobbiamo anche creare un /root/.ssh cartella:
mkdir /root/.ssh
Pulizia
Prima di finire con la nostra macchina virtuale, eseguiamo alcuni comandi per ripulire le cose:
apt autoremove
apt autoclean
rm -rf /var/log/*
history -c
A questo punto, la nostra macchina virtuale è pronta, quindi eseguiamo "poweroff" per spegnere il sistema.
poweroff
Caricamento in corso
Nella cartella della macchina virtuale, individua .vmdk file, quindi comprimilo utilizzando bzip2, gzip o zip in preparazione per il caricamento su DigitalOcean.
bzip2 kali.vmdk
Accedi al tuo account DigitalOcean. Nella sezione "Gestisci" a sinistra, fai clic su "Immagini", quindi seleziona la scheda "Immagini personalizzate".
Da lì, carichiamo l'immagine del disco compresso. Lo chiameremo Kali, lo contrassegneremo come Debian e selezioneremo la regione e il datacenter in cui caricarlo. Nota che una volta caricati in una posizione, le goccioline possono essere avviate solo in quella posizione, che è una limitazione attuale per le immagini personalizzate. Un'altra cosa da ricordare in questa fase è che le immagini caricate consumano spazio su disco e DigitalOcean fattura in base all'utilizzo del disco.
Avvio di un droplet
Una volta terminato, la colonna "Caricato" indicherà da quanto tempo è stato caricato. Ora faremo clic sull'opzione "Altro" dell'immagine e selezionare "Avvia una goccia".
Verrai indirizzato alle impostazioni del droplet in cui puoi selezionare il piano del droplet, la chiave SSH e il progetto in cui avviarlo. Poiché si tratta di un'immagine personalizzata, è necessario utilizzare una chiave SSH. Puoi selezionarne una esistente o caricarne una nuova facendo clic su "Nuova chiave SSH", che aprirà la seguente schermata in cui puoi incollare la chiave pubblica e nominarla:
Una volta terminato, fai clic su "Crea" come mostrato di seguito. Ti riporterà quindi alla dashboard (Gestisci> Goccioline) dove sono elencate tutte le tue goccioline. Poiché stiamo utilizzando una chiave SSH, DigitalOcean non invierà un'e-mail con le credenziali per il droplet.
Entro pochi secondi, e dopo la visualizzazione dell'IP, la nostra goccia sarà pronta. Per connetterci, dovremo utilizzare la chiave SSH privata che abbiamo creato (chiamata MY_KEY in questo esempio):
[email protected]:~$ ssh -i MY_KEY [email protected]
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is SHA256:d83fcd43d25e2a7edd291666160b47360cc85870ded.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'IP' (ECDSA) to the list of known hosts.
Linux kali-s-1vcpu-1gb-nyc3-01 4.19.0-kali5-amd64 #1 SMP Debian 4.19.37-2kali1 (2019-05-15) x86_64
The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Ora abbiamo una bella installazione minima di Kali Linux che possiamo distribuire e personalizzare secondo necessità.
[email protected]:~# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: 2019.2
Codename: n/a
[email protected]:~# uname -a
Linux kali-s-1vcpu-1gb-nyc3-01 4.19.0-kali5-amd64 #1 SMP Debian 4.19.37-2kali1 (2019-05-15) x86_64 GNU/Linux
[email protected]:~# free -h
total used free shared buff/cache available
Mem: 987Mi 51Mi 527Mi 1.0Mi 407Mi 790Mi
Swap: 0B 0B 0B