Configurare e mettere in sicurezza un vServer Debian: guida passo passo per principianti (Parte 1 di 3)
Serie „Il tuo server – da 0 a sicuro" · 3 parti:
- Configurare & mettere in sicurezza un vServer Debian ← Sei qui
- Installare & configurare Froxlor
- Configurare bene l'e-mail: SPF, DKIM & DMARC
Questa è la Parte 1. Porta il tuo server appena noleggiato a uno stato di base sicuro. Su questo server, nella Parte 2 installeremo il pannello di gestione Froxlor e nella Parte 3 configureremo l'invio di e-mail.

Indice
- Prerequisiti
- Passo 1: Connettersi al server via SSH
- Passo 2: Aggiornare il sistema
- Passo 3: Nome host, fuso orario e lingua
- Passo 4: Creare un utente con privilegi sudo
- Passo 5: Mettere in sicurezza SSH (disattivare il login root, login con chiave)
- Passo 6: Configurare il firewall (ufw)
- Passo 7: Protezione anti-brute-force con Fail2ban
- Passo 8: Aggiornamenti di sicurezza automatici
- Checklist: il tuo server è sicuro?
- Domande frequenti (FAQ)
- Come si prosegue?
- Fonti
Hai appena noleggiato un vServer (VPS) e ti chiedi: „E adesso?" È proprio qui che iniziamo. Questa guida è pensata per principianti assoluti. Spieghiamo con parole semplici cosa facciamo e perché – e ogni comando puoi semplicemente copiarlo e incollarlo. Alla fine avrai un server aggiornato, protetto dagli attacchi più comuni.
Usiamo Debian 12 (Bookworm), uno dei sistemi server più diffusi e stabili. Se usi Ubuntu, quasi tutti i comandi sono identici.
Importante: In tutti i comandi sostituisci i segnaposto con i tuoi valori reali –
SERVER-IPcon l'indirizzo IP del tuo server (nell'e-mail di conferma del provider) enome-utentecon un nome a scelta.
Prerequisiti
- Un vServer/VPS noleggiato con Debian 12. Non ne hai ancora uno? Provider: ad es. IONOS, Hetzner o webtropia.
- L'indirizzo IP e la password root del server (ricevuti via e-mail dal provider).
- Un terminale sul tuo computer: preinstallato su macOS e Linux („Terminale"), su Windows usa PowerShell (preinstallato) o PuTTY.
Niente di più. Iniziamo.
Passo 1: Connettersi al server via SSH
„SSH" è una connessione remota cifrata al tuo server – digiti i comandi sul tuo computer, vengono eseguiti sul server. Apri il terminale e connettiti come utente root:
ssh root@SERVER-IP
La prima volta ti viene chiesto se ti fidi del server – digita yes e premi Invio. Poi inserisci la password root (la digitazione è invisibile, è normale). Una volta connesso, la riga appare così:
root@tuo-server:~#
Congratulazioni – sei dentro. (Un'introduzione dettagliata a SSH si trova nella wiki di Debian.)
Passo 2: Aggiornare il sistema
Un server appena installato contiene spesso pacchetti obsoleti con falle note. Il primo passo è quindi sempre: aggiornare tutto. Con questo comando il server scarica l'elenco degli aggiornamenti, li installa, rimuove i pacchetti non più necessari e fa pulizia:
apt update && apt full-upgrade -y && apt autoremove -y && apt clean
Può richiedere qualche minuto. Se compare un messaggio che indica la necessità di riavviare, riavvia il server:
reboot
Dopo il riavvio la connessione si interrompe per un attimo. Attendi ~30 secondi e riconnettiti con ssh root@SERVER-IP.
Passo 3: Nome host, fuso orario e lingua
Affinché i log abbiano marche temporali corrette e il server abbia un nome ordinato, impostiamo tre piccole cose.
Nome host (un nome per il server, ad es. web01):
hostnamectl set-hostname web01
Impostare il fuso orario (qui: Europa/Roma; adatta):
timedatectl set-timezone Europe/Rome
Installare i pacchetti lingua (locales) e generare l'UTF-8:
apt install -y locales
sed -i 's/# it_IT.UTF-8/it_IT.UTF-8/' /etc/locale.gen
locale-gen
Verifica il risultato:
timedatectl
Dovrebbe comparire „Time zone: Europe/Rome".
Passo 4: Creare un utente con privilegi sudo
Lavorare sempre come root è pericoloso – un solo errore di battitura può danneggiare l'intero sistema. Meglio: un utente normale che ottiene i diritti di amministratore solo quando serve, tramite la parola precedente sudo.
Crea l'utente (sostituisci nome-utente) e imposta una password robusta quando richiesto:
adduser nome-utente
Le altre domande (nome, telefono…) puoi saltarle con Invio. Ora assegna i privilegi sudo all'utente:
usermod -aG sudo nome-utente
Provalo prima di proseguire. Apri una seconda finestra del terminale e accedi con il nuovo utente:
ssh nome-utente@SERVER-IP
Verifica che sudo funzioni:
sudo whoami
Se dopo aver inserito la password compare root, va tutto bene. Lascia aperta questa seconda finestra – ci serve come rete di sicurezza nel passo successivo.
Passo 5: Mettere in sicurezza SSH (disattivare il login root, login con chiave)
Ora rendiamo l'accesso remoto molto più sicuro. Due misure: l'accesso con chiave SSH invece della password e nessun login root diretto.
Attenzione – rischio di blocco: In questo passo modifichiamo l'accesso SSH. Lascia assolutamente aperta la finestra funzionante del Passo 4. Così potrai rientrare se qualcosa va storto.
Consiglio Windows – mi servono PuTTY e Pageant? Non per forza. Windows 10/11 include già OpenSSH, e i comandi seguenti (
ssh-keygen,ssh) funzionano direttamente in PowerShell – come su macOS/Linux. Se preferisci gli strumenti PuTTY (o hai un Windows più vecchio), procedi così:
>
1. Genera una chiave con PuTTYgen: imposta „Type of key" su EdDSA → Ed25519, clicca Generate, muovi il mouse. Salva la chiave privata come
.ppk; copia la chiave pubblica mostrata (campo „Public key for pasting…") negli appunti. 2. Metti la chiave pubblica sul server nel file~/.ssh/authorized_keysdel tuo utente (una riga). 3. Carica la chiave privata in Pageant (l'agente chiavi di PuTTY) – così non devi riselezionarla a ogni connessione. 4. Connettiti con PuTTY (host:nome-utente@SERVER-IP).
>
PuTTYgen e Pageant sono nel pacchetto PuTTY: putty.org. Le due vie sono equivalenti – qui restiamo su OpenSSH integrato perché richiede meno passaggi.
5.1 Genera una chiave sul tuo computer. Esegui questo comando in un terminale sul tuo PC (non sul server) e conferma le domande con Invio:
ssh-keygen -t ed25519 -C "mio-server"
5.2 Copia la chiave pubblica sul server (sempre dal tuo PC):
ssh-copy-id nome-utente@SERVER-IP
Su Windows senza ssh-copy-id usa invece:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh nome-utente@SERVER-IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
5.3 Test: Riconnettiti – ora non dovrebbe più essere richiesta alcuna password:
ssh nome-utente@SERVER-IP
5.4 Disattiva il login con password e il login root. Sul server, modifica la configurazione SSH con l'editor nano:
sudo nano /etc/ssh/sshd_config
Cerca le righe seguenti (o aggiungile) e impostale esattamente così:
PermitRootLogin no
PasswordAuthentication no
Salva Ctrl+O, Invio, chiudi Ctrl+X. Poi ricarica il servizio SSH:
sudo systemctl restart ssh
Importante: Non chiudere ancora la finestra attuale. Aprine una nuova e verifica che l'accesso come nome-utente funzioni ancora – e che ssh root@SERVER-IP venga ora rifiutato. Solo allora il passo è riuscito. Approfondimento nella wiki Debian su SSH.
Passo 6: Configurare il firewall (ufw)
Un firewall blocca tutte le porte di rete tranne le poche che servono davvero. Usiamo ufw („Uncomplicated Firewall") – semplice e adatto ai principianti.
Installa e imposta le regole di base (blocca tutto il traffico in entrata, consenti quello in uscita):
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
Consenti l'accesso SSH prima dell'attivazione – altrimenti ti blocchi fuori:
sudo ufw allow OpenSSH
Per il futuro server web (Froxlor nella Parte 2) apriamo anche le porte web:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ora attiva il firewall e verifica lo stato:
sudo ufw enable
sudo ufw status verbose
Conferma la domanda con y. Nell'elenco di stato dovrebbero comparire come consentiti solo SSH (22), 80 e 443. Dettagli su ufw nella Ubuntu Server Guide.
Passo 7: Protezione anti-brute-force con Fail2ban
Gli aggressori provano migliaia di password in modo automatizzato. Fail2ban rileva troppi tentativi falliti e blocca temporaneamente l'indirizzo IP attaccante. Installa e attiva:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
Creiamo una configurazione propria affinché gli aggiornamenti non la sovrascrivano:
sudo nano /etc/fail2ban/jail.local
Incolla il contenuto seguente (blocca un IP dopo 5 tentativi falliti per 1 ora):
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
Salva (Ctrl+O, Invio, Ctrl+X) e riavvia il servizio:
sudo systemctl restart fail2ban
Lo stato puoi verificarlo in qualsiasi momento:
sudo fail2ban-client status sshd
Passo 8: Aggiornamenti di sicurezza automatici
Le falle di sicurezza vengono scoperte di continuo. Affinché il server installi automaticamente le patch importanti, configuriamo unattended-upgrades:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Nella domanda scegli „Yes". Tutto qui – d'ora in poi il server installa da solo gli aggiornamenti di sicurezza. Maggiori info nella wiki Debian su UnattendedUpgrades.
Checklist: il tuo server è sicuro?
Prima di proseguire, controlla rapidamente:
- [ ] Sistema aggiornato (
apt update && apt full-upgrade) - [ ] Nome host, fuso orario e locale impostati
- [ ] Utente proprio con privilegi
sudofunzionante - [ ] Login con chiave SSH funzionante, login con password disattivato
- [ ]
ssh root@SERVER-IPrifiutato - [ ] Firewall (ufw) attivo, aperte solo 22/80/443
- [ ] Fail2ban in esecuzione
- [ ] Aggiornamenti di sicurezza automatici attivi
Domande frequenti (FAQ)
Mi sono bloccato fuori – e adesso? Quasi tutti i provider offrono nell'area clienti una funzione „VNC" o „console", con cui puoi accedere direttamente senza SSH e annullare le impostazioni.
Devo usare le chiavi SSH o basta una password? Le chiavi sono molto più sicure e fortemente consigliate. Se vuoi assolutamente restare con una password, lascia PasswordAuthentication su yes – usa però una password molto lunga e soprattutto Fail2ban.
Funziona anche su Ubuntu? Sì, in modo quasi identico. Solo in versioni molto vecchie alcuni nomi di pacchetto possono differire.
Servono conoscenze di Linux? No. Se copi i comandi e sostituisci i segnaposto, ce la fai. Un po' di pazienza aiuta la prima volta.
Come si prosegue?
Il tuo server ora è sicuro. Nella parte successiva installiamo Froxlor, un pannello di gestione gratuito con cui gestisci facilmente domini, siti web, certificati SSL e database tramite un'interfaccia – senza console:
👉 Parte 2: Installare & configurare Froxlor
E nella Parte 3: Configurare bene l'e-mail: SPF, DKIM & DMARC facciamo in modo che le tue e-mail vengano recapitate in sicurezza.
Tra l'altro: se preferisci far sviluppare software o hai bisogno di soluzioni server/web personalizzate, PepperTools ti aiuta volentieri.
Fonti
- Debian 12 (Bookworm) – pagina ufficiale
- Wiki Debian: SSH
- Wiki Debian: UnattendedUpgrades
- Ubuntu Server Guide: Firewalls (ufw)
- Fail2ban (progetto ufficiale)
Aggiornato a giugno 2026. Comandi e nomi dei pacchetti possono cambiare con le nuove versioni – fa fede la documentazione ufficiale.
Gestire le fatture piu facilmente
Easy Invoice unisce preventivi, fatture e gestione clienti nel cloud.
Prova Easy Invoice