Come rendere sicuro il proprio Server/VPS

SelfHosted 1 apr 2024

Quando acquistiamo una VPS o finiamo di installare il nostro SO Linux (server) dobbiamo renderlo sicuro, per farlo utilizziamo applicativi leggeri che ci riducono le superficidi d’attacco hacker.
In questa guida andiamo a vedere come rendere piĂą sicuro il nostro server, attraverso dei semplici passaggi da seguire step-by-step.

Creazione dell’utente con permessi privilegiati

Come molte volte accade quandoa acquistiamo una VPS, l’utente predefinito è root, ovvero amministratore di sistema. Questo implica parecchi problemi se sbagliamo a cancellare una cartella, quello che andiamo a fare adesso è creare un utente, con i privilegi di root per farlo:

adduser user

Impostiamo una password per l’ utente e confermiamo con il tasto invio. (Non è obbligatorio inserire le altre informazioni richieste, andiamo avanti digitando il tasto inviamo ed infine confermiamo che tutte le informazioni sono corrette con Y).
Adesso diamo il comando per privilegiare anche l’utente appena creato nei “sudoer” ovvero utenti con privilegi elevati.

usermod -aG sudo user

SSH

Accesso tramite chiave privata

Andiamo a vedere come generare una coppia di chiavi per accedere al nostro server/vps solo ed esclusivamente tramite esse.

Generazione di chiavi SSH tramite PuTTY;

Se sei un utente Windows il metodo più semplice per creare una coppia di chiavi è sicuramente il software di PuTTY.
PuTTY è un client SSH, Telnet e rlogin combinato con un emulatore di terminale per la gestione in remoto di sistemi informatici.
Per generare una coppia di chiavi ci basterà scaricare l’eseguibile .exe (puoi farlo dal sito www.putty.org), una volta scaricato il programma cerchiamo nella directory d’installazione il file .exe di “puttygen”

Una volta aperto il file, ci basterà cliccare su “Generate” e successivamente muovere (all’interno della finestra dell’applicazione) il cursore del mouse finché la barra di completamento non è piena.
Successivamente andiamo ad inserire una passphrase (facoltativo ma altamente consigliato) ed infine salviamo la chiave privata dandogli un nome “es. chiave.ppk“

L’estensione “.ppk” è utilizzabile solo con il software di PuTTY.

Inserimento chiave SSH sul server/vps

Una volta generata la chiave privata colleghiamoci al nostro server/vps attraverso PuTTY, lanciamo il comando di aggiornamento:

sudo apt-get update && sudo apt-get upgrade -y && sudo apt autoremove -y

Una volta finita la procedura di “upgrade” andiamo a creare una cartella nascosta nella nostra home e successivamente ci entriamo:

mkdir .ssh 
cd .ssh/

adesso utilizzando un editor di testo come nano, andiamo a creare il file delle chiave autorizzate:

nano authorized_keys

incolliamo adesso la nostra chiave ssh-rsa.
(Per intenderci dobbiamo copiare tutto il codice presente nella sezione Key di puttygen, nel caso di questo tutorial ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCSEoDmlOCoPYlDXYoHrAg60jYOK/3GiDCVcnleiZJv7xsaZ/2OXTA0jSPaD+ovzRgVXkM3wr2Lmar0OIp/gOlQXP/t/kQzQSIBbQPBkOpaCM”).
Salviamo il file premendo la combinazione di tasti CTRL+X e poi “Y” per confermare il salvataggio.
Effettuiamo un test di connessione attraverso PuTTY con chiave privata e se tutto procede correttamente andiamo al passaggio successivo.

Configurazione di SSH config

Una volta accertati che la chiave SSH e la relativa connessione funzioni al 100% andiamo a modificare alcuni parametri nel file di configurazione di SSH:

sudo nano /etc/ssh/sshd_config

I file che dobbiamo andare a modificare sono:
• PermitRootLogin no
• PasswordAuthentication no
• UsePAM yes

Salviamo dando sempre il comando CTRL+X e “Y” per confermare.
Molte volte, alcune distribuzioni fornite dai Vs. provider di servizi cloud VPS hanno delle configurazioni personalizzate di SSH, controllate se nel Vs. server è anche così effettuando una ricerca all’interno della directory ssh_config:

/etc/ssh/ssh_config.d/ 
 
ls -la

Se a schermo non viene visualizzato alcun file è tutto ok, se invece c’è qualche file “*.conf”, dobbiamo modificarlo con i parametri sopra indicati “PermitRootLogin…. ecc. ecc.”
Andiamo a riavviare il servizio ssh_config dando il comando:

sudo systemctl restart sshd.service

e successivamente effettuiamo una nuova connessione con un’atra shell di putty e assicuriamoci che senza chiave SSH il login non verrà effettuato.

Fail2Ban

Fail2ban (Sito ufficiale) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di brute force via SSH.
Questo genere di attacco si basa su continui tentativi di accesso, provando o l’username root con password probabili (come password, root, toor e così via) oppure tramite coppie di username/password conosciute (create, ad esempio, da malware o da rootkit).

Installazione e configurazione di fail2ban

Andiamo a scaricare ed installare il software con il comando:

sudo apt-get install fail2ban -y

Entriamo nella directory di fail2ban e modifichiamo il file di configurazione:

cd /etc/fail2ban 
sudo cp jail.conf jail.local 
sudo nano jail.local

Nella schermata che ci appare adesso dobbiamo modificare i parametri:
• bantime = 1000
• maxretry = 5

ATTENZIONE!
I parametri che io generalmente imposto sono MOLTO SEVERI, assicuratevi di non sbagliare la password d’accesso per più di 5 volte altrimenti verrete bannati.

Andiamo ad abilitare ed avviare il servizio di fail2ban affinché le modifiche siano effettive:

sudo systemctl enable fail2ban.service 
sudo systemctl start fail2ban.service

Per vedere i logs e gli eventuali ban vi basterĂ  digitare il codice:

sudo tail /var/log/fail2ban.log

Firewall semplice

Un firewall controlla il tipo di traffico esterno accettato dalla macchina e quali applicazioni possono inviare dati. Per impostazione predefinita, molte porte di rete sono aperte e ascoltano le connessioni in entrata. La chiusura di porte non necessarie può mitigare molte potenziali vulnerabilità del sistema.
In questo momento, solo SSH dovrebbe essere raggiungibile dall'esterno.
Andiamo quindi a consentire la connessione SSH in entrata, con il comando:

sudo ufw allow 22/tcp comment 'allow SSH from anywhere'

Abilitiamo adesso UFW, affinchè le modifiche siano necessarie:

sudo ufw enable

Il sistema ci dirĂ :
"Command may disrupt existing ssh connections. Proceed with operation (y|n)?"
Rispondiamo con "y" e premiamo invio.
Adesso ci verrĂ  restituita a video la seguente risposta:
"Firewall is active and enabled on system startup"
Controlliamo che UFW sia correttamente attivo ed abilitato

sudo ufw status verbose

Riceveremo una risposta simile a questa:


Spero che l'articolo sia stato di tuo gradimento, se vuoi altri contenuti simili non esitare a farmelo sapere sul Gruppo Telegram.
Se ti piacciono i miei contenuti e vuoi supportarmi puoi iscriverti alla Newsletter, effettuare una donazione o acquistare attraverso il mio link referral di Amazon, trovi tutti i link qui.
Considera anche l'idea di iscriverti al mio canale delle offerte, lo trovi su WhatsApp e su Telegram.

Tag