Una workstation, indipendentemente dall’ambito per la quale viene utilizzata, necessita nella quasi totalità dei casi di essere messa in sicurezza. Questo concetto si riferisce alla costante (se non crescente) frequenza alla quale avvengono attacchi da parte di malintenzionati, che possono causare danni non indifferenti.
In questo articolo vedremo alcuni accorgimenti che possono risultare utili al fine di incrementare il livello di sicurezza di un PC dotato di un sistema operativo Linux. Vedremo come impostare una password che impedisca l’accesso al sistema (sfruttando una funzionalità di GRUB 2), nonchè alcuni suggerimenti che possono risultare utili per prevenire alcuni tipici attacchi.
Impostare una password su GRUB 2
Come abbiamo visto in molti dei nostri precedenti articoli, dopo l’installazione delle distribuzioni più comuni, quasi tutti i fornitori hanno scelto di adoperare il boot loader GRUB 2, successore di GRUB Legacy, stabile, robusto e facilmente gestibile. Tra le svariate funzionalità che vi sono incluse, questo boot loader consente anche di impostare una password prima della scelta del sistema operativo da avviare. Di conseguenza, la scelta di accedere al sistema dopo avere inserito una password può garantire un livello aggiuntivo di protezione a diversi sistemi operativi, nei casi di PC che ne hanno più di uno.
Per prima cosa, apriamo il terminale, e spostiamoci nella cartella contenente i file di configurazione di GRUB 2 (per maggiori dettagli, si rimanda ad un nostro precedente articolo):
cd /etc/grub.d
Nel sistema utilizzato per i test di questo articolo, il comando ls
00_header 10_linux 20_linux_xen 20_ppc_terminfo 30_os-prober 40_custom 41_custom 90_persistent README
Ognuno dei file che iniziano con una coppia di numeri, si riferiscono ad alcuni sistemi operative installati o ad alcune sezioni di GRUB. Essi contengono degli script necessari per la generazione del codice di GRUB 2 ogni volta che viene eseguito il comando update-grub2
Per prima cosa, quindi, dobbiamo specificare che vogliamo utilizzare un nome utente ed una password per l’accesso. Per farlo, apriamo (con i permessi di amministratore) il file 00_header
sudo gedit 00_header
A questo punto, aggiungiamo in coda al file il seguente codice:
cat << EOFset superusers="USERNAME"
password USERNAME PASSWORD
EOF
Qui, come si intuisce, USERNAME e PASSWORD sono le credenziali che verranno usate per l’accesso ai sistemi operative.
Fatto ciò, apriamo ad uno ad uno i file contenenti le entry relative ai sistemi Linux installati, e cerchiamo in ciascuno di essi tutte le righe simili a questa:
menuentry VARIE {
Per VARIE menuentry
menuentry VARIE –users USERNAME {
Fatte queste modifiche, non resta che aggiornare GRUB 2 con il comando seguente:
update-grub2
Il problema principale di questo processo è che chiunque abbia accesso al file 00_header potrebbe leggere la password, in quanto essa viene memorizzata in chiaro
Vale la pena di notare, inoltre, che, sebbene non scenderemo ulteriormente nel dettaglio in questa sede, sarebbe possibile utilizzare pù utenti, associando ciascuno di essi (o più di uno) ad un diverso sistema operativo.
Neutralizzare gli attacchi basati su /tmp
Molti script semplici utilizzano come directory di “comodo” /tmp, nella quale essi sono posizionati (ad esempio dopo un download) e poi eseguiti. Una buona prassi, dunque, è quella di montare tale directory su una apposita partizione, e renderla non eseguibile. Ciò neutralizza tutti gli attacchi basati su tale directory. Per attuare questa strategia, è sufficiente modificare, con i privilegi di amminstratori, il file /etc/fstab, ad esempio con gedit:
Una volta aperto, basta aggiungere in coda al file la seguente riga:
/dev/sda2 /tmp ext3 noatime,noexec 0 0
Qui si suppone che la partizione sia /dev/sda2 ext3 noexec
Proteggersi dalle fork bomb
Alcuni programmatori che conoscono lo shell scripting, probabilmente sanno che è semplicissimo creare delle fork bomb, con una stringa quasi incomprensibile, che è la seguente:
Una fork bomb è uno script che crea un processo che, a sua volta, ne crea altri, duplicandosi. In breve tempo, questo causa un forte sovraccarico di memoria
Esiste un file, sui sitemi Linux, che è in grado di limitare il massimo numero di processi per utente. Inserire una limitazione può essere utile ad evitare un attacco di questo tipo, anche perchè lo script precedente, quando non può più duplicare processi (operazione conosciuta come fork /etc/security/limits.conf
sudo gedit /etc/security/limits.conf
Adesso aggiungiamo, in coda al file, le seguenti due linee:
@GRUPPO soft nproc 100 @GRUPPO hard nproc 150
Questo accorgimento avvisa tutti gli utenti del gruppo GRUPPO quando si raggiungono i 100 processi in esecuzione con un avviso, mentre limita a 150 il numero massimo di processi per gli utenti del GRUPPO. Le limitazioni possono, in realtà, essere modificate mediante stringhe diverse. I commenti del file limits.conf
Altri accorgimenti generali
È comunque fondamentale seguire alcune regole di condotta che giocano un ruolo fondamentale nella protezione da attacchi di ogni genere. Possiamo riassumerle qui di seguito:
Mantenere sempre il sistema aggiornato, e soprattutto installare sempre gli aggiornamenti di sicurezza. Molte distribuzioni, inoltre, forniscono alcune mailing list riguardanti la sicurezza del sistema operativo, e sarebbe buona norma iscriversi ad esse.
Monitorare costantemente gli output dei seguenti comandi:
Il primo comando mostra il log di sistema, il secondo i processi in esecuzione ed il terzo tutte le connessioni attive. È bene, dunque, controllare (per quanto possibile) che le uscite di questi comandi siano quelle attese.
Evitare il più possibile l’utilizzo di su sudo , ed in generale fare in modo che solo i processi strettamente necessari vengano eseguiti con i privilegi di amministratore.
Evitare l’utilizzo di password
sudo chsh -s /bin/false USERNAME
Ciò, ovviamente, impedisce anche il login mediante interfaccia grafica, ma in alcune situazioni può essere accettabile questo tipo di scelta.