Dopo aver installato il server CentOS 8 / RHEL 8, la sicurezza per impedire accessi non autorizzati e intrusioni viene in secondo luogo. Come dice l'adagio, "Prevenire è meglio che curare", così è meglio prevenire gli hack che tentare di rimediare.
Esplora alcuni passaggi che puoi eseguire per rafforzare e proteggere il server CentOS 8 / RHEL 8 e contrastare i tentativi di hacking.
1) Configura un firewall
In qualità di utente Linux attento alla sicurezza, non consentiresti alcun traffico nel tuo sistema CentOS 8 / RHEL 8 per motivi di sicurezza. In effetti, la configurazione di un firewall è una delle attività iniziali di configurazione del server che un amministratore di sistema deve eseguire per aprire solo porte specifiche e consentire i servizi attualmente in uso.
Per impostazione predefinita, il sistema CentsO8 / RHEL 8 viene fornito con firewalld firewall che può essere avviato e abilitato all'avvio eseguendo i comandi:
$ sudo systemctl start firewalld $ sudo systemctl enable firewalld
Per verificare i servizi consentiti sul firewall è sufficiente eseguire il comando:
$ sudo firewall-cmd --list all
Per aprire una porta sul firewall, ad esempio la porta 443, eseguire il comando:
$ sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
Per consentire un servizio, ad esempio ssh , usa il comando:
$ sudo firewall-cmd --add-service=ssh --zone=public --permanent
Per rimuovere una porta e un servizio , utilizza –remove-port e –servizio di rimozione rispettivamente gli attributi.
Affinché le modifiche abbiano effetto, ricarica sempre il firewall come mostrato.
$ sudo firewall-cmd --reload
2) Disattiva i servizi inutilizzati/non desiderati
Si consiglia sempre di disattivare i servizi inutilizzati o non necessari sul server. Questo perché maggiore è il numero di servizi in esecuzione, maggiore è il numero di porte aperte sul tuo sistema che possono essere sfruttate da un utente malintenzionato per ottenere l'accesso al tuo sistema. Inoltre, desistere dall'utilizzare servizi vecchi e non sicuri come telnet che inviano traffico in chiaro
Le migliori pratiche di sicurezza consigliano di disabilitare i servizi inutilizzati e di eliminare tutti i servizi non sicuri in esecuzione sul sistema. Puoi utilizzare lo strumento nmap per scansionare il tuo sistema e controllare quali porte sono aperte e in ascolto.
3) Proteggi i file critici
È essenziale bloccare i file critici per impedirne l'eliminazione o la modifica accidentale. Tali file includono /etc/passwd e /etc/gshadow che contengono password con hash. Per rendere i file immutabili (cioè prevenire la modifica o la cancellazione accidentale) usa il comando chattr come mostrato:
$ sudo chattr +i /etc/passwd $ sudo chattr +i /etc/shadow
Ciò garantisce che un hacker non possa modificare la password degli utenti o eliminarli, con conseguente negazione dell'accesso al sistema.
4) Protocollo SSH sicuro
Il protocollo SSH è un protocollo comunemente usato per gli accessi remoti. Per impostazione predefinita, il protocollo ha punti deboli nativi che possono essere sfruttati da un hacker.
Per impostazione predefinita, SSH consente l'accesso remoto da parte dell'utente root. Questa è una potenziale scappatoia e se un hacker riesce a ottenere la password di root sul tuo sistema, il tuo server è praticamente alla sua mercé. Per evitare ciò, è consigliabile negare l'accesso root remoto e creare invece un utente normale di accesso con privilegi sudo. Puoi farlo modificando il file di configurazione SSH /etc/ssh/sshd_config e disabilitando l'accesso come root come mostrato:
PermitRootLogin
Un altro modo per proteggere SSH è configurare l'autenticazione senza password SSH tramite l'uso di chiavi ssh. Invece di utilizzare l'autenticazione della password, soggetta ad attacchi di forza bruta, le chiavi SSH sono preferite in quanto consentono l'accesso solo agli utenti con la chiave ssh per accedere al server remoto e bloccare qualsiasi altro utente. Il primo passaggio per abilitare l'autenticazione senza password è generare una coppia di chiavi utilizzando il comando:
$ ssh-keygen
Questo genera una coppia di chiavi pubblica e privata. La chiave privata risiede sull'host mentre la chiave pubblica viene copiata sul sistema o sul server remoto. Una volta copiata la coppia ssh-key, puoi accedere facilmente al sistema remoto senza che ti venga richiesta una password. Quindi, disabilita l'autenticazione della password modificando il file di configurazione /etc/ssh/sshd_config e impostando questo valore:
PasswordAuthentication no
Dopo aver apportato le modifiche, assicurati di riavviare il servizio SSH affinché le modifiche abbiano effetto.
$ sudo systemctl restart sshd
5 ) Definisci un limite per i tentativi di password
Per rafforzare ulteriormente il tuo server, potresti considerare di limitare il numero di tentativi di password durante la registrazione tramite SSH per scoraggiare gli attacchi di forza bruta. Di nuovo, vai al file di configurazione SSH, scorri e individua il parametro "MaxAuthTries". Decommentalo e imposta un valore , ad esempio 3 come mostrato.
MaxAuthTries 3
Ciò implica che dopo 3 tentativi di password errata, la sessione verrà chiusa. Questo è utile soprattutto quando vuoi bloccare script/programmi robotici che tentano di accedere al tuo sistema.
6) Impostare un sistema di prevenzione delle intrusioni (IPS)
Finora, abbiamo coperto i passaggi di base che puoi eseguire per rafforzare il tuo server CentOS 8 / RHEL 8. Per aggiungere un altro livello, si consiglia di installare un sistema di rilevamento delle intrusioni. Un perfetto esempio di IPS è Fail2ban.
Fail2ban è un sistema di prevenzione delle intrusioni gratuito e open source che protegge i server dagli attacchi di forza bruta vietando gli indirizzi IP dopo un certo numero di tentativi di accesso che possono essere specificati nel suo file di configurazione. Una volta bloccato, l'utente malintenzionato o non autorizzato non può nemmeno avviare un tentativo di accesso SSH.
7) Aggiorna regolarmente il tuo server
Questo articolo non sarebbe completo senza sottolineare quanto sia fondamentale aggiornare regolarmente il server. Ciò garantisce che il tuo server riceva le funzionalità più recenti e gli aggiornamenti di sicurezza che sono essenziali per affrontare i problemi di sicurezza esistenti.
È possibile impostare gli aggiornamenti automatici utilizzando l'utility Cockpit, uno strumento di gestione del server basato su GUI che esegue anche una serie di altre attività. Questo è l'ideale soprattutto se hai intenzione di fare un lungo soggiorno o una vacanza senza accedere al server.