Linux hardening: una lista di controllo in 15 passaggi per un server Linux sicuro

Gus Khawaja

La maggior parte delle persone presume che Linux sia sicuro, e questa è una falsa ipotesi. Immagina che il tuo laptop venga rubato senza prima essere indurito. Un ladro probabilmente assumerebbe che il tuo nome utente sia ” root “e la tua password sia” toor ” poiché questa è la password predefinita su Kali e la maggior parte delle persone continua a usarla. E tu? Spero di no.

Le implicazioni negative per la carriera della scelta di non indurire il tuo host Kali Linux sono gravi, quindi condividerò i passaggi necessari per rendere sicuro il tuo host Linux, incluso il modo in cui uso il test di penetrazione e Kali Linux per portare a termine il lavoro. È importante notare che, mentre sono molte distribuzioni (AKA distribuzioni) di Linux e ognuna differisce dalla prospettiva della riga di comando, la logica è la stessa. Utilizzare i seguenti suggerimenti per indurire la propria casella di Linux.

1-Documentare le informazioni sull’host

Ogni volta che si lavora su un nuovo lavoro di hardening di Linux, è necessario creare un nuovo documento con tutti gli elementi della lista di controllo elencati in questo post e selezionare ogni elemento applicato. Inoltre, nella parte superiore del documento, è necessario includere le informazioni sull’host Linux:

  • Nome macchina
  • Indirizzo IP
  • Indirizzo Mac
  • Nome della persona che sta eseguendo l’indurimento (molto probabilmente tu)
  • Data
  • Numero di asset (Se lavori per un’azienda, devi includere il numero di asset utilizzato dall’azienda per taggare gli host.)

2-Protezione BIOS

È necessario proteggere il BIOS dell’host con una password in modo che l’utente finale non sia in grado di modificare e sovrascrivere le impostazioni di sicurezza nel BIOS; è importante mantenere quest’area protetta da eventuali modifiche. Ogni produttore di computer ha un diverso set di chiavi per accedere alla modalità BIOS, quindi si tratta di trovare la configurazione in cui si imposta la password amministrativa.

Successivamente, è necessario disabilitare l’avvio da dispositivi multimediali esterni (USB/CD/DVD). Se si omette di modificare questa impostazione, chiunque può utilizzare una chiavetta USB che contiene un sistema operativo avviabile e può accedere ai dati del sistema operativo.

+ Vuoi saperne di più su Linux? Scopri di più con Pluralsight, una piattaforma di apprendimento tecnologico. Imparare Linux ora. +

Le schede madri dei server più recenti hanno un server web interno dove è possibile accedervi da remoto. Assicurati di cambiare la password predefinita della pagina di amministrazione o disabilitarla se è possibile.

3-Crittografia del disco rigido (riservatezza)

La maggior parte delle distribuzioni Linux vi permetterà di crittografare i dischi prima dell’installazione. La crittografia del disco è importante in caso di furto perché la persona che ha rubato il computer non sarà in grado di leggere i dati se si collega il disco rigido alla propria macchina.

Nell’immagine qui sotto, scegliere la terza opzione dalla lista: Guidato-utilizzare l’intero disco e impostare LVM crittografato (LVM sta per logical volume manager.)

Se la tua distribuzione Linux non supporta la crittografia, puoi usare un software come TrueCrypt.

4-Protezione disco (disponibilità)

I backup hanno tanti vantaggi in caso di un sistema danneggiato, bug nell’aggiornamento del sistema operativo. Per i server importanti, il backup deve essere trasferito fuori sede in caso di disastro. Anche il backup deve essere gestito. Ad esempio, per quanto tempo conserverai i vecchi backup? Quando è necessario eseguire il backup del sistema (ogni giorno, ogni settimana …)?

sistemi Critici dovrebbe essere suddiviso in partizioni diverse per:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

Porzionatura dischi ti dà l’opportunità di performance e di sicurezza in caso di un errore di sistema. Nell’immagine qui sotto, puoi vedere l’opzione su come separare le partizioni in Kali Linux durante l’installazione.

5-Blocca la directory di avvio

La directory di avvio contiene file importanti relativi al kernel Linux, quindi è necessario assicurarsi che questa directory sia bloccata per le autorizzazioni di sola lettura seguendo i semplici passaggi successivi. Innanzitutto, apri il file “fstab”.

Quindi, aggiungi l’ultima riga evidenziata in basso.

Al termine della modifica del file, è necessario impostare il proprietario eseguendo il seguente comando:

#chown root:root /etc/fstab

Successivamente, ho impostato alcune autorizzazioni per proteggere le impostazioni di avvio:

  • Imposta il proprietario e il gruppo di /etc/grub.conf all’utente root:

#chown root:root /etc/grub.conf

  • Imposta il permesso su / etc / grub.conf file in lettura e scrittura solo per root.:

#chmod og-rwx /etc/grub.conf

  • Richiedono l’autenticazione per la modalità utente singolo:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Disabilitare l’utilizzo della USB

a Seconda di come critico il tuo sistema, a volte è necessario disattivare le chiavette USB per l’utilizzo su host Linux. Ci sono diversi modi per negare l’utilizzo di archiviazione USB; ecco un popolare:

Apri la ” lista nera.conf ” file utilizzando il vostro editor di testo preferito:

#nano /etc/modprobe.d/blacklist.conf

Quando il file si apre, aggiungere la seguente riga alla fine del file (salva e chiudi):

blacklist usb_storage

Dopo questo, apri l’rc.file locale:

#nano /etc/rc.local

Infine, aggiungere le seguenti due righe:

modprobe -r usb_storage

exit 0

7-aggiornamento del Sistema

La prima cosa da fare dopo il primo avvio è aggiornare il sistema; questo dovrebbe essere un passo facile. Generalmente, si apre la finestra del terminale ed esegue i comandi appropriati. In Kali Linux, si ottiene questo eseguendo i comandi nella foto qui sotto:

8-Controlla i pacchetti installati

Elenca tutti i pacchetti installati sul tuo sistema operativo Linux e rimuovi quelli non necessari. Devi essere molto severo se l’host che stai cercando di indurire è un server perché i server hanno bisogno del minor numero di applicazioni e servizi installati su di essi. Ecco un esempio di come elencare i pacchetti installati su Kali Linux:

Ricordate che, disabilitando i servizi inutili di ridurre la superficie di attacco, quindi è importante per rimuovere i seguenti servizi precedenti, se li hai trovati installato su server Linux:

  • il server Telnet
  • RSH server
  • server NIS
  • server TFTP
  • TALK server

9-Controllare le porte aperte

Identificazione di aprire le connessioni a internet è una missione critica. In Kali Linux, uso il seguente comando per individuare eventuali porte aperte nascoste:

10-Secure SSH

Sì, infatti SSH è sicuro, ma è necessario indurire anche questo servizio. Prima di tutto, se puoi disabilitare SSH, questo è un problema risolto. Tuttavia, se si desidera utilizzarlo, è necessario modificare la configurazione predefinita di SSH. Per farlo, vai a / etc / ssh e apri il file “sshd_config” usando il tuo editor di testo preferito.

  • Cambia il numero di porta predefinito 22 in qualcos’altro, ad esempio 99.
  • Assicurati che root non possa accedere in remoto tramite SSH:

PermitRootLogin no

  • Consenti ad alcuni utenti specifici:

AllowUsers

L’elenco può andare avanti e avanti, ma questi dovrebbero essere sufficienti per iniziare. Ad esempio, alcune aziende aggiungono banner per scoraggiare gli aggressori e scoraggiarli dal continuare ulteriormente. Vi incoraggio a controllare il manuale del SSH per capire tutte le configurazioni in questo file, oppure si può visitare questo sito per ulteriori informazioni.

Ecco alcune opzioni aggiuntive che è necessario assicurarsi che esistano nel file ” sshd_config:

  • Protocol2
  • IgnoreRhosts di sì
  • HostbasedAuthentication no
  • PermitEmptyPasswords no
  • X11Forwarding no
  • MaxAuthTries 5
  • Cifre aes128-ctr,aes192-ctr,aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM sì

Infine, impostare le autorizzazioni per il file sshd_config, in modo che solo gli utenti root può modificare il suo contenuto:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

Security Enhanced Linux è un meccanismo di sicurezza del kernel per supportare la politica di sicurezza del controllo degli accessi. SELinux ha tre modalità di configurazione:

  • Disabili: spento
  • Permissive: Stampe avvertenze
  • Applicazione: applicazione del Criterio

Utilizzando un editor di testo, aprire il file di configurazione:

#nano /etc/selinux/config

E assicurarsi che il criterio viene applicato:

SELINUX=enforcing

12- Parametri di rete

Proteggere le attività della rete host Linux è un compito essenziale. Non sempre dare per scontato che il firewall si prenderà cura di tutto. Ecco alcune caratteristiche importanti da considerare per proteggere la rete host:

– Disabilitare l’inoltro IP impostando la rete.ipv4.parametro ip_forward a 0 in ” / etc / sysctl.conf”

– Abilitare la protezione dei messaggi di errore errato impostando la rete.ipv4.icmp_ignore_bogus_error_responses parametro a 1 in ” / etc / sysctl.conf ”

Consiglio vivamente di utilizzare il Firewall Linux applicando le regole iptable e filtrando tutti i pacchetti in entrata, in uscita e inoltrati. La configurazione delle regole iptables richiederà del tempo, ma ne vale la pena.

13- Politiche delle password

Le persone spesso riutilizzano le loro password, che è una cattiva pratica di sicurezza. Le vecchie password sono memorizzate nel file “/ etc / security / opasswd”. Useremo il modulo PAM per gestire le politiche di sicurezza dell’host Linux. Sotto una distribuzione debian, aprire il file ” / etc / pam.d / common-password ” utilizzando un editor di testo e aggiungere le seguenti due righe:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (Non consentirà agli utenti di riutilizzare le ultime quattro password.)

Un altro criterio di password che dovrebbe essere forzato è password complesse. Il modulo PAM offre un pam_cracklib che protegge il server da attacchi dizionario e forza bruta. Per eseguire questa operazione, aprire il file / etc / pam.d / system-auth utilizzando qualsiasi editor di testo e aggiungere la seguente riga:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux cancellerà la password per evitare di salvarla in chiaro, quindi è necessario assicurarsi di definire un algoritmo di hashing sicuro della password SHA512.

Un’altra funzionalità interessante è quella di bloccare l’account dopo cinque tentativi falliti. Per fare ciò, è necessario aprire il file ” / etc / pam.d/password-auth” e aggiungere le seguenti righe:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

non Abbiamo ancora finito; un ulteriore passaggio è necessario. Apri il file ” / etc / pam.d/system-auth” e assicurarsi di che avere le seguenti linee aggiunto:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Dopo cinque tentativi falliti, solo un amministratore può sbloccare l’account utilizzando il seguente comando:

# /usr/sbin/faillock –utente <userlocked> –reset

Inoltre, un’altra buona pratica è quella di impostare la password scade dopo 90 giorni, per eseguire questa operazione è necessario:

  • Imposta il parametro PASS_MAX_DAYS su 90 in “/etc/login.defs”
  • Modifica l’utente attivo eseguendo il seguente comando :

#chage --maxdays 90 <user>

Il prossimo suggerimento per migliorare le politiche delle password è quello di limitare l’accesso al comando su impostando il pam_wheel.so parametri in ” / etc / pam.d/su”:

autenticazione richiesta pam_wheel.so use_uid

Il suggerimento finale per la politica delle password è disabilitare gli account di sistema per gli utenti non root utilizzando il seguente script bash:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-le Autorizzazioni e le verifiche

Prepararsi mentalmente perché questo sta andando essere un lungo elenco. Ma, permessi è uno dei compiti più importanti e critici per raggiungere l’obiettivo di sicurezza su un host Linux.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Impostare il diritto di autorizzazioni e “/var/spool/cron” per “crontab di root”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Set di Utente/Gruppo Proprietario e Permessi di “passwd” file

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Set di Utente/Gruppo Proprietario e Autorizzazione il “gruppo” file

#chmod 644 /etc/group

#chown root:root /etc/group

Set di Utente/Gruppo Proprietario e Permessi sul file di “shadow”

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Set di Utente/Gruppo Proprietario e i Permessi di “gshadow” file

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- Ulteriore processo di indurimento

Per questa ultima voce dell’elenco, sono compresi alcuni altri suggerimenti che dovrebbero essere considerati quando la tempra di un host Linux.

Innanzitutto, limita i core dump di:

  • Aggiunta di hard core 0 al ” /etc/security / limits.conf ” file
  • Aggiunta di fs.suid_dumpable = 0 al ” / etc / sysctl.conf ” file

In secondo luogo, configurare Exec Shield da:

  • Aggiunta del kernel.exec-shield = 1 al ” / etc / sysctl.conf ” file

In terzo luogo, abilitare randomizzato Regione di memoria virtuale Posizionamento da:

  • Aggiunta del kernel.randomize_va_space = 2 al ” / etc / sysctl.conf ” file

Parole finali

In questo breve post, abbiamo coperto molte configurazioni importanti per la sicurezza di Linux. Ma, abbiamo appena scalfito la superficie di Linux indurimento – ci sono un sacco di complessi, configurazioni nitty-gritty. Per saperne di più su come indurire i server Linux per una migliore sicurezza, controllare i miei corsi su Pluralsight.

Gus Khawaja è un consulente di sicurezza e autore di Pluralsight. Si occupa di sicurezza, IT e sviluppo di applicazioni Web e crea corsi per Pluralsight. Gus ha fornito e sviluppato con successo soluzioni IT per aziende in tutto il Canada. Dopo molti anni di esperienza in informatica, ha rivolto la sua attenzione alla sicurezza informatica e l’importanza che la sicurezza porta a questo campo minato. La sua passione per l’hacking etico mescolato con il suo background in programmazione e lo rendono un saggio coltellino svizzero professionista nel campo dell’informatica.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.