Visualizzazione post con etichetta Linux. Mostra tutti i post
Visualizzazione post con etichetta Linux. Mostra tutti i post

lunedì 24 aprile 2023

Linux: Verificare lo stato di salute dei dischi rigidi

Gli hard disk sono tra le periferiche che più facilmente sono soggette a rompersi pertanto è buona norma prevedere un backup periodico dei dati importanti. Uno dei problemi più comuni che si verifica con gli hard disk è quello di uno o più blocchi danneggiati. Un blocco danneggiato è un area del disco che non è più accessibile in lettura, in scrittura o entrambe. Anche pochi blocchi danneggiati sul disco possono provocare la corruzione dei file salvati e problemi/blocchi al sistema e, soprattutto se il loro numero aumenta, possono indicare che la rottura del disco è vicina. Tramite appositi strumenti è possibile verificare lo stato di salute dei dischi rigidi e diagnosticare eventuali malfunzionamenti in modo da correre ai ripari prima della loro rottura definitiva. Due utili strumenti per GNU/Linux per monitorare lo stato di salute dei dischi sono smartmontools e badblocks.

Prima di utilizzare tali tool è necessario individuare il disco da analizzare. Per elencare i dischi presenti nel sistema è possibile utilizzare il comando
lsblk
List Block Devices
FIG 1 - List Block Devices

In FIG 1 il disco presente sulla postazione è sda.

Smartmontools
Smartmontools è uno strumento in grado di rilevare i dati di diagnostica S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) supportato dai dischi rigidi meccanici e SSD moderni e fornisce diversi indicatori di affidabilità del dispositivo. Per procedere all'installazione del tool, eseguire il seguente comando da terminale
sudo apt-get install smartmontools
Terminata l'installazione possiamo utilizzare smartctl per visualizzare informazioni generiche sul disco eseguendo il comando
smartctl -i /dev/sda
smartctl
FIG 2 - smartctl

Le ultime 2 righe indicano che il disco supporta la tecnologia S.M.A.R.T ed è abilitata. In caso contrario potevamo abilitarla tramite il comando
smartctl -s on /dev/sda

Per controllare lo stato di salute attuale del disco è possibile utilizzare il comando
sudo smartctl -H /dev/sda

Per visualizzare i messaggi di log relativi ai controlli  S.M.A.R.T. del disco 
sudo smartctl -l error /dev/sda

Per visualizzare tutte le informazioni sul disco, anche quelle non legate alla tecnologia S.M.A.R.T., è possibile utilizzare il comando
sudo smartctl --xall /dev/sda

Il tool smartctl consente anche di testare il disco.

Per eseguire un test rapido (solitamente della durata di pochi minuti)
sudo smartctl -t short /dev/sda
Per effettuare un test approfondito (operazione che può durare anche molte ore)
sudo smartctl -t long /dev/sda


Badblocks
Badblocks è un’utility per lo scanning degli hard disk che esegue una verifica di basso livello per individuare l'eventuale presenza di blocchi danneggiati e permette di creare una lista dei settori corrotti del disco. Il seguente comando avvia la scansione del disco e il salvataggio dei risultati all'interno di un file di testo
sudo badblocks -v /dev/sda > badsectors.txt
Badblocks
FIG 3 - Badblocks







martedì 18 aprile 2023

Linux: Verificare la shell utilizzata

Linux e Unix mettono a disposizione dell'utente diverse shell. Nelle varie distribuzioni si possono trovare shell come bash (Bourne Again shell), ksh (Korn shell), csh (C shell), tcsh (TC shell), sh (Bourne shell), zsh (Z shell) e altre installate di default. Come facciamo a scoprire quale shell stiamo utilizzando su Linux?
L'utilizzo della variabile $SHELL, in questo caso, non è così affidabile infatti i comandi
echo "$SHELL"
oppure
printf "La mia shell - %s\n" "$SHELL"
visualizzano la shell dell'utente corrente ma non necessariamente quella in esecuzione al momento.
Come visibile in FIG 1, la shell di default di Kali Linux è zsh.
Default Shell
FIG 1 - Default Shell
Per passare, temporaneamente, ad un altra shell in genere basta digitarne il nome all'interno del terminare e premere invio. Ad esempio per passare alla shell bash basterà eseguire il comando
bash
Se, dopo aver modificato la shell, eseguiamo nuovamente il comando per la visualizzazione della variabile $SHELL, noteremo che in output verrà mostrata sempre la shell di default FIG 2. 
Modifica shell attuale
FIG 2 - Modifica shell attuale

Per uscire dalla nuova shell avviata basterà digitare il comando
exit
oppure aprire una nuova finestra terminale (la nuova finestra verrà aperta sulla shell di default).

Di seguito verranno mostrati alcuni metodi per individuare la shell in esecuzione.

Metodo 1
Un vecchio trucco in ambiente Unix per individuare la shell che si sta usando prevede l'utilizzo del comando ps con l'opzione -p {pid}. Il seguente comando permette di scoprire in quale shell ci si trova.
ps -p $$
Il comando seleziona i processi il cui numero ID (PID o numero di identificazione del processo) viene passato all'opzione -p. L'argomento $$ passato all'opzione -p restituisce il PID  del processo corrente. Dato che il processo corrente, all'interno di una finestra terminale, è la shell in esecuzione, il comando visualizzerà un elenco dello stato del processo della shell. In questo elenco, nella colonna CMD, verrà visualizzato il nome della shell in esecuzione al momento.
ps, Shell corrente
FIG 3 - ps, Shell corrente

Metodo 2
Un altro metodo semplice e affidabile per ottenere il nome dell'interprete di shell corrente su Linux o sistemi Unix-like prevede l'utilizzo del parametro speciale della shell $0:
echo $0
oppure
printf "%s\n" $0

$0 è il nome del processo in esecuzione. Se lo si usa all'interno di una shell, restituirà il nome della shell in caso contrario, se lo si usa all'interno di uno script, restituirà il nome dello script.
Visualizzazione shell corrente tramite $0
FIG 4 - Visualizzazione shell corrente tramite $0

Metodo 3
Un altro metodo per ottenere il nome della shell corrente in modo affidabile sui sistemi operativi Linux è attraverso il seguente comando.
readlink /proc/$$/exe
readlink viene utilizzato per stampare i collegamenti simbolici risolti nella shell attuale. Come visto per il Metodo 1, $$ indica il PID del processo corrente (shell) pertanto readlink restituirà il collegamento alla shell in esecuzione
Visualizzazione shell corrente tramite readlink
FIG 5 - Visualizzazione shell corrente tramite readlink

Verificare quali shell sono installate

Il file /etc/shells è un file di testo che contiene i nomi completi delle shell di accesso valide. Per visualizzare quali e quante shell sono installate sulla propria Linux o Unix box, eseguire da terminale il comando
cat /etc/shells

Il file /etc/shells può essere modificato solo da root
sudo vi /etc/shells
/etc/shells
FIG 6 - /etc/shells 

Stampare il nome della shell predefinita

La shell predefinita è quella che viene eseguita quando si apre una finestra di terminale ed è definita nel file /etc/passwd. Per stampare a video la shell predefinita, oltre all'utilizzo della variabile $SHELL visto in precedenza, è possibile utilizzare il seguente comando grep:
grep "^$USER" /etc/passwd
oppure
awk -F: '/kali/ { print $7}' /etc/passwd
dove al posto di kali va specificato l'utente corrente.
Shell predefinita
FIG 7 - Shell predefinita

Modificare la shell predefinita per l'account corrente

Per modificare la shell predefinita per l'account corrente, è possibile utilizzare chsh come mostrato di seguito
chsh -s /usr/bin/zsh

In questo caso il comando imposta come shell predefinita quella specificata dall'opzione -s e che risulta presente nel file /etc/shells.





giovedì 16 febbraio 2023

Linux: Mostrare i colori base supportati nella finestra terminale

Per visualizzare i colori di base del testo del terminale è possibile utilizzare il comando
printf "\e[%dm%d dark\e[0m \e[%d;1m%d bold\e[0m\n" {30..37}{,,,}

Utile nel caso si voglia visualizzare i colori di base prima di andarli a modificare nelle preferenze.
Colori di base Terminale
FIG 1 - Colori di base Terminale





mercoledì 15 febbraio 2023

Linux: Elencare tutti i socket TCP aperti

Il comando lsof (list open files) è un comando dei sistemi operativi Unix e Unix-like che permette di visualizzare informazioni sui file aperti dai processi in esecuzione. Dato che in ambiente *nix anche l'accesso a dispositivi, socket e pipe avviene come se fossero dei normali file, è possibile utilizzare lsof per analizzarli.
Questo rende lsof un utile strumento per i sistemisti nella raccolta di informazioni diagnostiche sul sistema.

Per elencare tutti i socket TCP aperti e da quali processi è possibile utilizzare il comando
sudo lsof -i TCP
lsof, mostra tutti i socket TCP aperti
FIG 1 - lsof, mostra tutti i socket TCP aperti

Per visualizzare quali processi utilizzano la porta 80 in locale o in remoto. 
sudo lsof -i TCP:80
lsof, processi che utilizzano la porta TCP 80
FIG 2 - lsof, processi che utilizzano la porta TCP 80


Per elencare tutti i file aperti da un singolo processo indicando il suo PID 
sudo lsof -p 747
lsof, file aperti da uno specifico processo
FIG 3 - lsof, file aperti da uno specifico processo








domenica 12 febbraio 2023

Linux: Data carving

Il data carving è una tecnica utilizzata per recuperare i dati da un supporto di memorizzazione, come un disco rigido o una scheda di memoria, in seguito a una cancellazione accidentale o intenzionale, oppure in caso di danneggiamento del supporto stesso. Il data carving consiste nell'analizzare l'immagine del supporto di memorizzazione per individuare i frammenti di dati ancora presenti e salvarli in una nuova posizione. Questa tecnica può essere utilizzata per recuperare file, immagini, video e altri tipi di dati ed è fondamentale anche nelle investigazioni digitali forensi.

Quando un file viene salvato su un disco rigido, viene suddiviso e scritto in contenitori logici detti cluster. Ogni cluster è composto da un certo numero di settori, che sono le unità di base di memorizzazione su un disco rigido. Il sistema operativo utilizza una File Allocation Table (FAT) o una Master File Table (MFT) per tenere traccia della posizione dei cluster sul supporto di memoria.

Ogni volta che un file viene salvato, il sistema operativo cerca una serie di cluster vuoti contigui che siano sufficienti per contenere tutti i dati del file. Una volta individuati, i cluster vengono marcati come utilizzati e i dati del file vengono scritti su di essi. Se un file è troppo grande e non ci sono cluster vuoti contigui in grado di contenerlo, viene diviso in più parti e memorizzato in cluster diversi e non contigui. Il sistema operativo utilizza la FAT o l'MFT per tenere traccia della posizione di ogni parte del file sulla memoria. In questo modo, quando si apre un file, il sistema operativo può riunire tutte le sue parti.

Quando si cancella un file questo non viene in realtà rimosso dall'hard disk; viene rimosso il suo riferimento nella struttura del file system e lo spazio occupato dal file viene classificato come spazio non allocato. Proprio sullo spazio non allocato in un sistema di storage (hard disk, pendrive, ecc) si applica il data carving per recuperare i file e catalogarli sulla base del loro header e footer (stringhe esadecimali all'inizio e fine del file). Per il riconoscimento del tipo di file si ricorre al database dei magic number (firme esadecimali). Il magic number è costituito da una serie di byte specifici (da 2 a 10 byte) solitamente posizionati all'inizio del file, che vengono utilizzati per identificarne il tipo. Ad esempio, un file JPEG avrà un magic number specifico (FF D8 FF EE) diverso da un file PNG (89 50 4E 47). Quasi tutti i formati di file sono identificati da un magic number

Data carving con Scalpel

Uno degli strumenti più utilizzati e molto apprezzato per il data carving è Scalpel (https://github.com/machn1k/Scalpel-2.0). Tale strumento è già presente in Kali Linux. Per installarlo su distribuzioni Linux derivanti da Debian è possibile utilizzare i seguenti comandi da terminale
sudo apt-get update
sudo apt-get install scalpel

Prima di avviare lo strumento è necessario andare a modificare il file di configurazione /etc/scalpel/scalpel.conf che ha tutte le righe commentate. In base alla tipologia di file che si intende recuperare è necessario andare a rimuovere il commento dalla relativa riga. 

Aprire il file di configurazione con un editor di testo. In Kali Linux è possibile utilizzare l'editor nano con il comando da terminale
sudo nano /etc/scalpel/scalpel.conf

Per recuperare un file PDF eliminato da una pendrive è necessario andare a rimuovere i commenti relativi ai tipi di file PDF (FIG 1) presenti nel file di configurazione. 
File di configurazione scalpel.conf
FIG 1 - File di configurazione scalpel.conf

Premere CTRL + X per uscire dall'editor e confermare la modifica premendo Y seguito da Invio.
Salva modifica del  file di configurazione
FIG 2 - Salva modifica del  file di configurazione


La sintassi di scalpel è la seguente
scalpel -c fileconfig.conf unità -o /percorso/file/output

Il percorso dell'output deve risiedere su un unità diversa da quella da cui si sta tentando di recuperare i dati. Per identificare la pendrive eseguire il comando
lsblk 
lsblk
FIG 3 - lsblk

Dalla FIG 3 si evince che la pendrive è stata montata come sdb1. Eseguire una finestra terminale come root ed avviare il data carving con il comando
scalpel -c /etc/scalpel/scalpel.conf /dev/sdb1 -o /home/kali/Desktop/Recover
Avvio data carving con scalpel
FIG 4 - Avvio data carving con scalpel
Il comando creerà una cartella Recover sul Desktop contenente un file audit.txt (in cui saranno elencati eventuali file recuperati e altre informazioni sul processo) e una cartella contenente i file recuperati.
Risultati del data carving di scalpel
FIG 5 - Risultati del data carving di scalpel

File audit.txt
FIG 6 - File audit.txt

File recuperati da scalpel
FIG 7 - File recuperati da scalpel


Scalpel consente di effettuare il data carving anche su immagini di dischi virtuali (VDI, Virtual Disk Image) di VirtualBox. In questo caso il comando da eseguire sarà del tipo
scalpel -c /etc/scalpel/scalpel.conf /percorso/Immagine/file.vdi -o /home/kali/Desktop/Recover




giovedì 9 febbraio 2023

Linux: Installazione Debian 11 (Graphical Install)

L'installazione di gran parte delle distribuzioni Linux è stata notevolmente semplificata nel corso degli anni e l'installazione è ormai alla portata anche degli utenti meno esperti. In questo articolo verranno mostrati i passi per l'installazione della distribuzione Debian su un nuovo PC.

Il primo passo consiste nel procurarsi l'immagine ISO dal sito ufficiale (www.debian.org). É possibile scegliere tra diverse versioni a seconda del proprio sistema (x86, x64, arm, ecc), versioni complete, versioni base, per installazione tramite rete, ecc. Per questo articolo è stato eseguito il download della versione debian-11.6.0-amd64-DVD-1.iso da https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/.
Una volta scaricata l'immagine ISO è possibile masterizzarla su DVD o creare un supporto USB avviabile utilizzando strumenti di terze parti come RUFUS, Balena Etcher o Ventoy.
Terminata la preparazione, basterà avviare il sistema dal supporto appena creato per avviare l'installazione di Debian

Nella prima schermata apparirà il menu di installazione da cui sarà possibile selezionare diversi tipi di installazione e opzioni. Lasciare selezionata la Graphical Install e premere Invio per proseguire.
Installer menu
FIG 1 - Installer menu

Selezionare la lingua da utilizzare nella fase di installazione del sistema e cliccare su Continue. Per l'installazione è stata selezionata la lingua italiana. 
Seleziona Lingua da utilizzare durante l'installazione
FIG 2 - Seleziona Lingua da utilizzare durante l'installazione

Un messaggio ci avvisa che la traduzione del programma di installazione nella lingua selezionata (italiano) è incompleta e alcuni testi potrebbero essere visualizzati in inglese. Ci viene chiesto se desideriamo proseguire comunque con la lingua selezionata. Rispondere affermativamente selezionando e cliccando su Continua.
Traduzione incompleta
FIG 3 - Traduzione incompleta
Nella schermata Selezionare la posizione, viene chiesto di selezionare il Paese che verrà usato per impostare la lingua e il fuso orario all'interno del sistema. Selezionare Italia e cliccare su Continua.
Seleziona Paese
FIG 4 - Seleziona Paese

Selezionare la tastiera Italiana e proseguire cliccando sul pulsante Continua.
Configurazione tastiera
FIG 5 - Configurazione tastiera
A questo punto il programma di installazione tenta di contattare un server DHCP per la configurazione automatica delle impostazioni di rete. Nel caso in cui il server DHCP non venga rilevato, verrà mostrata la finestra presente in FIG 6. Cliccare su Continua per procedere con la configurazione della rete.
Configurare la rete
FIG 6 - Configurare la rete

Nella schermata successiva vengono proposte diverse opzioni per la configurazione della rete:
  • Riprovare configurazione automatica della rete
    Tenta nuovamente di contattare un server DHCP.
  • Riprovare configurazione automatica della rete con nome host DHCP
    Permette di specificare il nome host di un server DHCP da contattare per la configurazione automatica della rete.
  • Configurare la rete manualmente
    Consente di procedere alla configurazione manuale della rete.
  • Non configurare la rete in questo momento
    Prosegue con l'installazione del sistema operativo senza configurare la rete.
Selezionare Configurare la rete manualmente e cliccare su Continua.
Opzioni per la configurazione della rete
FIG 7 - Opzioni per la configurazione della rete
Nell'apposita casella, digitare l'indirizzo IP da assegnare alla macchina e cliccare su Continua.
Configurazione indirizzo IP
FIG 8 - Configurazione indirizzo IP
Di default verrà proposta la subnet mask (maschera di rete) 255.255.255.0 che fa al caso nostro. Confermare la configurazione cliccando su Continua.
Subnet mask
FIG 9 - Subnet mask
Nel passo successivo ci viene richiesto di specificare l'indirizzo IP del gateway. Il gateway è un router, o un altro dispositivo con funzionalità di routing dei pacchetti dati, che collega la LAN con l'esterno. Specificare, nell'apposita casella, l'indirizzo IP e proseguire con la configurazione della rete cliccando su Continua.
Configurazione Gateway
FIG 10 - Configurazione Gateway
La configurazione della rete continua con l'indicazione dei server DNS da utilizzare per la risoluzione dei nomi. I server DNS vanno indicati specificando il loro indirizzo IP. É possibile specificare fino a 3 server DNS separati da spazi. In figura è stato inserito il DNS di Google con l'IP 8.8.8.8. Se non si intende configurare un server DNS basta lasciare il campo vuoto. Cliccare sempre sul pulsante Continua per proseguire.
Server DNS
FIG 11 - Server DNS
Specificare il nome host che si intende attribuire al sistema. Il nome host è un nome con cui il sistema viene identificato in rete. Cliccare su Continua.
Nome Host
FIG 12 - Nome Host
Il nome del dominio è la parte dell'indirizzo Internet a destra del nome del proprio host e termina con .com, .net, .edu, ecc. In una rete domestica è possibile usare un nome qualsiasi purché sia uguale in tutti i computer della rete. Cliccare su Continua per continuare.
Nome del dominio
FIG 13 - Nome del dominio
Specificare la password da assegnare all'utente root. Trattandosi di un utenza utilizzata per amministrare il sistema, la password va scelta con attenzione. Digitare la password all'interno delle apposite caselle e cliccare su Continua.
Password di root
FIG 14 - Password di root
In questa fase verrà creato un nuovo account da utilizzare per le normali attività (a differenza dell'account di root). Ci viene chiesto di inserire il nome completo del nuovo utente (ad es. Nome e Cognome). Digitare il nome desiderato e cliccare su Continua.
Impostazione utenti e password
FIG 15 - Impostazione utenti e password
Nella fase successiva viene richiesto il nome da assegnare all'account. Digitare il nome all'interno della casella e cliccare su Continua.
Nome utente per l'account
FIG 16 - Nome utente per l'account
Specificare la password da assegnare al nuovo account utente quindi cliccare su Continua.
Password account utente
FIG 17 - Password account utente
In questa fase il programma di installazione di guida per il partizionamento dei dischi. Trattandosi di un PC nuovo in cui non vi sono installati altri sistemi operativi, selezioniamo l'opzione Guidato - usa l'intero disco e clicchiamo su Continua.
Partizionamento dei dischi
FIG 18 - Partizionamento dei dischi
Selezionare il disco da partizionare e cliccare su Continua. La procedura ci avvisa che i dati presenti sul disco selezionato saranno eliminati una volta confermata l'applicazione delle modifiche.
Selezione disco da partizionare
FIG 19 - Selezione disco da partizionare
Il disco può essere partizionato usando diversi schemi. Lasciare selezionato lo schema proposto Tutti i file in una partizione (per nuovi utenti) e cliccare su Continua.
Schema di partizionamento
FIG 20 - Schema di partizionamento
Viene visualizzata l'anteprima delle partizioni. Selezionare Terminare il partizionamento e scrivere le modifiche sul disco quindi proseguire cliccando su Continua.
Anteprima partizioni
FIG 21 - Anteprima partizioni
Viene presentato un resoconto delle modifiche che verranno applicate ai dischi e ci viene chiesto se intendiamo scrivere tali modifiche sui dischi e renderle effettive. Selezionare e cliccare su Continua per avviare l'installazione del sistema di base.
Conferma scrittura modifiche su disco
FIG 22 - Conferma scrittura modifiche su disco

Installazione sistema di base
FIG 23 - Installazione sistema di base
Se abbiamo scaricato un'insieme di supporti per l'installazione è possibile analizzarli prima di utilizzarli. Avendo scaricato l'immagine ISO di un singolo supporto, lasciare selezionato No e cliccare su Continua.
Configurazione gestore pacchetti
FIG 24 - Configurazione gestore pacchetti
É possibile indicare un mirror di rete come supplemento al software incluso nel supporto di installazione. In questo modo è possibile installare, se disponibili, versioni più aggiornate del software. Lasciare selezionato No e cliccare su Continua.
Mirror di rete
FIG 25 - Mirror di rete
nn
Raccolta dati sull'uso dei pacchetti
FIG 26 - Raccolta dati sull'uso dei pacchetti
Lasciare selezionati i software proposti e cliccare su Continua per avviare la loro installazione..
Selezione del software
FIG 27 - Selezione del software

Installazione del software
FIG 28 - Installazione del software
Installare il boot loader GRUB. Nel caso in cui Debian sia l'unico sistema operativo installato nel sistema, è buona norma installare il boot loader GRUB sul disco primario. Selezionare Si e cliccare su Continua.
Installazione GRUB
FIG 29 - Installazione GRUB
Selezionare il device su cui installare il boot loader GRUB per rendere avviabile il nuovo sistema installato e cliccare su Continua.
Device per l'installazione di GRUB
FIG 30 - Device per l'installazione di GRUB

L'installazione è completata, rimuovere il supporto utilizzato per l'installazione e cliccare su Continua per riavviare il sistema e avviare Debian.
Installazione completata
FIG 31 - Installazione completata