Introduzione
In questa breve guida, vediamo come proteggere in modo semplice un server linux, che sia una VPS, un server dedicato, o anche semplicemente il vostro raspberry connesso alla rete. Data l'enormità delle distribuzioni linux con cui è possibile creare un server, i comandi che seguiranno saranno validi per distribuzioni basate su debian (come Ubuntu), naturalmente con i dovuti accorgimenti può essere seguita anche da chi usa altre distro.La guida è intesa a scopo informativo, l'obiettivo non è creare un server perfetto. Sono consapevole che esistono molte tecniche di sicurezza più solide e complicate. La guida è rivolta a quegli utenti che hanno una conoscenza basilare del sistema operativo in questione, con buone fondamenta di concetti come Firewall, SSH, TCP/IP. Quanto segue fornisce comunque un livello di sicurezza sufficiente per la maggior parte degli utilizzi (come un semplice server web).
Prerequisiti
- Avere un server Linux
- Avere accesso root al server
- Conoscenza base dei comandi linux
- Capire cosa si sta facendo, non lanciate semplicemente i comandi!
Indice
- Aggiornamenti!
- Cambiare la porta SSH
- Cambiare la password all'utente root
- Bloccare l'accesso SSH all'utente root
- Installare Fail2Ban
- Installare un firewall (iptables e ufw)
1. Aggiornamenti!
Tanto banale quanto fondamentale, la prima cosa da fare è verificare che il nostro sistema sia aggiornato!Per farlo, lanciamo il famoso comando che sarà conosciuto ai più:
sudo apt update
e premiamo invio, subito dopo lanciamo sudo apt upgrade
2. Cambiare la porta SSH
Solitamente la porta predefinita per l'accesso ssh è la 22. Cambiandola, complichiamo leggermente la vita a chi tenta di accedere alla nostra macchina tramite ssh, in quanto deve prima scoprire la porta usata (i bot sono "scemi", già solo con questo accorgimento ci saremo protetti da una buona fetta di attacchi automatizzati).Nel caso non abbiate un editor di testo, consiglio di usare nano. Dovrebbe già essere presente di default in molte distro. Nel caso non lo fosse, per installarlo lanciate
sudo apt install nano
Apriamo il file di configurazione del servizio
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
Ora riavviamo in servizio
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Ricordiamoci ora che per accedere tramite SSH alla macchina, dobbiamo specificare anche la porta scelta. Se ad esempio abbiamo scelto la porta 49999, il comando sarà
Bash:
Accedi o Registrati per vedere questo contenuto.
3. Cambiare la password all'utente root
IMPORTANTE: Prima di procedere, è buona cosa cambiare la password dell'utente root. Ricordo però che alcune distro hanno l'account root disattivato di default, ovvero è presente ma in uno stato "dormiente". Questo vuol dire che tutte le operazioni che richiedono privilegi elevati, vanno effettuate con il comandosudo
dal vostro account principale. Per riattivare l'account root, basta semplicemente cambiare password al root. La scelta effettuata in questa guida sarà quella di riattivare l'account root ma bloccare l'accesso a questo utente tramite ssh.Per cambiare password all'utente root, digitiamo il comando
Bash:
Accedi o Registrati per vedere questo contenuto.
4. Bloccare l'accesso SSH all'utente root
La maggior parte delle operazioni che non richiedono privilegi elevati, devono essere effettuati da un normale utente. Prima di disattivare l'accesso al server tramite root, creiamo un nuovo utente
Bash:
Accedi o Registrati per vedere questo contenuto.
su -
, sudo su -
oppure su root
Procediamo ora a bloccare l'accesso root in ssh, apriamo il file di configurazione già modificato precedentemente
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
APPROFONDIMENTO: Possiamo aumentare considerevolmente la sicurezza del nostro accesso SSH utilizzando il metodo di autenticazione a chiave pubblica. Di seguito un link alla guida:

Guida Verificata - Come utilizzare l'autenticazione SSH a Chiave Pubblica
Introduzione In questa piccola guida, vedremo brevemente come utilizzare l'autenticazione SSH tramite chiave pubblica e privata. L'argomento era stato accennato nella nostra precedente guida, senza approfondirlo...

5. Installare Fail2Ban
Mai sentito parlare degli attacchi Brute Force o Denial of Service? Ecco, questo framework ci protegge proprio da quelli, bloccando gli ip di chi tenta insistentemente di accedere alla nostra macchina. Se usate un pannello di controllo come Plesk o simili, generalmente è già preinstallato e le modifiche a Fail2Ban dovrebbero essere eseguite tramite il pannello da voi utilizzato.Per installare Fail2Ban digitiamo
Bash:
Accedi o Registrati per vedere questo contenuto.
Quindi, creiamo il file jail.local
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Detto ciò, una volta aperto il file la prima modifica suggerita è cambiare il tempo di ban nel caso il numero di tentativi (nell'arco di tempo stabilito) superano il valore da noi indicato, questo è possibile modificando la line
Codice:
Accedi o Registrati per vedere questo contenuto.
Come anticipato, possiamo anche creare regole specifiche solo per alcuni servizi, ad esempio una regola ssh potrebbe essere questa (da inserire sotto la voce JAILS)
Codice:
Accedi o Registrati per vedere questo contenuto.
Ricordiamoci che i parametri inseriti sotto JAILS sovrascrivono i globali definiti in DEFAULT solo per quel particolare servizio.
Per applicare le modifiche, riavviamo Fail2Ban
Bash:
Accedi o Registrati per vedere questo contenuto.
ATTENZIONE: Nel caso in cui Fail2Ban non dovesse avviarsi automaticamente, dobbiamo avviarlo noi e creare una regola di avvio ad ogni reboot.
Per avviarlo
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Aggiornamento Debian 12
IMPORTANTE: Se avete aggiornato il vostro sistema a Debian 12, o avete appena installato Debian 12, fail2ban potrebbe restituire un errore del genere:Main process exited, code=exited, status=255/EXCEPTION
Prima di tutto, assicuriamoci di avere il pacchetto python3-systemd, altrimenti installiamolo
Bash:
Accedi o Registrati per vedere questo contenuto.
Successivamente dobbiamo spostare i log al systemd journal.
Per farlo, nel file local creiamo la direttiva
Codice:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
6. Installare un firewall (iptables e ufw)
La spiegazione su cosa sia un firewall la evito, anche perché se possedete un server dovreste saperlo perfettamente! Questo passaggio si addentra leggermente di più in quella che è la gestione di un server. Quasi ogni distro linux ha un sul firewall preinstallato, ovvero iptables. Questo firewall non è proprio immediato da usare, in quanto richiede conoscenze approfondire di rete. In nostro aiuto ci viene ufw, ovvero un tool che semplifica la gestione di iptables. Come per Fail2Ban, se disponete di un pannello d'amministrazione, usate quello invece della riga di comando.L'installazione di ufw, si porta dietro alcune dipendenze, come appunt iptables. Queste dipendenze vengono installate automaticamente se non presenti. Per evitare di dire "yes" ad ogni schermata, installiamo ufw con l'accettazione automatica
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Codice:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Ora, tutto ciò che segue dipende dalle vostre particolari esigenze. Se aprire o meno una porta o un insieme di porte, sta a voi deciderlo in base a come intendete utilizzare la vostra macchina e cosa dovrà fare.
A TITOLO DI ESEMPIO possiamo inizialmente chiudere tutte le porte in entrata, e aprire tutte le porte in uscita, per poi specificare singolarmente quale porta ci interessa aprire in entrata. Questa è un'impostazione molto comune, per aumentare ulteriormente la sicurezza possiamo anche decidere di chiudere le porte in uscita, ripeto, dipenderà da cosa vogliamo ottenere.
Per chiudere le porte in entrata, digitiamo
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Una regola che probabilmente vi servirà, sarà quella di aprire la porta SSH. possiamo farlo in 2 modi:
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Stesso discorso può essere fatto con altre porte, tipo quella usata per le connessioni FTP, web etc. Ad esempio per aprire la porta 80 TCP (usata per un server web), basta scrivere
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Bash:
Accedi o Registrati per vedere questo contenuto.
Allo stesso modo, possiamo eliminare regole precedentemente create, ad esempio
Bash:
Accedi o Registrati per vedere questo contenuto.
ufw è uno strumento molto potente, il consiglio è di consultare la guida ufficiale per capirne meglio il funzionamento e le innumerevoli opzioni che ha.
Siamo arrivati alla fine, spero di aver fatto chiarezza su alcuni argomenti, illustrati con il solo scopo di far capire le "possibilità" nella protezione di un server. Naturalmente non sono le sole, e alcune accortezze vanno effettuate a monte, ad esempio mascherando l'ip della propria macchina, magari con un proxy dietro il vostro server DNS, sta a voi in quanto amministratori decidere cosa sia meglio fare.