Linux hardening steps for starter

La maggior parte dei sistemi ha dati riservati che devono essere protetti. Per salvaguardare questi dati, abbiamo bisogno di proteggere il nostro sistema Linux. Ma come indurire correttamente un sistema Linux? In questo articolo, tratteremo questo passo dopo passo. Iniziamo con misure di sicurezza fisica per impedire a persone non autorizzate di accedere al sistema in primo luogo. Avanti sta facendo l’installazione nel modo giusto, quindi abbiamo una solida base. Infine, applicheremo una serie di misure di sicurezza comuni. Dopo che abbiamo finito, il tuo server o sistema desktop dovrebbe essere protetto meglio. Sei pronto? Procediamo con i primi passi!

Indice

Linux è già sicuro per impostazione predefinita, giusto?

Uno dei miti su Linux è che è sicuro, in quanto non è suscettibile di virus o altre forme di malware. Questo è parzialmente vero, poiché Linux utilizza le basi del sistema operativo UNIX originale. I processi sono separati e un utente normale è limitato in ciò che lui o lei può fare sul sistema. Tuttavia, Linux non è perfettamente sicuro per impostazione predefinita. Uno dei motivi sono le distribuzioni Linux che confezionano il kernel GNU/Linux e il relativo software. Devono scegliere tra usabilità, prestazioni e sicurezza.

Con le scelte difficili che le distribuzioni Linux devono fare, si può essere sicuri di compromessi. Questi compromessi in genere si traducono in un livello di sicurezza ridotto. Che dire di malware per Linux? Questo è sicuramente un mito. La piattaforma Linux ha anche la sua giusta quota di backdoor, rootkit, opere, e anche ransomware. Questo è uno dei motivi per cui è importante eseguire l’indurimento del sistema, il controllo della sicurezza e il controllo della conformità con le linee guida tecniche.

Immagine di elementi rilevanti per l'indurimento, il controllo e la conformità del sistema Linux.

Ci sono molti aspetti della sicurezza di Linux, tra cui Linux system hardening, auditing e compliance.

Che cos’è l’indurimento del sistema?

Per migliorare il livello di sicurezza di un sistema, adottiamo diversi tipi di misure. Questo potrebbe essere la rimozione di un servizio di sistema esistente o disinstallare alcuni componenti software.

L’indurimento del sistema è il processo di fare le cose “giuste”. L’obiettivo è migliorare il livello di sicurezza del sistema. Ci sono molti aspetti per proteggere correttamente un sistema. Eppure, le basi sono simili per la maggior parte dei sistemi operativi. Quindi il processo di indurimento del sistema per desktop e server Linux è così speciale.

Principi fondamentali dell’indurimento del sistema

Se applicassimo un microscopio sull’indurimento del sistema, potremmo suddividere il processo in alcuni principi fondamentali. Questi includono il principio del minimo privilegio, segmentazione e riduzione.

Principe di meno privilegio

Il principio di meno privilegi significa che si dà agli utenti e processi il minimo indispensabile di autorizzazione per fare il loro lavoro. È simile a concedere a un visitatore l’accesso a un edificio. Si potrebbe dare pieno accesso all’edificio, comprese tutte le aree sensibili. L’altra opzione è quella di consentire solo ai tuoi ospiti di accedere a un unico piano dove devono essere. La scelta è facile, giusto?

Esempi:

  • Quando l’accesso in sola lettura è abbastanza, non dare i permessi di scrittura
  • non consentire codice eseguibile in aree di memoria che sono contrassegnati come segmenti di dati
  • non eseguire applicazioni come utente root, invece di utilizzare un account utente non privilegiato

Segmentazione

La prossima principio è quello di dividere le aree più grandi a quelli più piccoli. Se guardiamo di nuovo quell’edificio, lo abbiamo diviso in più piani. Ogni piano può essere ulteriormente suddiviso in diverse zone. Forse si visitatore è consentito solo al piano 4, nella zona blu. Se lo traduciamo in sicurezza Linux, questo principio si applicherebbe all’utilizzo della memoria. Ogni processo può accedere solo ai propri segmenti di memoria.

Riduzione

Questo principio mira a rimuovere qualcosa che non è strettamente necessario per il funzionamento del sistema. Sembra il principio del minimo privilegio, ma si concentra sulla prevenzione di qualcosa in primo luogo. Un processo che non deve essere eseguito, dovrebbe essere fermato. Simile per gli account utente non necessari o i dati sensibili che non vengono più utilizzati.

hardening del Sistema passi

Panoramica di indurimento passi

  1. Installare gli aggiornamenti di sicurezza e patch
  2. Utilizzare password complesse
  3. Bind processi di localhost
  4. Implementare un firewall
  5. Mantenere le cose pulite
  6. configurazioni di Sicurezza
  7. Limitare l’accesso
  8. Monitorare il sistema
  9. Creare copie di backup (e i test!)
  10. Eseguire il controllo del sistema

1. Installa aggiornamenti e patch di sicurezza

La maggior parte dei punti deboli nei sistemi sono causati da difetti nel software. Questi difetti che chiamiamo vulnerabilità. La cura adeguata per la gestione delle patch software aiuta a ridurre molti dei rischi correlati. L’attività di installazione degli aggiornamenti ha spesso un basso rischio, soprattutto quando si inizia con le patch di sicurezza prima. La maggior parte delle distribuzioni Linux ha la possibilità di limitare i pacchetti che si desidera aggiornare (tutti, solo sicurezza, per pacchetto). Assicurati che gli aggiornamenti di sicurezza siano installati non appena disponibili. Va da sé, prima di implementare qualcosa, testarlo prima su un sistema di test (virtuale).

A seconda della distribuzione Linux potrebbe esserci un modo per implementare automaticamente le patch di sicurezza, come gli aggiornamenti non presidiati su Debian e Ubuntu. Questo rende la gestione delle patch software molto più facile!

2. Utilizzare password complesse

Il gateway principale per un sistema avviene accedendo come utente valido con la relativa password di quell’account. Password complesse rendono più difficile per gli strumenti indovinare la password e lasciare che i malintenzionati entrino dalla porta d’ingresso. Una password complessa è composta da una varietà di caratteri (alfanumerici, numeri, speciali come percentuale, spazio o persino caratteri Unicode).

3. Associare i processi a localhost

Non tutti i servizi devono essere disponibili tramite la rete. Ad esempio, quando si esegue un’istanza locale di MySQL sul server Web, lasciarla ascoltare solo su un socket locale o associare a localhost (127.0.0.1). Quindi configurare l’applicazione per la connessione tramite questo indirizzo locale, che in genere è già l’impostazione predefinita.

4. Implementare un firewall

Solo il traffico consentito dovrebbe raggiungere il sistema in una situazione ideale. Per raggiungere questo obiettivo, implementare una soluzione firewall come iptables, o il più recente nftables.

Quando si crea un criterio per il firewall, considerare l’utilizzo di un criterio “nega tutto, consenti alcuni”. Quindi neghi tutto il traffico per impostazione predefinita, quindi definisci il tipo di traffico che vuoi consentire. Ciò è particolarmente utile per il traffico in entrata, per impedire la condivisione di servizi che non intendevi condividere.

Letture utili:

  • Differenze tra iptables e nftables

5. Mantieni le cose pulite

Tutto ciò che è installato su un sistema che non ci appartiene può solo avere un impatto negativo sulla tua macchina. Sarà anche aumentare i backup (e tempi di ripristino). Oppure potrebbero contenere vulnerabilità. Un sistema pulito è spesso un sistema più sano e sicuro. Pertanto la minimalizzazione è un ottimo metodo nel processo di indurimento di Linux.

Le attività attuabili includono:

  • Elimina il pacchetto inutilizzato
  • Pulisci le vecchie directory home e rimuovi gli utenti

6. Configurazioni sicure

La maggior parte delle applicazioni dispone di una o più misure di sicurezza disponibili per proteggere da alcune forme di minacce al software o al sistema. Guarda la pagina man per qualsiasi opzione e prova attentamente queste opzioni.

7. Limitare l’accesso

Consentire l’accesso alla macchina solo agli utenti autorizzati. Qualcuno ha davvero bisogno di accedere o sono possibili metodi alternativi per dare all’utente ciò che vuole?

8. Monitorare i sistemi

La maggior parte delle intrusioni non vengono rilevate, a causa della mancanza di monitoraggio. Implementare il normale monitoraggio del sistema e implementare il monitoraggio sugli eventi di sicurezza. Ad esempio, l’uso di Linux audit framework ha aumentato i tassi di rilevamento di eventi sospetti.

9. Crea backup (e prova!)

Effettua regolarmente un backup dei dati di sistema. Questo può prevenire la perdita di dati. Ancora più importante, prova i tuoi backup. Avere un backup è bello, ma è il ripristino che conta davvero!

I backup possono essere eseguiti con strumenti di sistema esistenti come tar e scp. Un’altra opzione per risparmiare larghezza di banda è la sincronizzazione dei dati con strumenti come rsync. Se invece si desidera utilizzare un programma di backup, prendere in considerazione Amanda o Bacula.

10. Eseguire il controllo di sistema

Lynis (Linux/Unix auditing tool) screenshot

Screenshot di un controllo di sicurezza del server Linux eseguito con Lynis.

Non è possibile proteggere correttamente un sistema se non lo si misura.

Utilizzare uno strumento di sicurezza come Lynis per eseguire un controllo regolare del sistema. Tutti i risultati sono mostrati sullo schermo e anche memorizzati in un file di dati per ulteriori analisi. Con un ampio file di registro, consente di utilizzare tutti i dati disponibili e pianificare le azioni successive per un ulteriore indurimento del sistema.