Vai al contenuto

Server VPS: consigli per la sicurezza di Linux

Scopri come migliorare la sicurezza del tuo server Linux con alcuni consigli essenziali per impedire gli accessi non autorizzati e proteggere i tuoi servizi → Scopri di più

10 novembre 202611 min di lettura0 Visualizzazioni0 utile

Introduzione

Questa guida contiene alcuni suggerimenti e consigli su come rendere più sicuro il tuo server Linux. Poiché i server (virtuali) devono essere accessibili dall'esterno, è sempre consigliabile adottare una protezione di base contro gli accessi indesiderati: non trascurarla.

Info

Tieni presente che queste istruzioni non sono esaustive e che puoi trovare informazioni più dettagliate in altre sezioni della documentazione ZAP. (ad es. 2FA (SSH))

Suggerimento

Il modo più semplice per proteggere il tuo server è sempre lo stesso, indipendentemente dal tipo di server: usa password sicure, aggiorna regolarmente i tuoi servizi e presta sempre attenzione ai servizi che installi e alle guide che segui.

Configurare le porte dei servizi

ServizioPorta
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

Servizi come SSH e FTP utilizzano sempre le stesse porte per impostazione predefinita (alcune sono elencate nella tabella qui sopra). Se un aggressore esterno tenta un attacco brute force al tuo servizio SSH, deve prima sapere quale porta viene utilizzata da SSH. Se non modifichi la configurazione predefinita, le porte 22 e 21 sono spesso i primi obiettivi per eseguire direttamente comandi sul server o accedere ai file tramite FTP.

Per impedirlo, ti consigliamo di configurare porte personalizzate per i servizi predefiniti. Nella sezione successiva scoprirai come fare:

Attenzione

La porta scelta deve essere compresa tra 1024 e 65535 e non deve essere già in uso!

Con cat /etc/services puoi visualizzare alcune porte standard, così da evitare di sceglierne una già occupata.

Porta SSH

Per cambiare la porta SSH, devi modificare il file di configurazione. Di solito si trova in /etc/ssh/sshd_config; se non è lì, puoi cercarlo con il seguente comando:

Code
find / -name "sshd_config" 2>/dev/null

Ora apri il file con nano (come root o con sudo).

Code
sudo nano /etc/ssh/sshd_config

Inserisci la porta desiderata dopo Port. Se la riga Port è commentata (ovvero #Port 22), rimuovi il carattere "#" e sostituisci 22 con la porta che vuoi usare. Salva il file (in Nano con Ctrl + o) e chiudilo (Nano: Ctrl + x).

Ora devi riavviare il servizio SSH affinché le modifiche abbiano effetto.

Code
# Ad esempio, su Ubuntu/Debian/CentOS
sudo systemctl restart sshd

Porta FTP

Se hai installato un servizio FTP come proFTPd, puoi cambiare anche la porta modificando il file di configurazione. La procedura è simile a quella del servizio SSH.

Trova il file di configurazione proftpd.conf:

Code
find / -name "proftpd.conf" 2>/dev/null

Di solito il file si trova in /etc/proftpd.conf (CentOS) oppure in /etc/proftpd/proftpd.conf (Ubuntu, Debian). Apri il file con nano, rimuovi il carattere "#" prima di port e inserisci la porta desiderata dopo l'opzione. Segui le indicazioni qui sopra per evitare di specificare una porta non valida.

Suggerimento

Usa Ctrl + W per cercare in nano.

Code
nano /etc/proftpd/proftpd.conf

Ulteriori misure di protezione con Fail2Ban

Fail2Ban è un servizio che blocca gli indirizzi IP da cui vengono effettuati tentativi di accesso al server probabilmente malevoli. Fail2Ban monitora i file di log per individuare attività sospette e protegge il sistema in modo relativamente semplice ed efficace.

Dopo l'installazione, Fail2Ban include già impostazioni preconfigurate per alcuni servizi molto diffusi, tra cui:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Puoi aggiungere facilmente altri servizi specificando un'espressione regolare (RegEx) e il file di log desiderato.
Come esempio, esaminiamo una voce in /var/log/auth.log. Questo file contiene tutti i tentativi di accesso SSH, sia quelli riusciti che quelli non riusciti.

Ecco la voce:

Code
Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban usa questo file di log e lo monitora per rilevare gli errori di autenticazione. Poiché il file di log contiene direttamente l'indirizzo IP dell'aggressore, dopo alcuni tentativi non riusciti Fail2Ban può bloccare quell'indirizzo IP.

Installare Fail2Ban

Per prima cosa, accedi al tuo server Linux. Se hai bisogno di aiuto, segui la nostra guida Primo accesso (SSH). Esegui i comandi come root o con sudo.

Code
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Dopo l'installazione, puoi verificare subito lo stato con systemctl: (Premi Ctrl+C per uscire da systemctl.)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
       Docs: man:fail2ban(1)
    Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
   Main PID: 23989 (fail2ban-server)
        CPU: 409ms
     CGroup: /system.slice/fail2ban.service
             `-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

Configurare Fail2Ban

Fail2Ban è installato, ma non è ancora attivo né configurato. Controlla /etc/fail2ban: dovresti trovare i seguenti file:

Code
action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

Per creare una «jail» attiva, devi creare un file chiamato jail.local. Ti basta copiare il contenuto di jail.conf nel nuovo file e aprirlo:

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

Ora puoi modificare tutte le impostazioni nel file jail.local, compresi i servizi da monitorare. Concentrati solo sulla sezione successiva a [Default]. La sezione Default contiene le impostazioni generali di base.

Scorri verso il basso fino a trovare questa sezione e modificala, ad esempio, come segue:

AttributoDescrizioneValore
ignoreipIndirizzi IP da non bloccare127.0.0.1/8
ignorecommandNon rilevante.
bantimeDurata del blocco di un indirizzo IP1h
findtimeIntervallo in cui vengono conteggiati gli accessi non riusciti10m
maxretryNumero di tentativi non riusciti che comportano un blocco5
Code
# può essere definito separando i valori con spazi (e/o virgole).
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" è il numero di secondi per cui un host viene bloccato.
bantime  = 1h

# Un host viene bloccato se genera "maxretry" errori entro "findtime"
# secondi.
findtime  = 10m

# "maxretry" è il numero di errori prima che un host venga bloccato.
maxretry = 5

Hai completato la configurazione di base. Per monitorare, ad esempio, il servizio SSH, scorri fino al tag [sshd]. Se hai modificato la porta, inseriscila nel campo port.

La sezione [sshd] sarà quindi simile a questa:

Code
[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
Suggerimento

Come puoi vedere, è possibile specificare impostazioni personalizzate per i singoli servizi (ad esempio, maxretry, che qui è inferiore all'impostazione predefinita). Anche se hai già configurato le impostazioni generali, puoi personalizzare separatamente la maggior parte delle opzioni per ogni servizio. Se non lo fai, verranno utilizzate le impostazioni generali.

Ora devi solo riavviare Fail2Ban per avviare il monitoraggio.

Code
sudo systemctl restart fail2ban.service

Verificare il funzionamento di Fail2Ban

Se hai accesso a una VPN o a un secondo server, puoi provare a farti bloccare da Fail2Ban per verificare che il servizio funzioni. Con una VPN o un hotspot sul telefono dovresti ottenere un indirizzo IP diverso, che puoi usare per testare Fail2Ban.

Attenzione

Non eseguire il test sulla tua rete abituale: il tuo indirizzo IP potrebbe essere bloccato e potresti rimanere bloccato fuori dal server.

Prova a connetterti via SSH al server (usando un indirizzo IP diverso!) e inserisci ogni volta una password errata. Il risultato dovrebbe essere simile a questo:

Code
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

Come puoi vedere, il server protetto da Fail2Ban ora rifiuta la connessione (Connection refused invece di Permission denied).

Ora visualizza lo stato di Fail2Ban. Qui puoi verificare che un indirizzo IP è stato bloccato.

Code
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     8
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx

Se vuoi sbloccare l'indirizzo IP, puoi farlo con il seguente comando: fail2ban-client set sshd unbanip {deine IP}.

Info

Se vengono bloccati insolitamente molti indirizzi IP, ti consigliamo di aumentare la durata del blocco a ogni tentativo non riuscito, per ridurre il numero di possibili tentativi di accesso.

Code
[sshd]

enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# Bantime sollte mit jeder Sperre dieser IP steigen
bantime.increment = true
# Skalierungsfaktor von 24 Stunden (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximale Sperrzeit = 5 Wochen
bantime.maxtime = 5w

FAQ

Domande frequenti

Usa password sicure, aggiorna regolarmente i servizi e presta attenzione ai servizi che installi e alle guide che segui.
Consenti l'autenticazione solo tramite chiavi SSH e disattiva l'accesso con password. Consulta la guida sulle chiavi SSH.
La porta predefinita è la 22. Per attaccare SSH con un attacco brute force, gli aggressori devono prima sapere quale porta viene utilizzata.

Feedback

Questo articolo ti è stato utile?

Il tuo feedback ci aiuta a definire le priorità e a migliorare i contenuti.

0 di 0 I feedback hanno giudicato utile questo articolo.

Assistenza personale

Le istruzioni non sono sufficienti?

Il supporto ZAP conosce il tuo prodotto: descrivi brevemente la tua richiesta e ti aiuteremo personalmente.