Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Centro risorseBuone pratiche
Migliori pratiche per il rafforzamento e la sicurezza dei server Linux

Migliori pratiche per il rafforzamento e la sicurezza dei server Linux

Introduzione

Implementare configurazioni sicure in tutto l'ambiente di calcolo, inclusi i sistemi Unix e Linux, è una pratica di sicurezza fondamentale perché riduce la superficie di attacco e limita i danni che gli attacchi informatici possono causare. Infatti, il rafforzamento del sistema è un controllo centrale in molte direttive di conformità.

Questa guida spiega cosa sia il rafforzamento della configurazione e come stabilire standard di build rafforzati per i vostri sistemi Linux e Unix.

Le basi del rafforzamento dei sistemi

Il server Linux più sicuro o qualsiasi altro computer è quello che è spento e scollegato dalla rete. Ma se vogliamo effettivamente utilizzare la macchina per fornire servizi IT, dobbiamo massimizzare le sue difese di sicurezza quando è avviato e connesso alla rete o anche a Internet.

Questo è il punto in cui entra in gioco il rafforzamento. Rafforzare un sistema significa ottimizzarne la configurazione per operazioni sicure e protezione dei dati. La gamma di vulnerabilità sfruttabili è vasta, quindi ci sono tre regole principali da seguire:

  • Rimuovi le funzionalità non necessarie per il ruolo del computer. Ad esempio, i sistemi operativi e altre applicazioni sono tipicamente forniti in uno stato di “avvio rapido”, utilmente precaricati con utility e funzionalità che gli utenti potrebbero desiderare. Tuttavia, più funzioni vengono fornite, maggiore è la superficie di attacco presentata dall'host. Pertanto, assicurati di disabilitare le funzioni di cui non hai bisogno ed evita di aggiungere funzioni non necessarie dove possibile.
  • Applica patch e aggiornamenti tempestivamente. I difetti nella progettazione del software creano vulnerabilità che gli aggressori possono sfruttare. I fornitori di software forniscono patch o versioni aggiornate del software per rimediare a questi problemi, quindi assicurati che tutto il software, inclusi i sistemi operativi, sia sempre completamente aggiornato.
  • Mantenere impostazioni di configurazione sicure. È fondamentale che le impostazioni sicure siano abilitate e mantenute.

Rafforzamento del sistema Linux

Non sorprende che il rafforzamento della sicurezza di Linux sia una procedura specializzata a sé stante, data l'ampia gamma di distribuzioni Linux leggermente diverse tra loro. Sebbene non manchino guide, checklist e consigli sulle migliori pratiche per il rafforzamento dei server Linux — inclusi i benchmark del Center for Internet Security (CIS) e i DISA STIGs — questa guida fornirà le principali opzioni di configurazione da adottare.

Importante: Assicurati di eseguire il backup dei tuoi sistemi prima di applicare impostazioni di sicurezza avanzate e testa dopo un riavvio. È facile rimanere bloccati!

Rimuovere Funzionalità Non Necessarie

Inizia eliminando tutte le funzionalità, gli strumenti e i servizi non necessari per l'esecuzione del server. Disinstalla il software non necessario e disabilita i servizi di sistema non richiesti. Poiché anche l'hardware nella tua infrastruttura presenta vulnerabilità sfruttabili, assicurati che qualsiasi interfaccia accessibile, come le porte USB, sia disabilitata o addirittura fisicamente rimossa dalla macchina.

Il flusso di lavoro qui consiste nell'accedere e ottenere un rapporto dei pacchetti e dei servizi installati, e esaminarlo per identificare quelli che possono essere rimossi o disabilitati. Per gli elementi essenziali che rimangono, verificare la disponibilità di patch per rimediare alle vulnerabilità note contro gli exploit.

Come elencare il software sui sistemi Linux/Unix

Sistema

Comandi da Utilizzare

Linux (ad esempio, RedHat o CentOS)

rpm -qa --qf '%{NAME} %{VERSION} %{VENDOR}\\n'

Debian Linux (ad esempio, Ubuntu)

dpkg -l

Fedora Linux

Per elencare il software da un terminale o una sessione putty:

service --status-all

chkconfig --list

systemctl -a

Per fermare un servizio:

Arresto del servizio <Service-Name>

Chkconfig <Service-Name>

Systemctl stop <Service-Name>

Per disabilitare un servizio:

Systemctl disable <Service-Name>

Chkconfig <Service-Name> off

Controlla anche il percorso /etc/init.d/ per eventuali script di controllo dei servizi ed esegui ls /etc/init.d/ per mostrare tutti gli script di avvio; poi rinomina o rimuovi quelli che devono essere disabilitati.

Minimizzare le porte aperte e altre vulnerabilità di rete

Gli attacchi basati sulla rete sono tra le minacce più comuni. Per ridurre il rischio, identifica le porte accessibili dalla rete aperte e rimuovi tutti i processi corrispondenti che non sono necessari. Per elencare le porte aperte su Linux, utilizza il seguente comando:

      ss -tulpn | egrep “LISTEN” | awk ‘{print “IP-Port “ $4 “ PID/Name “ $7}’
      

Inoltre:

  • Assicurati che il servizio TCP Wrappers sia attivo.
  • Definisci sia una whitelist etc/hosts.allow che una blacklist etc/hosts.deny.
  • Utilizza i servizi iptables o Firewalld con una politica di blocco totale per il traffico sia IP V4 che V6, anche se utilizzi WAF di terze parti e protezione firewall sulla rete.
  • Blocca il traffico ICMP per contrastare le scansioni ping utilizzate dagli strumenti degli hacker per la scoperta dei dispositivi.

Rivedi Account Utente e Autenticazione

Esaminare gli account utente locali e rimuovere quelli non necessari. Per gli account utente locali che rimangono, dovrebbe essere configurata una solida politica delle password che copra la complessità, la lunghezza, la scadenza, il riutilizzo e la frequenza di cambio delle password. Assicurarsi inoltre di utilizzare algoritmi di hashing robusti per le password memorizzate.

Gli account utente e l'autenticazione dovrebbero essere gestiti tramite un sistema di controllo centralizzato come Active Directory o, ancora meglio, una soluzione moderna di Privileged Access Management (PAM) che permetta una strategia di Zero Standing Privilege, la quale annulla molti dei problemi legati agli account utente tradizionali e ai privilegi assegnati permanentemente. Naturalmente, non utilizzare mai root e assicurati sempre che l'elevazione di permessi con sudo venga usata solo su base necessaria.

Come configurare una Password Policy per gli account locali

Individua e modifica il seguente file di configurazione: /etc/security/pwquality.conf

Per imporre una password di 14 caratteri:

      minlen = 14
      

Per imporre la complessità per tutte le password:

      minclass = 14
      

OPPURE

      dcredit = -1

ucredit = -1

ocredit = -1

lcredit = -1
      


Per imporre una rigorosa politica di blocco password:

Aggiornare i file /etc/pam.d/system-auth e /etc/pam.d/password-auth per impostare le seguenti opzioni:

      auth required pam_faillock.so preauth silent deny=5 unlock_time=900

auth required pam_faillock.so authfail deny=5 unlock_time=900
      

Per imporre una politica di cronologia delle password di 5 o più password:

Aggiungi l'opzione remember=5 alle righe pam_pwhistory.so e pam_unix.so in /etc/pam.d/password-auth:

      password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root retry=3 remember=5

password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
      

Per imporre un hashing della password forte:

Aggiornare i file /etc/pam.d/system-auth e /etc/pam.d/password-auth come segue:

/etc/pam.d/password-auth:

      password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
      

/etc/pam.d/system-auth:

      password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
      

Rivedi gli Account di Servizio

I conti di sistema e servizio dovrebbero essere rivisti e quelli che non sono più necessari dovrebbero essere rimossi.

Gli account di servizio sono "rafforzati" in quanto supportano solo il funzionamento di un processo eseguito localmente e non forniscono una shell utente, quindi questi account non possono mai essere utilizzati per accedere al server tramite un accesso utente. Tuttavia, un principio fondamentale del rafforzamento è minimizzare le funzionalità, quindi gli account di servizio inutilizzati dovrebbero comunque essere rimossi.

Rafforzamento SSH per Linux e Unix

Essendo la via principale per amministrare a distanza i tuoi sistemi Linux, SSH richiede un'attenzione particolare. Ci sono una serie di impostazioni predefinite nel file /etc/ssh/sshd_config che devono essere abilitate per rafforzare l'operatività del server SSH. 

SSH viene utilizzato per tutti gli accessi Linux e Unix, quindi le seguenti linee guida si applicano anche per il rafforzamento di Unix.

Abilita la versione 2 del protocollo SSH

Ad esempio, la configurazione predefinita abilita la versione 1 del protocollo SSH, che è obsoleta e meno sicura. Le linee guida per il rafforzamento CIS raccomandano di abilitare la versione 2 per migliorare la sicurezza. Per farlo, è sufficiente decommentare l'impostazione Protocol 2 nel file di configurazione (/etc/ssh/sshd_config) rimuovendo il #, come segue:

Voce predefinita in /etc/ssh/sshd_config:

      # The default requires explicit activation of protocol 1

# Protocol 2
      

Una configurazione più sicura:

      # The default requires explicit activation of protocol 1

Protocol 2
      

Ulteriore rafforzamento

Inoltre, applica le seguenti impostazioni CIS rafforzate consigliate al file di configurazione:

      LogLevel INFO

IgnoreRhosts yes

…

PermitEmptyPasswords no

…

LoginGraceTime 60

PermitRootLogin no

MaxAuthTries 4

HostbasedAuthentication no

…

X11Forwarding no…

PermitUserEnvironment no

…

ClientAliveInterval 300

ClientAliveCountMax 0

…

Banner /etc/issue.net

 …

AllowUsers <Specify user names, separated by spaces, e.g. user1 user2>
      

Note aggiuntive:

/etc/issue.net dovrà essere creato/modificato per includere un Banner appropriato, ad esempio

Attenzione! L'accesso non autorizzato a questo sistema è proibito e sarà perseguito per legge. Accedendo a questo sistema, accetti che le tue azioni possano essere monitorate se si sospetta un utilizzo non autorizzato.

Insieme a AllowUsers, AllowGroups è supportato anche come interruttore di configurazione/parola chiave.

Rafforzamento del server web Apache

Linux è la piattaforma preferita per ospitare applicazioni web basate su internet, e Apache Tomcat e Apache HTTP Server (spesso chiamato Apache HTTPD) sono due delle opzioni più popolari per la consegna di contenuti web.

L'approccio al rafforzamento della configurazione di Apache è lo stesso: minimizzare le funzionalità e implementare impostazioni di configurazione sicure dove disponibili.

Verificate che siano abilitati solo i moduli Apache essenziali:

      httpd -M
      

Ad esempio, mod_dav e mod_dav_fs dovrebbero essere sempre disabilitati, mentre il modulo log_config dovrebbe essere sempre caricato e abilitato.

Conferma che la definizione di package.access includa solo i seguenti pacchetti consentiti:

package.access = sun.,org.apache.catalina.,org.apache.coyote.,

org.apache.tomcat.,org.apache.jasper.

Configura il file server.xml:

Il file  server.xml situato nel percorso  CATALINA_HOME/conf  è il principale archivio di configurazione per il server web. Le impostazioni consigliate da includere in  server.xml sono le seguenti:

  • Disabilita la porta di spegnimento:
      Server port="-1" shutdown="SHUTDOWN">
      
  • Rimuovi i connettori inutilizzati, inclusi il connettore HTTPConnector predefinito e il connettore AJPConnector. Per rimuovere il HTTPConnector, elimina o commenta questo tag:
      Connector className="org.apache.catalina.connector.http.HttpConnector"

...

connectionTimeout="60000"/>
      

Rimuovere le impostazioni predefinite di annunci di presenza:

Per Tomcat:

Imposta l'attributo xpoweredBy su false:

      xpoweredBy="false" />
      

Per HTTP Server:

  • Rimuovi il index.html predefinito e commenta le seguenti righe nel file /etc/httpd/conf.d/welcome.conf  utilizzando un # o ## per ogni riga:
      ##<LocationMatch "^/+$">

## Options -Indexes

## ErrorDocument 403 /error/noindex.html

##</LocationMatch>
      
  • Commenta la sezione Server-Status:
      ##<Location /server-status>

## SetHandler server-status

## Order deny,allow

## Deny from all

## Allow from .example.com

##</Location>
      
  • Commenta la sezione server-info:
      ##<Location /server-info>

## SetHandler server-info

## Order deny,allow

## Deny from all

## Allow from .example.com

##</Location>
      

Disabilitare le funzionalità di tracciamento diagnostico:

Imposta l'attributo allowTrace per ogni Connector su false

Disabilita il dispiegamento automatico delle applicazioni e disabilita il dispiegamento all'avvio:

      autoDeploy="false"

deployOnStartup="false"
      

Ulteriori misure di rafforzamento:

  • Assicurati che i permessi dei file e delle cartelle siano restrittivi e che i servizi Apache vengano eseguiti utilizzando account di servizio non-shell (ovvero, account che non possono essere utilizzati per accedere al sistema). Disabilita la Directory Listing e la navigazione.
      $CATALINA_HOME

$CATALINA_BASE
      

Rafforzamento del Kernel per Linux

SELinux modifica il kernel di Linux per imporre controlli di accesso obbligatori, limitando il modo in cui i processi Linux possono accedere a file e programmi. Questo ulteriore strato di restrizione offre un meccanismo di protezione fondamentale contro i malware root kit. AppArmor fornisce un livello equivalente di MAC per le distribuzioni Debian.

Impostazioni SELinux

Installare SELinux su CentOS/RHEL:

      dnf install libselinux
      

Abilita SELinux:

Per impostazione predefinita, SELinux sarà disabilitato. Per abilitare SELinux all'avvio, edit/etc/default/grub e rimuovere queste impostazioni predefinite:

      selinux=0

enforcing=0
      

Imposta la configurazione di SELinux su enforcing

Modifica il file /etc/selinux/config per includere quanto segue:

      SELINUX=enforcing

SELINUXTYPE=default
      

Verifica che tutti i servizi siano eseguiti con un contesto di sicurezza controllato da SELinux:

Il seguente comando elencherà qualsiasi servizio che viene avviato dal processo init, che potrebbe richiedere un contesto di sicurezza non predefinito assegnato:

      ps -eZ | egrep "initrc" | egrep -vw "tr|ps|egrep|bash|awk" | tr ':' ' ' | awk '{ print $NF }'
      

Riavvia il computer per assicurarti che tutte le impostazioni siano state caricate.

Impostazioni di AppArmor

Installa AppArmor su Ubuntu/Debian:

      apt-get install apparmor apparmor-profiles apparmor-utils
      

Abilita AppArmor all'avvio:

Modifica /etc/default/grub e aggiungi le seguenti impostazioni:

      GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor"
      

Assicurati che tutti i profili AppArmor siano in modalità enforce:

      aa-enforce /etc/apparmor.d/*
      

Hardening di Embedded Linux

Embedded Linux fornisce un sistema operativo semplificato per dispositivi o sistemi embedded, come smartphone, smart TV, set-top box e router per internet a banda larga.

Un sistema operativo semplificato con un ingombro ridotto è attraente quando non è richiesta la gamma completa di funzioni solitamente fornite dai dispositivi Linux di livello server e le risorse hardware come lo storage, la memoria e la CPU sono state minimizzate per risparmiare sui costi di produzione. Ad esempio, la piattaforma open-source Android sviluppata da Google è ottimizzata per smartphone e TV, e il firmware del router OpenWrt è utilizzato per un'ampia gamma di router broadband.

Le funzionalità incluse nel sistema operativo variano notevolmente a seconda dell'applicazione prevista. Ad esempio, Android include blocco schermo, riconoscimento facciale, supporto per l'inserimento del PIN e servizi di localizzazione; queste non sono necessarie nei sistemi operativi per router domestici, ma sono incluse funzionalità come VPN, Wi-Fi per ospiti e limitazione della larghezza di banda. Di conseguenza, le linee guida per il rafforzamento sono specificamente collegate al particolare dispositivo e piattaforma in uso.

Punti salienti del rafforzamento di Android

Assicurati che il firmware del dispositivo sia aggiornato:

Vai su Impostazioni | Sistema | Aggiornamenti di sistema; seleziona Verifica aggiornamenti e installa tutti gli aggiornamenti disponibili.

Installa Google Play e gli aggiornamenti di sicurezza:

Vai a Impostazioni | Sicurezza:

  • Seleziona Google Security Check-Up e applica tutti gli aggiornamenti disponibili.
  • Seleziona Google Play system update e applica tutti gli aggiornamenti disponibili.

Abilita la sicurezza generale del dispositivo:

  1. Vai su Settings | Security | Device Security e fai quanto segue:
  • Imposta ‘Screen Lock’ su ‘Enabled’.
  • Imposta ‘Pattern Visible’ su ‘Disabilitato’.
  • Imposta ‘Automatically Lock’ su ‘Immediately’.
  • Imposta ‘Power Button Instantly Locks’ su ‘On’.
  • Imposta le app di amministrazione del dispositivo ‘Find My Device’ su ‘Abilitato’.
  • Imposta ‘Allow remote lock and erase’ su ‘Enabled’.

2. Vai su Impostazioni | Sistema | Avanzate e fai quanto segue:

  • Imposta le ‘Developer Options’ su ‘Off’.

3. Vai su Settings | Apps & Notifications | Advanced | Special App Access e fai quanto segue:

  • Imposta ‘Install Unknown Apps’ su ‘Non Consentito’.

4. Avvia Play Store | Menu e fai quanto segue:

  • Seleziona ‘My Apps & Games’ e clicca su ‘Update All’.

Punti salienti del rafforzamento di OpenWrt

  • Modifica la password dell'amministratore da quella predefinita.
  • Assicurati che il firmware sia sempre aggiornato all'ultima versione.

Rafforzamento di Kali Linux

Kali Linux è stato ottimizzato per essere la piattaforma preferita dai pen tester, quindi dispone di un'ampia gamma di utility per l'audit di sicurezza e il pen testing.

Poiché Kali Linux è una distribuzione Linux basata su Debian, puoi utilizzare i consigli di rafforzamento di Linux sopra per affrontare le debolezze di sicurezza nei sistemi Kali Linux.

Rafforzamento della sicurezza di Linux Mint

Analogamente per Linux Mint, in quanto piattaforma Desktop Linux derivata da Ubuntu, si dovrebbero adottare le stesse procedure di rafforzamento utilizzate per Debian-Linux. Seguire i passaggi della precedente Checklist per il Rafforzamento di Linux e applicarli ai vostri sistemi Linux Mint.

Rafforzamento di Arch Linux

Come distribuzione Linux indipendente non derivata direttamente da Debian o Fedora, Arch Linux rappresenta un caso a sé per quanto riguarda le misure di rafforzamento, sebbene i concetti di come e cosa rafforzare siano simili. Il codice di Arch è intenzionalmente costruito come una distribuzione Linux 'senza fronzoli' e come tale richiederà meno lavoro di rafforzamento quando si tratta di rimuovere/disabilitare servizi non necessari.

Parola finale

Anche un sistema rinforzato può essere compromesso, specialmente dai seguenti:

  • Minacce zero-day — exploit di cui non avevamo conoscenza e contro i quali quindi non ci siamo protetti
  • Ransomware e altri malware
  • Le minacce interne, che includono sia gli hacker che utilizzano credenziali rubate sia gli utenti che abusano del loro accesso

Pertanto, oltre a rafforzare i vostri sistemi, avete bisogno di ulteriori difese. In particolare, è fondamentale monitorare l'integrità del sistema e dei file. Qualsiasi cambiamento inaspettato potrebbe portare a una violazione o ad un altro incidente di sicurezza. Netwrix Change Tracker fornisce allarmi in tempo reale su tutti i cambiamenti non pianificati e supporta tutte le piattaforme Linux e Unix.

Netwrix Change Tracker

Acquisisci fiducia nell'integrità del tuo sistema Linux/Unix con il software di gestione della configurazione di sicurezza di Netwrix

Richiedi una prova gratuita

Condividi su