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.

La prima regola per mettere in sicurezza un server Linux è 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.

La seconda regola di sicurezza è 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

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

Restringere 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 vi sudo

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

# %wheel ALL=(ALL) ALL

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 e togliere il #:

#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.

Cambiare 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.

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.

Disabilitare 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

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.

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.

Mettere in sicurezza un server Linux
Tags: