La con­fi­gu­ra­zio­ne sicura del proprio server è uno dei compiti più im­por­tan­ti per gli am­mi­ni­stra­to­ri e le am­mi­ni­stra­tri­ci. Questo vale non solo per i server gestiti au­to­no­ma­men­te, ma anche nel caso in cui si noleggi l’hardware. Per garantire una sicurezza totale, si devono im­ple­men­ta­re misure come la pro­te­zio­ne con password, applicare buone im­po­sta­zio­ni SSH e ag­gior­na­men­ti regolari.

Chi ha la re­spon­sa­bi­li­tà di con­fi­gu­ra­re il server in modo sicuro?

Per godere della massima libertà di con­fi­gu­ra­zio­ne, la soluzione ottimale è gestire au­to­no­ma­men­te un proprio server. Un’al­ter­na­ti­va adeguata è fornita dai root server che sono di­spo­ni­bi­li presso molti provider e ga­ran­ti­sco­no l’accesso all’account di root. In entrambi i casi a farsi carico dei passaggi di gestione ele­men­ta­ri, come l’in­stal­la­zio­ne, la strut­tu­ra­zio­ne e la ma­nu­ten­zio­ne del server, è esclu­si­va­men­te chi noleggia il server.

In ogni caso bisogna fare at­ten­zio­ne: una procedura errata nella root ha un impatto par­ti­co­lar­men­te grave. Tuttavia, una procedura corretta può creare la base perfetta per un server stabile, sicuro e per­for­man­te.

Server dedicati
Per­for­man­ce e in­no­va­zio­ne
  • Pro­ces­so­ri al­l'a­van­guar­dia di ultima ge­ne­ra­zio­ne
  • Hardware dedicato ad alte pre­sta­zio­ni
  • Data center cer­ti­fi­ca­ti ISO

Come pro­teg­ge­re il tuo server: istru­zio­ni guidate

In­di­pen­den­te­men­te dal fatto che tu voglia pro­teg­ge­re 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ù im­por­tan­ti qui di seguito.

Primo passaggio: eseguire un’in­stal­la­zio­ne minima

Prima ancora di iniziare a prendere i prov­ve­di­men­ti veri e propri per con­fi­gu­ra­re il tuo server in modo sicuro, puoi già in­fluen­za­re il suc­ces­si­vo po­ten­zia­le di sicurezza del tuo progetto web. Non importa se desideri uti­liz­za­re un sistema operativo Windows o Linux, al momento dell’in­stal­la­zio­ne vale il seguente principio: un server dovrebbe contenere solo quei software necessari per lo svol­gi­men­to dei suoi compiti.

Questo perché ogni ap­pli­ca­zio­ne in­stal­la­ta rap­pre­sen­ta un po­ten­zia­le rischio per la sicurezza e può ri­flet­ter­si ne­ga­ti­va­men­te sulla per­for­man­ce. Per offrire agli hacker il minor numero possibile di punti di attacco, dovresti perciò in­stal­la­re o attivare i com­po­nen­ti di sistema necessari e ricorrere solo a software ve­ri­fi­ca­ti di terze parti.

Secondo passaggio: assegnare una password sicura

Subito dopo l’in­stal­la­zio­ne dovresti impostare un accesso admin sicuro (Windows) o la password di root (Linux). Per im­po­sta­zio­ne pre­de­fi­ni­ta, non è definito alcun valore e l’account am­mi­ni­stra­to­re è quindi bloccato finché non inserisci una voce cor­ri­spon­den­te. Di norma, dopo l’in­stal­la­zio­ne il sistema operativo richiede au­to­ma­ti­ca­men­te la creazione di un account con password, che da quel momento in poi funziona come accesso am­mi­ni­stra­to­re o root.

Se il tuo server Linux si trova presso un provider e disponi quindi di un login di root pre­e­si­sten­te, devi cambiare subito la password. A questo scopo effettua l’accesso tramite SSH sul tuo server e inserisci il seguente comando nel ri­spet­ti­vo terminale:

passwd
bash

Suc­ces­si­va­men­te puoi definire una password sicura che devi ancora ve­ri­fi­ca­re. Fai at­ten­zio­ne a scegliere una password suf­fi­cien­te­men­te 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 di­spo­si­zio­ne nel caso te la di­men­ti­cas­si.

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 au­to­ma­ti­ca­men­te come am­mi­ni­stra­to­re. Puoi così cambiare la password e scegliere quella che pre­fe­ri­sci.

Terzo passaggio: mo­di­fi­ca­re la porta SSH

Per l’accesso al server tramite SSH è prevista per im­po­sta­zio­ne pre­de­fi­ni­ta la porta TCP/UDP 22, inserita au­to­ma­ti­ca­men­te anche nel caso in cui il sistema sia stato in­stal­la­to da zero. Con­se­guen­te­men­te i criminali che sono alla ricerca di sistemi per­mea­bi­li avviano i loro tentativi di attacco, cioè dei tentativi di login au­to­ma­tiz­za­ti, so­prat­tut­to tramite questa porta. Definendo un’altra porta per le con­nes­sio­ni remote criptate, minimizzi no­te­vol­men­te il rischio di accessi in­de­si­de­ra­ti.

Perciò devi solo mo­di­fi­ca­re il file di con­fi­gu­ra­zio­ne 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 so­sti­tui­sci 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 pro­to­col­lo HTTP).

N.B.

Prima che le modifiche nel file sshd_config risultino attive, è ne­ces­sa­rio 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.

Di­sat­ti­va­re 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, al­tri­men­ti un hacker, che è entrato in possesso della password, potrebbe accedere al server tramite accesso remoto grazie a questo account.

Prima di poter in­tra­pren­de­re queste misure, hai bisogno però di almeno un altro account che si può collegare con il server per non essere bloccato com­ple­ta­men­te 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 cor­ret­ta­men­te 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 con­fi­gu­ra­zio­ne sshd_config che apri con un editor a tua scelta. Cerca la voce PermitRootLogin yes e so­sti­tui­sci­la 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 con­fi­gu­ra­zio­ne quale utente si può con­net­te­re al server tramite SSH. Per questo motivo crei sem­pli­ce­men­te un gruppo (addgroup) e vi aggiungi l’utente de­si­de­ra­to (adduser). Infine, so­sti­tui­sci il nome del gruppo scelto nel file sshd_config (ad esempio AllowGroups ssh_utente).

N.B.

Un’al­ter­na­ti­va con­for­te­vo­le al blocco del login SSH è data dall’opzione che impedisce il login utente tramite password e ripiega, al suo posto, sull’au­ten­ti­ca­zio­ne della chiave pubblica con le chiavi SSH.

Quinto passaggio: con­fi­gu­ra­re la notifica per e-mail tramite login SSH

Come sempre, quando procedi det­ta­glia­ta­men­te per rendere sicuro l’accesso SSH, dovresti tenere sotto controllo tutte le attività remote. In questo modo puoi con­sta­ta­re se hai con­fi­gu­ra­to cor­ret­ta­men­te il servizio SSH del tuo server. Allo stesso tempo, mo­ni­to­ran­do bene le con­nes­sio­ni stabilite, vieni avvisato tem­pe­sti­va­men­te nel caso di accessi in­de­si­de­ra­ti e sei in grado di adottare le relative con­tro­mi­su­re. Per questo basta un semplice script shell che invia au­to­ma­ti­ca­men­te 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 fa­cil­men­te 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, è ne­ces­sa­rio ag­giun­ge­re 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 de­si­de­ra­to. La premessa è che venga assegnato allo script il permesso 755 (permessi di lettura e di ese­cu­zio­ne per tutti gli utenti, permessi di scrittura solo per il pro­prie­ta­rio o la pro­prie­ta­ria), cosa che ottieni con il seguente comando:

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

Se un utente instaura una con­nes­sio­ne 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 uti­liz­za­te

Le porte aperte non rap­pre­sen­ta­no, in generale, nessun par­ti­co­la­re rischio per la sicurezza. Visto che servono per la co­mu­ni­ca­zio­ne con i singoli servizi e ap­pli­ca­zio­ni, è persino stret­ta­men­te ne­ces­sa­rio che de­ter­mi­na­te porte siano attivate per im­po­sta­zio­ne pre­de­fi­ni­ta, ad esempio la porta 80 e 443 per le con­nes­sio­ni HTTP e HTTPS o la porta SSH scelta da te. Queste in­ter­fac­ce aperte diventano un rischio solo se i programmi di risposta pre­sen­ta­no falle di sicurezza e i criminali ne ap­pro­fit­ta­no.

Consiglio

Nel nostro articolo dedicato scopri come con­trol­la­re le porte tramite port scanning per avere un riepilogo di tutte le porte aperte.

Se hai eseguito un’in­stal­la­zio­ne di sistema minimale e in­stal­la­to solo poche ap­pli­ca­zio­ni di terze parti, il numero delle altre porte ne­ces­sa­rie sarà chiaro. Per pro­teg­ge­re il tuo server dagli attacchi, dovresti quindi bloccare tutte le porte aperte non ne­ces­sa­rie nelle im­po­sta­zio­ni del firewall. Pertanto, tutti i sistemi operativi prin­ci­pa­li hanno in­stal­la­to per im­po­sta­zio­ne pre­de­fi­ni­ta lo strumento adatto con il software per il fil­trag­gio dei pacchetti, iptables. Grazie a questo strumento crei delle regole fisse per la re­go­la­zio­ne del traffico dati, dove è possibile impostare anche la de­fi­ni­zio­ne ne­ces­sa­ria di porte de­si­de­ra­te e non de­si­de­ra­te.

Settimo passaggio: ag­gior­na­re re­go­lar­men­te il software

So­li­ta­men­te, le falle di sicurezza note nelle ap­pli­ca­zio­ni vengono chiuse in bre­vis­si­mo tempo con la pub­bli­ca­zio­ne di ag­gior­na­men­ti. Se ti informi co­stan­te­men­te sugli ag­gior­na­men­ti del sistema operativo e i programmi in­stal­la­ti, pro­cu­ran­do­ti subito i nuovi ag­gior­na­men­ti, ti assicuri così la migliore pro­te­zio­ne per il tuo server. Quasi tutti i sistemi dei server offrono anche una funzione per scaricare e in­stal­la­re gli ag­gior­na­men­ti im­por­tan­ti per la sicurezza au­to­ma­ti­ca­men­te in back­ground.

Se, ad esempio, vorresti rendere sicuro un server Windows, hai la pos­si­bi­li­tà nella sezione “Windows Update” di stabilire delle linee guida concrete per il processo di ag­gior­na­men­to au­to­ma­ti­co. Qui configuri det­ta­glia­ta­men­te quando e con quale frequenza si devono ricercare gli ag­gior­na­men­ti, se devono essere in­stal­la­ti subito e quando infine il sistema deve essere riavviato. Per i sistemi Linux esistono strumenti specifici come apt-list­chan­ges o lo script shell apticron che ti informano gior­nal­men­te sui nuovi pacchetti software di­spo­ni­bi­li e li scaricano. Infine, altri script come unat­ten­ded-upgrades si fanno carico dell’in­stal­la­zio­ne au­to­ma­ti­ca.

N.B.

As­si­cu­ra­ti di mantenere il controllo sugli ag­gior­na­men­ti fatti, anche nel caso di un processo di ag­gior­na­men­to au­to­ma­tiz­za­to. In questo modo puoi com­pren­de­re meglio gli errori che si ve­ri­fi­ca­no durante l’ag­gior­na­men­to e reagire di con­se­guen­za.

Ottavo passaggio: pro­teg­ge­re i server Windows e Linux contro gli attacchi di forza bruta

Uno dei metodi di attacco più facili e uti­liz­za­ti mag­gior­men­te è il così chiamato metodo forza bruta. Con questa tecnica l’hacker cerca di ottenere le password ser­ven­do­si di uno strumento. Quindi più sei stato scru­po­lo­so nella scelta delle tue password, più è im­pro­ba­bi­le che questo metodo abbia successo.

Spe­cial­men­te se offri un servizio a cui è possibile re­gi­strar­si tramite login, devi però partire dal pre­sup­po­sto che non tutte le persone procedono in modo al­tret­tan­to scru­po­lo­so e cauto, come sarebbe ne­ces­sa­rio. Gli strumenti di analisi vengono in tuo soccorso: soluzioni come Fail2ban (sistemi Linux/POSIX) o RdpGuard (Windows) ve­ri­fi­ca­no i file di log del tuo server, ri­co­no­sco­no i com­por­ta­men­ti insoliti e bloccano gli indirizzi IP sospetti. Così puoi impostare in modo per­so­na­liz­za­to 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 con­fi­gu­ra­zio­ne di un’au­ten­ti­ca­zio­ne a due fattori. Con questo pro­ce­di­men­to, per il login è ne­ces­sa­rio un altro com­po­nen­te, oltre all’in­se­ri­men­to della password, che è a di­spo­si­zio­ne solo dell’utente (ad esempio smart­pho­ne, smart card o un codice TAN).

Nono passaggio: usare strumenti per il mo­ni­to­rag­gio

Se desideri rendere sicuro un server, dovresti anche occuparti del fatto che la com­bi­na­zio­ne 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 è ov­via­men­te più facile a dirsi che a farsi, perciò dovresti ricorrere sin dall’inizio a strumenti per il mo­ni­to­rag­gio che con­trol­li­no tutti i processi sul tuo server e avvisino in caso si ve­ri­fi­chi­no eventi strani.

Un programma di questo tipo, semplice e veloce da con­fi­gu­ra­re, è Monit che può essere in­stal­la­to fa­cil­men­te su molte di­stri­bu­zio­ni Linux tramite il gestore di pacchetti. L’ap­pli­ca­zio­ne open source (con licenza GNU-AGPL) osserva dopo l’avvio processi, file, cloud, host, programmi o script. Si possono con­trol­la­re anche le risorse del sistema, come la CPU, la RAM e l’utilizzo com­ples­si­vo del sistema.

Se hai bisogno di più dettagli, si consiglia invece il software di mo­ni­to­ring Nagios. Questo programma è open source anche nella sua versione core, oltre che essere di­spo­ni­bi­le per Linux e Windows e am­plia­bi­le tramite diversi plugin per Nagios.

Novità: offerta VPS
Il tuo server virtuale a prezzi im­bat­ti­bi­li

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

Decimo passaggio: con­fi­gu­ra­re i backup

Con le proposte di con­fi­gu­ra­zio­ne con­si­glia­te aumenti con­si­de­re­vol­men­te la sicurezza del tuo server. Tuttavia, anche la migliore con­fi­gu­ra­zio­ne e una gestione scru­po­lo­sa non ga­ran­ti­sco­no una pro­te­zio­ne al cento per cento del server. Un altro pilastro fon­da­men­ta­le del tuo sistema di sicurezza dovrebbe perciò essere un’adeguata strategia di backup che ti consenta di ri­pri­sti­na­re i file cor­ri­spon­den­ti, qualora si verifichi un caso simile.

Agli strumenti efficaci che ti sup­por­ta­no non solo al momento della creazione, ma anche durante il ri­pri­sti­no della copia di backup, non manca proprio niente: un’ap­pli­ca­zio­ne gratuita che deve essere nominata a questo punto è il programma di sin­cro­niz­za­zio­ne open source rsync che prende il nome dall’omonimo pro­to­col­lo ed è di­spo­ni­bi­le in diverse varianti per quasi tutte le piat­ta­for­me comuni (macOS, Windows, Linux). Questo strumento mantiene la copia dei tuoi dati del server ag­gior­na­ti, ap­por­tan­do 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 ob­bli­ga­to­ri.

N.B.

Per garantire una pro­te­zio­ne di backup il più possibile sicura, è pre­fe­ri­bi­le 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.

Vai al menu prin­ci­pa­le