Comandi Linux di base per la sicurezza informatica
Quasi tutti i server, i router e gli strumenti di sicurezza girano su Linux, e quasi tutte le sfide CTF cominciano da una shell. Bastano una dozzina di comandi per muoversi con sicurezza, leggere un registro, cercare un file e capire chi può fare cosa: sono gli stessi che usa chi difende un sistema per controllarlo.
I comandi per muoversi e leggere
| Comando | A cosa serve | Esempio |
|---|---|---|
pwd | mostra la cartella in cui ti trovi | pwd |
ls | elenca i file; -l mostra permessi e proprietari, -a anche i file nascosti | ls -la |
cd | cambia cartella (.. sale di un livello, ~ va alla tua home) | cd /var/log |
cat | stampa il contenuto di un file | cat nota.txt |
head / tail | le prime o le ultime righe di un file; con -n scegli quante | tail -n 20 auth.log |
wc -l | conta le righe | wc -l auth.log |
I comandi per cercare
grepcerca un testo dentro i file:-iignora maiuscole e minuscole,-nmostra il numero di riga,-rentra nelle cartelle.findcerca i file per nome, tipo o permessi:find . -name "*.conf"trova tutti i file di configurazione sotto la cartella corrente.sort,uniq -c,cuteawkordinano, contano ed estraggono le colonne di un testo.
La pipe: un esempio concreto per unire i comandi
Il simbolo | (pipe) passa l'output di un comando come input del successivo, ed è lo strumento più potente della shell. Un esempio concreto: in un registro di accesso a un server ci sono molte righe con i tentativi falliti, e vuoi sapere quali indirizzi insistono di più.
$ grep "Failed password" auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -3
214 203.0.113.50
17 198.51.100.7
3 192.0.2.20
Il comando cerca le righe dei login falliti, ne estrae il campo con l'indirizzo (nei registri di SSH è sempre quattro campi prima della fine della riga), ordina, conta i duplicati, ordina dal più frequente e mostra i primi tre. In un colpo d'occhio si vede che un indirizzo ha provato 214 volte: un candidato da bloccare. (Gli indirizzi dell'esempio sono quelli riservati alla documentazione.)
Permessi e proprietari
Con ls -l vedi righe come -rw-r----- 1 anna sviluppo 1204 ott 5 chiavi.txt. Le prime dieci lettere dicono tutto: il primo carattere è il tipo (- file, d cartella), poi tre gruppi da tre per il proprietario, il gruppo e tutti gli altri. r è lettura, w scrittura, x esecuzione. Qui il proprietario legge e scrive, il gruppo legge e gli altri non possono fare nulla. Se un file con dati sensibili avesse rw-rw-rw-, chiunque potrebbe leggerlo e modificarlo.
Come ci si difende: usare i comandi per controllare il proprio sistema
- Controlla i permessi:
ls -lsu chiavi, file di configurazione e backup. Chiavi private e password non devono essere leggibili da tutti. - Cerca i segreti dimenticati:
grep -rn "password" /percorso/dell/apptrova credenziali scritte in chiaro nei file di configurazione, che vanno spostate in un gestore di segreti. - Guarda la cronologia:
historypuò mostrare una password digitata per errore sulla riga di comando, che finisce nella cronologia e va cambiata. - Verifica chi può fare cosa:
idmostra utente e gruppi,sudo -lquali comandi puoi lanciare con privilegi elevati. Leggi la guida al privilegio minimo. - Leggi i registri con
tail,grepe le pipe, come nella guida ai log di accesso.
La pratica vale più della teoria: i laboratori del percorso «Fondamenti Linux» di PurpleDuel sono pensati per farti usare questi comandi uno alla volta, in un sistema simulato dove non puoi rompere nulla.