La configurazione sicura del proprio server è uno dei compiti più importanti per gli amministratori e le amministratrici. Questo vale non solo per i server gestiti autonomamente, ma anche nel caso in cui si noleggi l’hardware. Per garantire una sicurezza totale, si devono implementare misure come la protezione con password, applicare buone impostazioni SSH e aggiornamenti regolari.

Chi ha la responsabilità di configurare il server in modo sicuro?

Per godere della massima libertà di configurazione, la soluzione ottimale è gestire autonomamente un proprio server. Un’alternativa adeguata è fornita dai root server che sono disponibili presso molti provider e garantiscono l’accesso all’account di root. In entrambi i casi a farsi carico dei passaggi di gestione elementari, come l’installazione, la strutturazione e la manutenzione del server, è esclusivamente chi noleggia il server.

In ogni caso bisogna fare attenzione: una procedura errata nella root ha un impatto particolarmente grave. Tuttavia, una procedura corretta può creare la base perfetta per un server stabile, sicuro e performante.

Server dedicati
Performance e innovazione
  • Hardware dedicato al 100%
  • Fatturazione al minuto
  • Potenziato dai processori Intel® Xeon® e AMD

Come proteggere il tuo server: istruzioni guidate

Indipendentemente dal fatto che tu voglia proteggere un server Windows, Ubuntu o Debian, ci sono alcune misure generali che puoi adottare per creare una solida base di sicurezza. Abbiamo riassunto i passaggi più importanti qui di seguito.

Primo passaggio: eseguire un’installazione minima

Prima ancora di iniziare a prendere i provvedimenti veri e propri per configurare il tuo server in modo sicuro, puoi già influenzare il successivo potenziale di sicurezza del tuo progetto web. Non importa se desideri utilizzare un sistema operativo Windows o Linux, al momento dell’installazione vale il seguente principio: un server dovrebbe contenere solo quei software necessari per lo svolgimento dei suoi compiti.

Questo perché ogni applicazione installata rappresenta un potenziale rischio per la sicurezza e può riflettersi negativamente sulla performance. Per offrire agli hacker il minor numero possibile di punti di attacco, dovresti perciò installare o attivare i componenti di sistema necessari e ricorrere solo a software verificati di terze parti.

Secondo passaggio: assegnare una password sicura

Subito dopo l’installazione dovresti impostare un accesso admin sicuro (Windows) o la password di root (Linux). Per impostazione predefinita, non è definito alcun valore e l’account amministratore è quindi bloccato finché non inserisci una voce corrispondente. Di norma, dopo l’installazione il sistema operativo richiede automaticamente la creazione di un account con password, che da quel momento in poi funziona come accesso amministratore o root.

Se il tuo server Linux si trova presso un provider e disponi quindi di un login di root preesistente, devi cambiare subito la password. A questo scopo effettua l’accesso tramite SSH sul tuo server e inserisci il seguente comando nel rispettivo terminale:

passwd
bash

Successivamente puoi definire una password sicura che devi ancora verificare. Fai attenzione a scegliere una password sufficientemente lunga e di non ricorrere solo a lettere, ma anche a caratteri speciali e numeri. Inoltre, si consiglia di salvare la password con un password manager, per averla sempre a disposizione nel caso te la dimenticassi.

Consiglio

Qualora per il tuo sistema Linux sia già stata impostata una password root che non conosci, puoi cambiarla nella modalità recovery. Questa modalità si avvia tenendo premuto il tasto Maiusc durante il boot. Alla voce del menu “root” avvia il comando della riga di comando “root”, agendo automaticamente come amministratore. Puoi così cambiare la password e scegliere quella che preferisci.

Terzo passaggio: modificare la porta SSH

Per l’accesso al server tramite SSH è prevista per impostazione predefinita la porta TCP/UDP 22, inserita automaticamente anche nel caso in cui il sistema sia stato installato da zero. Conseguentemente i criminali che sono alla ricerca di sistemi permeabili avviano i loro tentativi di attacco, cioè dei tentativi di login automatizzati, soprattutto tramite questa porta. Definendo un’altra porta per le connessioni remote criptate, minimizzi notevolmente il rischio di accessi indesiderati.

Perciò devi solo modificare il file di configurazione SSH sshd_config con un qualsiasi editor di testo. Con il seguente comando apri il file, ad esempio con l’editor standard di Linux, nano:

nano /etc/ssh/sshd_config
bash

Cerca la riga “Port” e sostituisci il numero della porta 22 con un numero a scelta. Ricordati però che ci sono diverse altre porte standard per altri servizi (ad esempio la porta 80 per il protocollo HTTP).

N.B.

Prima che le modifiche nel file sshd_config risultino attive, è necessario riavviare il servizio SSH. Su Debian ciò avviene con il comando /etc/init.d/ssh restart, mentre gli utenti Ubuntu riavviano il servizio tramite service ssh restart.

Disattivare l’accesso SSH per admin

Per rendere sicuro il tuo server, si consiglia di bloccare l’accesso SSH per l’account di root o admin, altrimenti un hacker, che è entrato in possesso della password, potrebbe accedere al server tramite accesso remoto grazie a questo account.

Prima di poter intraprendere queste misure, hai bisogno però di almeno un altro account che si può collegare con il server per non essere bloccato completamente dal sistema. Nei sistemi Linux lo crei con il seguente comando:

useradd -g users -d /home/utente1 -m -s /bin/bash utente1
bash

In questo modo generi l’account utente di esempio “utente1”, per cui definisci subito dopo una password sicura:

passwd utente1
bash

Testa se il login con l’account utente creato funziona correttamente e prosegui se tutto è andato a buon fine con il vero proposito, cioè il blocco dell’account root. Per questo ti serve di nuovo il file di configurazione sshd_config che apri con un editor a tua scelta. Cerca la voce PermitRootLogin yes e sostituiscila con PermitRootLogin no. Dopo aver riavviato il servizio SSH, non è più possibile accedere da remoto all’account di root.

Tramite la riga AllowGroups puoi inoltre stabilire nel file di configurazione quale utente si può connettere al server tramite SSH. Per questo motivo crei semplicemente un gruppo (addgroup) e vi aggiungi l’utente desiderato (adduser). Infine, sostituisci il nome del gruppo scelto nel file sshd_config (ad esempio AllowGroups ssh_utente).

N.B.

Un’alternativa confortevole al blocco del login SSH è data dall’opzione che impedisce il login utente tramite password e ripiega, al suo posto, sull’autenticazione della chiave pubblica con le chiavi SSH.

Quinto passaggio: configurare la notifica per e-mail tramite login SSH

Come sempre, quando procedi dettagliatamente per rendere sicuro l’accesso SSH, dovresti tenere sotto controllo tutte le attività remote. In questo modo puoi constatare se hai configurato correttamente il servizio SSH del tuo server. Allo stesso tempo, monitorando bene le connessioni stabilite, vieni avvisato tempestivamente nel caso di accessi indesiderati e sei in grado di adottare le relative contromisure. Per questo basta un semplice script shell che invia automaticamente un’e-mail di notifica al tuo indirizzo a ogni login da remoto andato a buon fine sul tuo server.

Uno script di esempio per Linux /opt/shell-login.sh, che puoi creare facilmente in autonomia, deve contenere solo il seguente codice:

#!/bin/bash
echo "Login su $(nomehost) il $(date +%Y-%m-%d) alle $(date +%H:%M)"
echo "Utente: $USER"
echo
finger
txt

Infine, è necessario aggiungere la seguente riga nel file /etc/profile:

/opt/shell-login.sh | mailx -s "Login SSH sul server" indirizzoemail@example.com
txt

Con questa voce ti assicuri che lo script venga eseguito e che in questo caso si reagisca a un login tramite SSH con l’invio di un’e-mail di notifica all’indirizzo desiderato. La premessa è che venga assegnato allo script il permesso 755 (permessi di lettura e di esecuzione per tutti gli utenti, permessi di scrittura solo per il proprietario o la proprietaria), cosa che ottieni con il seguente comando:

chmod 755 /opt/shell-login.sh
bash
N.B.

Se un utente instaura una connessione SSH con un programma come WinSCP ma non porta a termine il login, lo script shell qui proposto non invia nessuna e-mail!

Sesto passaggio: bloccare le porte non utilizzate

Le porte aperte non rappresentano, in generale, nessun particolare rischio per la sicurezza. Visto che servono per la comunicazione con i singoli servizi e applicazioni, è persino strettamente necessario che determinate porte siano attivate per impostazione predefinita, ad esempio la porta 80 e 443 per le connessioni HTTP e HTTPS o la porta SSH scelta da te. Queste interfacce aperte diventano un rischio solo se i programmi di risposta presentano falle di sicurezza e i criminali ne approfittano.

Consiglio

Nel nostro articolo dedicato scopri come controllare le porte tramite port scanning per avere un riepilogo di tutte le porte aperte.

Se hai eseguito un’installazione di sistema minimale e installato solo poche applicazioni di terze parti, il numero delle altre porte necessarie sarà chiaro. Per proteggere il tuo server dagli attacchi, dovresti quindi bloccare tutte le porte aperte non necessarie nelle impostazioni del firewall. Pertanto, tutti i sistemi operativi principali hanno installato per impostazione predefinita lo strumento adatto con il software per il filtraggio dei pacchetti, iptables. Grazie a questo strumento crei delle regole fisse per la regolazione del traffico dati, dove è possibile impostare anche la definizione necessaria di porte desiderate e non desiderate.

Settimo passaggio: aggiornare regolarmente il software

Solitamente, le falle di sicurezza note nelle applicazioni vengono chiuse in brevissimo tempo con la pubblicazione di aggiornamenti. Se ti informi costantemente sugli aggiornamenti del sistema operativo e i programmi installati, procurandoti subito i nuovi aggiornamenti, ti assicuri così la migliore protezione per il tuo server. Quasi tutti i sistemi dei server offrono anche una funzione per scaricare e installare gli aggiornamenti importanti per la sicurezza automaticamente in background.

Se, ad esempio, vorresti rendere sicuro un server Windows, hai la possibilità nella sezione “Windows Update” di stabilire delle linee guida concrete per il processo di aggiornamento automatico. Qui configuri dettagliatamente quando e con quale frequenza si devono ricercare gli aggiornamenti, se devono essere installati subito e quando infine il sistema deve essere riavviato. Per i sistemi Linux esistono strumenti specifici come apt-listchanges o lo script shell apticron che ti informano giornalmente sui nuovi pacchetti software disponibili e li scaricano. Infine, altri script come unattended-upgrades si fanno carico dell’installazione automatica.

N.B.

Assicurati di mantenere il controllo sugli aggiornamenti fatti, anche nel caso di un processo di aggiornamento automatizzato. In questo modo puoi comprendere meglio gli errori che si verificano durante l’aggiornamento e reagire di conseguenza.

Ottavo passaggio: proteggere i server Windows e Linux contro gli attacchi di forza bruta

Uno dei metodi di attacco più facili e utilizzati maggiormente è il così chiamato metodo forza bruta. Con questa tecnica l’hacker cerca di ottenere le password servendosi di uno strumento. Quindi più sei stato scrupoloso nella scelta delle tue password, più è improbabile che questo metodo abbia successo.

Specialmente se offri un servizio a cui è possibile registrarsi tramite login, devi però partire dal presupposto che non tutte le persone procedono in modo altrettanto scrupoloso e cauto, come sarebbe necessario. Gli strumenti di analisi vengono in tuo soccorso: soluzioni come Fail2ban (sistemi Linux/POSIX) o RdpGuard (Windows) verificano i file di log del tuo server, riconoscono i comportamenti insoliti e bloccano gli indirizzi IP sospetti. Così puoi impostare in modo personalizzato dopo quanti tentativi errati entra in azione il blocco o per quanto tempo deve durare.

Consiglio

Un ulteriore passo per la messa in sicurezza del tuo server è la configurazione di un’autenticazione a due fattori. Con questo procedimento, per il login è necessario un altro componente, oltre all’inserimento della password, che è a disposizione solo dell’utente (ad esempio smartphone, smart card o un codice TAN).

Nono passaggio: usare strumenti per il monitoraggio

Se desideri rendere sicuro un server, dovresti anche occuparti del fatto che la combinazione di hardware e software funzioni come previsto. In questo caso non si tratta affatto di azioni una tantum che terminano dopo il corretto avvio del tuo ambiente server, ma piuttosto di un compito di lunga durata, che non dovresti perdere di vista.

In presenza di un elevato numero di diversi processi di sistema è ovviamente più facile a dirsi che a farsi, perciò dovresti ricorrere sin dall’inizio a strumenti per il monitoraggio che controllino tutti i processi sul tuo server e avvisino in caso si verifichino eventi strani.

Un programma di questo tipo, semplice e veloce da configurare, è Monit che può essere installato facilmente su molte distribuzioni Linux tramite il gestore di pacchetti. L’applicazione open source (con licenza GNU-AGPL) osserva dopo l’avvio processi, file, cloud, host, programmi o script. Si possono controllare anche le risorse del sistema, come la CPU, la RAM e l’utilizzo complessivo del sistema.

Se hai bisogno di più dettagli, si consiglia invece il software di monitoring Nagios. Questo programma è open source anche nella sua versione core, oltre che essere disponibile per Linux e Windows e ampliabile tramite diversi plugin per Nagios.

Novità: offerta VPS
Il tuo server virtuale a prezzi imbattibili

Prova il nostro VPS. I primi 30 giorni sono in omaggio e se allo scadere del periodo di prova non sarai convinto, ti rimborseremo tutte le spese sostenute.

Decimo passaggio: configurare i backup

Con le proposte di configurazione consigliate aumenti considerevolmente la sicurezza del tuo server. Tuttavia, anche la migliore configurazione e una gestione scrupolosa non garantiscono una protezione al cento per cento del server. Un altro pilastro fondamentale del tuo sistema di sicurezza dovrebbe perciò essere un’adeguata strategia di backup che ti consenta di ripristinare i file corrispondenti, qualora si verifichi un caso simile.

Agli strumenti efficaci che ti supportano non solo al momento della creazione, ma anche durante il ripristino della copia di backup, non manca proprio niente: un’applicazione gratuita che deve essere nominata a questo punto è il programma di sincronizzazione open source rsync che prende il nome dall’omonimo protocollo ed è disponibile in diverse varianti per quasi tutte le piattaforme comuni (macOS, Windows, Linux). Questo strumento mantiene la copia dei tuoi dati del server aggiornati, apportando tutte le modifiche fatte all’originale in tempo reale.

Oltre a un backup generale del server, anche il backup dei database rientra infine tra i passaggi obbligatori.

N.B.

Per garantire una protezione di backup il più possibile sicura, è preferibile che la cartella di backup si trovi su un supporto di memoria esterno (disco fisso portatile, un altro server, ecc.) e non sul server che desideri mettere in sicurezza.

Hai trovato questo articolo utile?
Vai al menu principale