Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Mettere in sicurezza una workstation Linux

Dalle password di Grub alla protezione dal fork bomb: come mettere in sicurezza una workstation Linux
Dalle password di Grub alla protezione dal fork bomb: come mettere in sicurezza una workstation Linux
Link copiato negli appunti

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 ci mostra i file contenuti nella suddetta directory:

 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 << EOF
 set 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 si intendono tutte le stringhe che possono essere comprese tra la parola chiave menuentry e la parentesi graffa. Modifichiamo tutte queste stringhe come segue:

menuentry VARIE –users USERNAME {

Fatte queste modifiche, non resta che aggiornare GRUB 2 con il comando seguente:

update-grub2

Richiesta di password su GRUB 2

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. La soluzione vista, dunque, può andare bene solo per limitare l’accesso ad un PC, ma senza troppe pretese.

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:

sudo gedit /etc/fstab

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, e che essa sia formattata in ext3. La parola chiave noexec è quella che garantisce la non eseguibilità degli script in questa directory.

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, che può generare un rallentamento del sistema non indifferente. In realtà la maggior parte dei sistemi operativi include già diversi meccanismi di protezione da questo tipo di attacchi, ma è comunque possibile prevenirli.

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), si arresta, rilasciando le risorse precedentemente occupate. Il file che ci viene in aiuto è reperibile in /etc/security/limits.conf. Apriamo ancora una volta questo file con i privilegi di amministratore:

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 sono sufficienti a comprendere la sintassi necessaria; per questo motivo, non scendiamo ulteriormente nei dettagli.

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:

sudo less /var/log/messages
sudo ps aux
sudo netstat -anp

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 e 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 ed utenti molto semplici (come date di nascita o nomi e cognomi), in modo da impedire agli attaccanti di carpire tali credenziali. Se per qualche strana ragione è necessario mantenere questo tipo di account, potrebbe essere utile modificare la shell di login dell’utente in questione, con il comando seguente.

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.

Ti consigliamo anche