Mettere in sicurezza un server Linux. La guida passo passo

Mettere in sicurezza un server Linux significa prestare attenzione a una serie di importanti fattori che, se trascurati, potrebbero mettere a rischio il server e tutte le informazioni in esso contenute.

La sicurezza, quindi, è un requisito fondamentale da adottare per salvaguardarsi da attacchi malware e sottrazioni di dati. Vediamo, dunque, quali sono i migliori accorgimenti da adottare per mettere in sicurezza un server Linux.

Mettere in sicurezza un server Linux: installa solo i pacchetti necessari per

Chi dispone di un server pensa innanzitutto alla possibilità di poter installare ogni pacchetto e applicazione, vista la disponibilità di storage che il server stesso mette a disposizione.

Questo è certamente vero, ma non si deve mai dimenticare che anche i server più potenti possono essere hackerati sfruttando le vulnerabilità dei pacchetti e delle applicazioni che girano sul server.

Installazione programmi per mettere in sicurezza un server Linux
La prima cosa da fare per mettere in sicurezza un server Linux è verificare i programmi e le applicazioni, installando solo quelli di cui si ha necessità

La prima regola per mettere in sicurezza un server Linux è quindi quella di installare solo i pacchetti di cui si ha realmente bisogno, ricordandosi sempre di leggere con attenzione la relativa documentazione prima di installare un qualsiasi software o pacchetto dipendente (ad esempio ownCloud).

Applicazioni sotto controllo per mettere in sicurezza un server Linux

La seconda regola per mettere in sicurezza un server Linux è di monitorarne i servizi, consentendo l’esecuzione solo di quei programmi di cui si necessita.

Può infatti verificarsi che alcuni pacchetti avviino alcuni servizi su porte differenti, mettendo quindi a rischio la sicurezza.

Per verificare quali servizi sono in esecuzione su quali porte, è necessario aprire:

netstat -npl

e controllare se vi sono alcuni servizi “in funzionamento” che invece si pensava “inattivi”.

In questo caso, fermare tali servizi, ricordandosi anche di verificare i servizi che vengono eseguiti all’avvio del sistema.

Per la verifica è necessario eseguire, per i sistemi che eseguono systemd, il comando:

systemctl list-unit-files –type=service | grep enabled

controllo delle applicazioni per mettere in sicurezza un server Linux
Per mettere in sicurezza un server Linux è fondamentale tenere sotto controllo le applicazioni e consentire l’esecuzione solo di quelle necessarie

A seconda del sistema che si sta utilizzando, viene restituita una schermata che mostra tutti i servizi in esecuzione; nel caso ve ne siano alcuni di cui non si ha bisogno è possibile disabilitarli usando il comando:

systemctl disable service_name

Mettere in sicurezza un server Linux restringendo l’accesso

Così come non si consegnano le chiavi della propria casa a chiunque, allo stesso modo non si deve dare a tutti l’accesso al proprio server Linux.

La terza regola è dunque quella di restringere l’accesso al server, tenendo però sempre a mente che anche questa precauzione non mette il server al sicuro da eventuali tentativi di accesso indesiderati.

Evitare di loggarsi come super-utente per mettere in sicurezza un server Linux

Non viene considerata come una buona pratica quella di loggarsi al server come super-utente via secure-shell (SSH).

E’ possibile disabilitare il protocollo SSH come root user sul server, ma prima di farlo è fondamentale creare un utente con “sudo powers” così da poter utilizzare la comunicazione SSH ed eseguire attività amministrative.

Una volta loggati al server è sempre possibile passare all’user root se necessario.

Nel caso in cui si possegga già un user sul proprio server, ignorare questi passaggi, mentre nel caso contrario procedere nel seguente modo.

Per aggiungere un nuovo utente si utilizzano diversi metodi; Red Hat/CentOS (usano useradd), Ubuntu/Debian (usano user adduser).

Per creare un nuovo utente su Fedora/CentOS:

useradd swapnil

poi creare una password per l’utente

passwd swapnil

Verrà chiesto di fornire una nuova password. Concluso questo step, procedere assegnando all’utente i poteri “sudo” con il comando:

EDITOR=nano visudo

Viene restituita una schermata nella quale vi è la seguente stringa:

# %wheel ALL=(ALL) ALL

mettere in sicurezza un server Linux e creazione nuovo utente
La creazione di un nuovo utente con poteri di amministratore è una buona norma per mettere in sicurezza un server Linux

A questo punto, è necessario “togliere il commento” alla linea semplicemente cancellando il simbolo # , che indica appunto che la stringa è commentata.

Il risultato sarà:

%wheel ALL=(ALL) ALL

Basta ora salvare e chiudere il file. Se l’utente non appartiene al gruppo “wheel” è possibile aggiungerlo facilmente eseguendo il comando:

# usermod -aG wheel swapnil

Sui sistemi Ubuntu è possibile aggiungere un nuovo utente eseguendo:

adduser swapnil

Il sistema ci chiede di rispondere a una serie di domande e di creare una nuova password per l’utente. Una volta completato questo step, passare ad assegnare i “sudo powers” all’utente, con il comando:

gpasswd -a swapnil sudo

Aprire una nuova finestra, provare a loggarsi al server utilizzando il nuovo account creato e a eseguire una serie di operazioni da amministratore; se tutto funziona al meglio è possibile passare al prossimo step.

Per mettere in sicurezza un server Linux ricordarsi di disabilitare Login Root

Disabilitare il login root significa impedire a chiunque di collegarsi al server come root user o di utilizzare SSH.

Per procedere aprire il file di configurazione sshd:

nano /etc/ssh/sshd_conf

Cercare la stringa commentata:

#PermitRootLogin no

salvare e chiudere il file e poi riavviare il service:

service ssh restart oppure systemctl restart sshd

E’ molto importante non scollegarsi ancora dal server, ma verificare prima se è possibile loggarsi via SSH usando l’user precedentemente creato.

Se tutto funziona al meglio, è possibile scollegarsi dal server come root user.

Mettere in sicurezza un server Linux cambiando le porte di default

Un secondo e importante cambiamento da apportare al file ssh riguarda le porte di default, aggiungendo in questo modo un ulteriore livello di protezione e di sicurezza al server.

Per farlo è necessario aprire il file di configurazione sshd (come “sudo user” in quanto non è più possibile accedere al server come root user):

sudo nano /etc/ssh/sshd_conf

e rintracciare la linea commentata:

#Port 22

Rimuovere il commento della linea e scegliere il numero di una porta, facendo attenzione a non selezionarne una in uso a un altro servizio del sistema.

E’ possibile avere delle indicazioni su quali porte sono generalmente in uso da questo articolo di Wikipedia così da poterle evitare.

modifica porte di default per mettere in sicurezza un server Linux
Cambiare le porte di default è consigliato per mettere in sicurezza un server Linux, aggiungendo un ulteriore livello di protezione

Supponiamo di scegliere la porta 1977 del server:

Port 1977

Salvare e chiudere il file e poi procedere a riavviare il servizio sshd.

Ancora una volta, prima di disconnettersi dal server, verificare le impostazioni aprendo una nuova finestra e loggarsi usando questo pattern:

ssh -p{port_number}@server_IP

Se riuscite ad accedere allora avrete correttamente modificato le porte di default.

Mettere in sicurezza un server Linux disabilitando l’autenticazione tramite password

Una altra regola importante per mettere in sicurezza un server Linux è quella di disabilitare la password di login, ricordandosi però sempre che sarà possibile accedere al server solo dalla macchina sulla quale viene generata la chiave ssh.

Per generare la chiave ssh sul sistema locale, utilizzare il comando

ssh-keygen – t rsa

creazione password sshd per mettere in sicurezza un server Linux
E’ consigliato disabilitare la password di login e creare una chiave ssh per mettere in sicurezza un server Linux

Comparirà una schermata con una serie di domanda; è possibile lasciare la chiave di default e dotarla di una password forte, difficile da indovinare. Successivamente è necessario copiare queste chiavi sul server in modo tale che le due macchine possano comunicare tra loro utilizzando queste chiavi:

cat ~/.ssh/id_rsa.pub | ssh -p 1977 swapnil@remote-server “;mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys”

A questo punto bisogna testare sshing sul server da un altro terminale e se tutto funziona correttamente, non sarà richiesta l’immissione della password.

Per incrementare ulteriormente i livelli di sicurezza, si può disabilitare l’autenticazione tramite password per il server.

Per fare ciò è necessario aprire il file di configurazione ssh e cercare la seguente linea commentata:

#PasswordAuthentication yes

Rimuovere il commento e modificare “yes” in “no”, salvare e chiudere il file.

A questo punto riavviare il servizio sshd e, ancora una volta, ricordarsi di non chiudere la connessione al server dalla finestra in uso. Aprire quindi una nuova finestra e loggarsi al server, accertandosi che non venga richiesta una password.

Il rovescio della medaglia di questo tipo di impostazione è che sarà possibile collegarsi al server solo dalla macchina sulla quale sono state create le chiavi ssh. Questo significa che, se ci si collega al server da macchine differenti, è bene non utilizzare questo metodo.

Mettere in sicurezza un server Linux: conclusioni

In conclusione, è bene fare alcune considerazioni che potranno essere utili soprattutto ai nuovi utenti di server Linux.

La prima cosa da tenere a mente è che i crackers sono sempre un passo avanti e capaci di sfruttare qualunque “debolezza” per accedere al server.

Uno dei migliori accorgimenti per mettere in sicurezza un server Linux è quindi quello di mantenere un backup sempre aggiornato del server.

A tal proposito, è consigliato fare un backup sia prima che dopo qualunque cambiamento al sito così, nel caso in cui il server venga compromesso, è sempre possibile ripristinare il tutto dall’ultimo backup effettuato.