Come configurare un server Ubuntu
Introduzione
Quando crei per la prima volta un nuovo server Ubuntu, dovresti eseguire alcuni importanti passaggi di configurazione come parte dell’impostazione iniziale. Questi passaggi aumenteranno la sicurezza e l’usabilità del tuo server e ti forniranno una solida base per le azioni successive.
Questo tutorial è stato validato su Ubuntu 22.04 LTS, 24.04 LTS e 24.10. I comandi utilizzano pacchetti predefiniti che rimangono stabili nelle versioni interim attuali e nelle future build 25.x che includono apt, OpenSSH e le impostazioni predefinite di UFW (Uncomplicated Firewall, il firewall semplificato di Ubuntu).
Nota: Le versioni interim di Ubuntu sono rilasci non-LTS che ricevono aggiornamenti di sicurezza e manutenzione per soli 9 mesi, solitamente ogni 6 mesi.
Punti chiave
- Accesso come root: Imparare come accedere in modo sicuro al server Ubuntu per la prima volta.
- Creare un utente non-root: Aggiungere un account utente normale con privilegi sudo per ridurre i rischi di sicurezza dell’uso quotidiano di root.
- Configurare l’autenticazione SSH con chiavi: Configurare le chiavi SSH per accessi sicuri senza password e copiare la chiave pubblica nel nuovo utente.
- Configurare il firewall con UFW: Abilitare e testare l’Uncomplicated Firewall (UFW) per limitare l’accesso, assicurandosi di mantenere SSH aperto per evitare il blocco.
- Verificare l’accesso prima di uscire da root: Confermare che il nuovo utente possa usare sudo e connettersi via SSH prima di chiudere la sessione root.
- Best practice valide per più ambienti: Questi passaggi iniziali si applicano a VM cloud, Droplet, VPS e server bare metal.
Configurazione iniziale del server con Ubuntu
- Accesso come root
- Creazione di un nuovo utente
- Assegnazione dei privilegi amministrativi
- Configurazione di un firewall
- Abilitazione dell’accesso esterno per l’utente regolare
Passaggio 1 – Accesso come root
Per accedere al tuo server, devi conoscere l’indirizzo IP pubblico del server. Avrai inoltre bisogno della password o della chiave privata dell’account root se hai installato una chiave SSH per l’autenticazione.
Se non sei attualmente connesso al tuo server, accedi come utente root utilizzando il comando seguente. Sostituisci la parte evidenziata your_server_ip con l’indirizzo IP pubblico del tuo server:
ssh root@your_server_ip
Accetta l’avviso sull’autenticità dell’host se viene visualizzato. Se il server utilizza l’autenticazione tramite password, inserisci la password di root per accedere. Se utilizzi una chiave SSH protetta da passphrase, potrebbe essere necessario inserire la passphrase la prima volta che utilizzi la chiave in ogni sessione.
Se è la prima volta che accedi al server utilizzando una password, potrebbe esserti richiesto di cambiare la password di root. Segui le istruzioni per modificarla se ricevi un prompt.
Informazioni su root
L’utente root è l’utente amministrativo in un ambiente Linux con privilegi elevati. A causa dei privilegi avanzati dell’account root, è fortemente sconsigliato utilizzarlo regolarmente. L’account root può apportare modifiche molto distruttive, anche accidentalmente.
Il passaggio successivo consiste nel creare un nuovo account utente con privilegi ridotti per l’uso quotidiano. In seguito, verrà mostrato come ottenere temporaneamente privilegi elevati quando necessario.
Passaggio 2 – Creazione di un nuovo utente
Dopo aver effettuato l’accesso come root, puoi aggiungere il nuovo account utente. In futuro, accederai con questo nuovo account invece che con root.
Questo esempio crea un nuovo utente chiamato simone, ma dovresti sostituirlo con un nome utente a tua scelta:
adduser simone
Ti verranno poste alcune domande, a partire dalla password dell’account.
Inserisci una password sicura e, facoltativamente, compila eventuali informazioni aggiuntive. Queste informazioni non sono obbligatorie e puoi premere INVIO in qualsiasi campo per saltarlo.
Passaggio 3 – Assegnazione dei privilegi amministrativi
Ora disponi di un nuovo account utente con privilegi standard. Tuttavia, a volte sarà necessario eseguire attività amministrative come utente root.
Per evitare di disconnetterti dall’utente regolare e riconnetterti come root, puoi configurare i privilegi di superutente (sudo) per il tuo account.
Questi privilegi consentono all’utente normale di eseguire comandi con privilegi amministrativi anteponendo la parola sudo al comando.
Per aggiungere questi privilegi al nuovo utente, è necessario aggiungerlo al gruppo di sistema sudo. Su Ubuntu, per impostazione predefinita, gli utenti che appartengono al gruppo sudo possono utilizzare il comando sudo.
Come root, esegui il comando seguente per aggiungere il nuovo utente al gruppo sudo (sostituisci simone con il tuo nome utente):
usermod -aG sudo simone
Ora puoi digitare sudo prima dei comandi per eseguirli con privilegi di superutente quando sei connesso come utente regolare.
Passaggio 4 – Configurazione di un firewall
I server Ubuntu possono utilizzare il firewall UFW per garantire che siano consentite solo le connessioni a determinati servizi. Puoi configurare un firewall di base utilizzando questa applicazione.
Le applicazioni possono registrare i propri profili con UFW al momento dell’installazione. Questi profili consentono a UFW di gestire le applicazioni per nome. OpenSSH, il servizio che consente di connettersi al server, ha un profilo registrato con UFW.
Puoi esaminare l’elenco dei profili UFW installati digitando:
ufw app list
Output:
Available applications:
OpenSSH
Devi assicurarti che il firewall consenta le connessioni SSH, in modo da poter accedere nuovamente al server in futuro. Consenti queste connessioni digitando:
ufw allow OpenSSH
Ora abilita il firewall digitando:
ufw enable
Digita y e premi INVIO per procedere. Puoi verificare che le connessioni SSH siano ancora consentite digitando:
ufw status
Output:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Il firewall sta attualmente bloccando tutte le connessioni eccetto SSH. Se installi e configuri servizi aggiuntivi, dovrai modificare le impostazioni del firewall per consentire il nuovo traffico verso il server.
Puoi apprendere alcune operazioni comuni di UFW consultando la guida UFW Essentials.
Per aggiungere successivamente l’accesso HTTP, consenti solo i servizi necessari:
ufw allow 80/tcp
ufw allow 443/tcp
Passaggio 5 – Abilitare l’accesso esterno per l’utente regolare
Ora che disponi di un utente regolare per l’uso quotidiano, devi assicurarti di poterti connettere all’account direttamente tramite SSH.
Nota: Fino a quando non verifichi di poter accedere e utilizzare sudo con il nuovo utente, è consigliabile rimanere connessi come root. In caso di problemi di connessione, potrai risolverli ed effettuare le modifiche necessarie come root.
La configurazione dell’accesso SSH per il nuovo utente dipende dal fatto che l’account root utilizzi l’autenticazione tramite password o tramite chiavi SSH.
Caso in cui l’account root utilizza l’autenticazione tramite password
Se hai effettuato l’accesso all’account root utilizzando una password, l’autenticazione tramite password è abilitata per SSH. Puoi accedere al nuovo account utente aprendo una nuova sessione di terminale e utilizzando SSH con il nuovo nome utente:
ssh simone@your_server_ip
Dopo aver inserito la password dell’utente regolare, verrai connesso. Ricorda che, se devi eseguire un comando con privilegi amministrativi, devi anteporre sudo al comando:
sudo command_to_run
Ti verrà richiesto di inserire la password dell’utente regolare la prima volta che utilizzi sudo in ogni sessione (e periodicamente anche in seguito).
Per migliorare la sicurezza del server, è fortemente consigliato configurare l’autenticazione SSH tramite chiavi invece di utilizzare l’autenticazione tramite password.
Caso in cui l’account root utilizza l’autenticazione tramite chiave SSH
Se hai effettuato l’accesso all’account root utilizzando chiavi SSH, l’autenticazione tramite password è disabilitata per SSH. Per accedere come utente regolare tramite una chiave SSH, devi aggiungere una copia della chiave pubblica locale nel file ~/.ssh/authorized_keys del nuovo utente.
Poiché la tua chiave pubblica è già presente nel file ~/.ssh/authorized_keys dell’account root sul server, puoi copiare quel file e la struttura delle directory nel nuovo account utente utilizzando la sessione corrente.
Il modo più semplice per copiare i file mantenendo correttamente proprietà e permessi è utilizzare il comando rsync. Questo comando copierà la directory .ssh dell’utente root, preserverà i permessi e modificherà i proprietari dei file in un unico comando.
Assicurati di sostituire le parti evidenziate del comando seguente con il nome del tuo utente regolare:
Nota: Il comando rsync tratta in modo diverso le sorgenti e le destinazioni che terminano con una barra finale rispetto a quelle senza barra finale. Assicurati che la directory sorgente (~/.ssh) non includa una barra finale.
Se aggiungi accidentalmente una barra finale, rsync copierà il contenuto della directory ~/.ssh dell’account root nella home dell’utente sudo invece di copiare l’intera struttura della directory .ssh. In tal caso, SSH non riuscirà a trovare e utilizzare i file correttamente.
rsync --archive --chown=simone:simone ~/.ssh /home/simone
Ora apri una nuova sessione di terminale sulla tua macchina locale e utilizza SSH con il nuovo nome utente:
ssh simone@your_server_ip
Dovresti essere connesso al server con il nuovo account utente senza utilizzare una password. Ricorda che, se devi eseguire un comando con privilegi amministrativi, devi anteporre sudo al comando:
sudo command_to_run
Ti verrà richiesto di inserire la password dell’utente regolare la prima volta che utilizzi sudo in ogni sessione (e periodicamente anche in seguito).
FAQ
1. Ubuntu può essere utilizzato come server?
Assolutamente sì. Ubuntu è uno dei sistemi operativi per server più utilizzati al mondo ed è progettato per un’ampia gamma di scenari, dalle istanze VPS leggere ai cluster di livello enterprise.
Principali vantaggi di Ubuntu Server:
| Caratteristica | Descrizione |
|---|---|
| Open-source e gratuito | Nessun costo di licenza richiesto. |
| Supporto LTS | Le versioni LTS ricevono 5 anni di aggiornamenti. |
| Pronto per il cloud | Immagini ottimizzate per i principali provider cloud. |
| DevOps friendly | Include OpenSSH, apt e systemd. |
| Ampio supporto hardware | Funziona su x86, ARM, PPC e altro. |
Esempi di attività server gestite bene da Ubuntu:
- Web hosting (Apache, Nginx)
- Database (PostgreSQL, MySQL, MongoDB)
- Application server (Node.js, Python, Java)
- Orchestrazione di container (Docker, Kubernetes)
- Archiviazione file e backup
Esempio: per verificare la versione di Ubuntu:
lsb_release -a
# OR
cat /etc/os-release
Per ulteriori informazioni su SSH e gestione dei pacchetti, consulta la guida alle chiavi OpenSSH.
2. Ubuntu Server è gratuito?
Sì. Ubuntu Server è completamente gratuito da scaricare, installare e utilizzare per qualsiasi scopo: personale, educativo o commerciale. Non ci sono costi di licenza o abbonamento.
Nota: Ubuntu Pro è necessario solo se richiedi manutenzione di sicurezza estesa, funzionalità di conformità o supporto enterprise. Per la maggior parte degli utenti e dei carichi di lavoro tipici, la versione gratuita di Ubuntu Server è più che sufficiente.
3. Quale versione di Ubuntu dovrei scegliere per un nuovo server?
Raccomandazione: utilizza una versione Long Term Support (LTS). Le versioni LTS sono pronte per la produzione e ricevono aggiornamenti per cinque anni.
Versioni LTS più diffuse:
| Versione | Data di rilascio | Fine supporto | Note |
|---|---|---|---|
| Ubuntu 24.04 LTS | Aprile 2024 | Aprile 2029 | Ultima versione; consigliata per nuove installazioni |
| Ubuntu 22.04 LTS | Aprile 2022 | Aprile 2027 | Ampio utilizzo; altamente stabile |
Per verificare la versione in uso:
lsb_release -cs
Questa guida e i relativi comandi sono validati sia per Ubuntu 24.04 LTS sia per Ubuntu 22.04 LTS.
4. Dovrei disabilitare l’autenticazione SSH tramite password?
Sì, per una sicurezza elevata.
Dopo aver configurato l’autenticazione SSH tramite chiave e aver verificato che l’accesso funzioni correttamente, disabilitare l’autenticazione tramite password riduce l’esposizione agli attacchi brute-force.
Passaggi:
Apri il file di configurazione SSH:
sudo nano /etc/ssh/sshd_config
Individua e imposta:
PasswordAuthentication no
Riavvia il servizio SSH:
sudo systemctl reload sshd
Importante: assicurati sempre di avere un metodo alternativo per accedere al server prima di applicare questa modifica.
5. Devo cambiare la porta SSH predefinita?
Cambiare la porta SSH predefinita (22) è facoltativo e non sostituisce una corretta configurazione delle chiavi SSH o del firewall.
| Cambiare la porta 22 | Effetti |
|---|---|
| Riduce leggermente le scansioni | I bot automatizzati potrebbero ignorare porte non standard |
| Non è una misura di sicurezza completa | Gli attaccanti possono comunque individuare le porte aperte |
| Richiede aggiornamenti al firewall | Le regole UFW devono essere modificate |
Se cambi la porta:
Modifica /etc/ssh/sshd_config:
Port 2277
Aggiorna le regole UFW:
sudo ufw allow 2277/tcp
Connettiti utilizzando:
ssh -p 2277 user@your_server_ip
Documenta sempre la nuova porta per evitare di rimanere bloccato fuori dal server.
Usa questa misura come ulteriore livello di sicurezza, non come difesa principale.
Conclusione
Congratulazioni! Hai completato il processo essenziale di configurazione iniziale di un server Ubuntu. Seguendo questi passaggi, hai migliorato notevolmente la sicurezza del tuo server e creato una base solida per configurazioni future.
Ora disponi di un account non-root con privilegi sudo per un’amministrazione quotidiana più sicura, di un firewall (UFW) configurato per consentire solo il traffico esplicitamente autorizzato e di un’autenticazione SSH sicura tramite chiavi, riducendo in modo significativo il rischio di accessi non autorizzati.
Con queste best practice implementate, il tuo server Ubuntu è pronto per l’hosting web, il deployment di applicazioni e ulteriori personalizzazioni. Questa configurazione rappresenta una base fondamentale per quasi tutti i progetti server Linux e comprendere questi concetti ti aiuterà a gestire con sicurezza infrastrutture cloud o on-premise.
Ricorda di conservare le nuove credenziali, mantenere il sistema aggiornato regolarmente e continuare a formarti per garantire sicurezza e affidabilità nel tempo.
Crediti: Questo articolo è la traduzione italiana di
Initial Server Setup with Ubuntu
pubblicato su DigitalOcean Community.
