Ricerca nel sito web

20 suggerimenti per la sicurezza rafforzata del server CentOS - Parte 1


Questo tutorial copre solo suggerimenti generali sulla sicurezza per CentOS 8/7 che possono essere utilizzati per rafforzare il sistema. I suggerimenti dell'elenco di controllo sono destinati ad essere utilizzati principalmente su vari tipi di server bare metal o su macchine (fisiche o virtuali) che forniscono servizi di rete.

Tuttavia, alcuni suggerimenti possono essere applicati con successo anche a macchine di uso generale, come desktop, laptop e computer a scheda singola delle dimensioni di una scheda (Raspberry Pi).

Requisiti

  • Installazione minima di CentOS 8
  • Installazione minima di CentOS 7

1. Protezione fisica

Blocca l'accesso alle sale server, utilizza il blocco dei rack e la videosorveglianza. Tieni presente che qualsiasi accesso fisico alle sale server può esporre la tua macchina a seri problemi di sicurezza.

Le password del BIOS possono essere modificate reimpostando i ponticelli sulla scheda madre o scollegando la batteria CMOS. Inoltre, un intruso può rubare i dischi rigidi o collegare direttamente nuovi dischi rigidi alle interfacce della scheda madre (SATA, SCSI, ecc.), eseguire l'avvio con una distribuzione live Linux e clonare o copiare dati senza lasciare alcuna traccia di software.

2. Ridurre l'impatto dello spionaggio

In caso di dati altamente sensibili, probabilmente dovresti utilizzare una protezione fisica avanzata come posizionare e bloccare il server in una gabbia di Faraday o utilizzare una soluzione militare TEMPEST per ridurre al minimo l'impatto dello spionaggio del sistema via radio o emanazioni di perdite elettriche.

3. BIOS/UEFI sicuri

Avvia il processo di rafforzamento del tuo computer proteggendo le impostazioni BIOS/UEFI, in particolare imposta una password BIOS/UEFI e disabilita i dispositivi del supporto di avvio (CD, DVD, disabilita il supporto USB) in per impedire a utenti non autorizzati di modificare le impostazioni del BIOS di sistema o di alterare la priorità del dispositivo di avvio e di avviare la macchina da un supporto alternativo.

Per applicare questo tipo di modifica alla tua macchina è necessario consultare il manuale del produttore della scheda madre per istruzioni specifiche.

4. Caricatore di avvio sicuro

Imposta una password GRUB per impedire agli utenti malintenzionati di manomettere la sequenza di avvio del kernel o i livelli di esecuzione, modificare i parametri del kernel o avviare il sistema in modalità utente singolo per danneggiare il sistema e ripristinare il root password per ottenere un controllo privilegiato.

5. Utilizzare partizioni del disco separate

Quando si installa CentOS su sistemi intesi come server di produzione, utilizzare partizioni dedicate o dischi rigidi dedicati per le seguenti parti del sistema:

/(root) 
/boot  
/home  
/tmp 
/var 

6. Utilizzare LVM e RAID per la ridondanza e la crescita del file system

La partizione /var è il luogo in cui i messaggi di registro vengono scritti sul disco. Questa parte del sistema può crescere in modo esponenziale in termini di dimensioni su server ad alto traffico che espongono servizi di rete come server Web o file server.

Pertanto, utilizza una partizione di grandi dimensioni per /var o valuta la possibilità di impostare questa partizione utilizzando volumi logici (LVM) o combina diversi dischi fisici in un dispositivo RAID 0 virtuale più grande per sostenere grandi dimensioni quantità di dati. Per i dati, considerare la ridondanza utilizzando il layout LVM sopra il livello RAID 1.

Per configurare LVM o RAID sui dischi, segui le nostre utili guide:

  1. Configura l'archiviazione su disco con LVM in Linux
  2. Crea dischi LVM utilizzando vgcreate, lvcreate e lvextend
  3. Combina diversi dischi in un unico grande spazio di archiviazione virtuale
  4. Crea RAID 1 utilizzando due dischi in Linux

7. Modifica le opzioni fstab per proteggere le partizioni dei dati

Separare le partizioni destinate alla memorizzazione dei dati e impedire l'esecuzione di programmi, file di dispositivo o bit setuid su questo tipo di partizioni aggiungendo le seguenti opzioni al file fstab come illustrato di seguito estratto:

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

Per impedire l'escalation dei privilegi e l'esecuzione arbitraria di script, crea una partizione separata per /tmp e montala come nosuid, nodev e noexec .

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. Crittografare i dischi rigidi a livello di blocco con LUKS

Al fine di proteggere lo snooping dei dati sensibili in caso di accesso fisico ai dischi rigidi della macchina. Ti suggerisco di imparare come crittografare il disco leggendo il nostro articolo Crittografia dei dati del disco rigido Linux con LUKS.

9. Utilizzare PGP e la crittografia a chiave pubblica

Per crittografare i dischi, utilizzare PGP e crittografia a chiave pubblica o il comando OpenSSL per crittografare e decrittografare i file sensibili con una password, come mostrato in questo articolo Configurare l'archiviazione di sistema Linux crittografata.

10. Installa solo la quantità minima di pacchetti richiesta

Evitare di installare programmi, applicazioni o servizi non importanti o non necessari per evitare vulnerabilità del pacchetto. Ciò può ridurre il rischio che la compromissione di un componente software possa portare alla compromissione di altre applicazioni, parti del sistema o persino file system, con conseguente danneggiamento o perdita di dati.

11. Aggiorna frequentemente il sistema

Aggiorna regolarmente il sistema. Mantieni il kernel Linux sincronizzato con le ultime patch di sicurezza e tutto il software installato aggiornato con le ultime versioni immettendo il comando seguente:

yum update

12. Disabilita Ctrl+Alt+Canc

Per impedire agli utenti di riavviare il server una volta che hanno accesso fisico a una tastiera o tramite un'applicazione di console remota o una console virtualizzata (KVM, interfaccia software di virtualizzazione) è necessario disabilitare Ctrl+Alt +Canc sequenza di tasti eseguendo il comando seguente.

systemctl mask ctrl-alt-del.target 

13. Rimuovere i pacchetti software non necessari

Installa il software minimo richiesto per il tuo computer. Non installare mai programmi o servizi aggiuntivi. Installa i pacchetti solo da repository attendibili o ufficiali. Utilizzare un'installazione minima del sistema nel caso in cui la macchina sia destinata a funzionare per tutta la sua vita come server.

Verifica i pacchetti installati utilizzando uno dei seguenti comandi:

rpm -qa

Crea un elenco locale di tutti i pacchetti installati.

yum list installed >> installed.txt

Consulta l'elenco dei software inutili ed elimina un pacchetto emettendo il comando seguente:

yum remove package_name

14. Riavviare i servizi Systemd dopo gli aggiornamenti del demone

Utilizza l'esempio di comando seguente per riavviare un servizio systemd per applicare nuovi aggiornamenti.

systemctl restart httpd.service

15. Rimuovere i servizi non necessari

Identificare i servizi in ascolto su porte specifiche utilizzando il seguente comando ss.

ss -tulpn

Per elencare tutti i servizi installati con il relativo stato di output, eseguire il comando seguente:

systemctl list-units -t service

Ad esempio, l'installazione minima predefinita di CentOS viene fornita con il demone Postfix installato per impostazione predefinita che viene eseguito con il nome di un master nella porta 25. Rimuovi il servizio di rete Postfix nel caso in cui il tuo computer non verrà utilizzato come server di posta.

yum remove postfix

16. Crittografare i dati trasmessi

Non utilizzare protocolli non protetti per l'accesso remoto o il trasferimento di file come Telnet, FTP o altri protocolli con testo semplice come SMTP, HTTP, NFS o SMB che, per impostazione predefinita, non crittografa le sessioni di autenticazione o i dati inviati.

Utilizza solo sftp, scp per i trasferimenti di file e SSH o VNC su tunnel SSH per le connessioni alla console remota o l'accesso alla GUI.

Per eseguire il tunneling di una console VNC tramite SSH utilizzare l'esempio seguente che inoltra la porta VNC 5901 dal computer remoto al computer locale:

ssh -L 5902:localhost:5901 remote_machine

Sulla macchina locale eseguire il comando seguente per effettuare la connessione virtuale all'endpoint remoto.

vncviewer localhost:5902

17. Scansione delle porte di rete

Esegui controlli delle porte esterne utilizzando lo strumento Nmap da un sistema remoto sulla LAN. Questo tipo di scansione può essere utilizzato per verificare le vulnerabilità della rete o testare le regole del firewall.

nmap -sT -O 192.168.1.10

18. Firewall con filtraggio dei pacchetti

Utilizza l'utilità firewalld per proteggere le porte del sistema, aprire o chiudere porte di servizi specifici, in particolare porte conosciute (<1024).

Installa, avvia, abilita ed elenca le regole del firewall immettendo i comandi seguenti:

yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all

19. Ispezionare i pacchetti di protocollo con Tcpdump

Utilizzare l'utilità tcpdump per annusare localmente i pacchetti di rete e ispezionare il loro contenuto per individuare traffico sospetto (porte di destinazione-origine, protocolli TCP/IP, traffico di livello due, richieste ARP insolite).

Per una migliore analisi del file catturato tcpdump utilizza un programma più avanzato come Wireshark.

tcpdump -i eno16777736 -w tcpdump.pcap

20. Prevenire gli attacchi DNS

Ispeziona il contenuto del tuo risolutore, in genere il file /etc/resolv.conf, che definisce l'indirizzo IP dei server DNS che dovrebbe utilizzare per interrogare i nomi di dominio, al fine di evitare manomissioni -attacchi medi, traffico non necessario per i server DNS root, spoofing o creazione di un attacco DOS.

Questa è solo la prima parte. Nella parte successiva discuteremo altri suggerimenti sulla sicurezza per CentOS 8/7.