Salta al contenuto principale

La Sicurezza di Base per il Server Domestico

Inviato da tuxsa il
scudo

Ben tornati nella nostra serie. Dopo aver installato Debian 13, oggi rendiamo il nostro server più sicuro con configurazioni essenziali che proteggeranno i nostri dati da accessi non autorizzati.

Obiettivo della puntata: Implementare le fondamenta della sicurezza: firewall, aggiornamenti automatici, hardening degli accessi e configurazioni basilari per un server esposto a Internet.

1. Configurazione del firewall (UFW)

Un firewall è la prima linea di difesa. Debian include ufw (Uncomplicated Firewall), che semplifica la gestione di iptables.

Attivazione e configurazione base:

  1. Verificare che ufw sia installato: sudo apt install ufw

  2. Impostare le policy di default (rifiutare tutto in entrata, permettere tutto in uscita):

    sudo ufw default deny incoming
    sudo ufw default allow outgoing
  3. Permettere SSH (assicuratevi di non bloccarvi fuori!):

    sudo ufw allow ssh
  4. Attivare il firewall: sudo ufw enable

  5. Verificare le regole: sudo ufw status verbose

Attenzione: Assicuratevi di aver configurato l'accesso SSH correttamente prima di abilitare il firewall, altrimenti rischiate di bloccarvi fuori dal server!

2. Disabilitare l'accesso root via SSH

L'accesso diretto come root via SSH è un rischio per la sicurezza. Meglio disabilitarlo e usare sudo.

  1. Modificare il file di configurazione SSH:

    sudo nano /etc/ssh/sshd_config
  2. Trovare la linea #PermitRootLogin yes e modificarla in:

    PermitRootLogin no
  3. Riavviare il servizio SSH: sudo systemctl restart ssh

  4. Verificare di poter ancora accedere con il vostro utente normale prima di chiudere la sessione corrente

3. Aggiornamenti automatici di sicurezza

Mantenere il sistema aggiornato è cruciale per la sicurezza. Configuriamo aggiornamenti automatici:

  1. Installare unattended-upgrades:

    sudo apt install unattended-upgrades apt-listchanges
  2. Abilitare gli aggiornamenti automatici:

    sudo dpkg-reconfigure -plow unattended-upgrades

    Selezionare "Yes" quando richiesto.

  3. Configurare quali aggiornamenti applicare:

    sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

    Modificare le linee relevanti per abilitare gli aggiornamenti di sicurezza:

    Unattended-Upgrade::Origins-Pattern {
            "origin=Debian,codename=${distro_codename},label=Debian-Security";
    };
  4. Verificare il funzionamento: sudo unattended-upgrades --dry-run --debug

4. Configurare un firewall aggiuntivo con fail2ban

Fail2ban protegge da attacchi brute force monitorando i log e bloccando IP sospetti.

  1. Installare fail2ban: sudo apt install fail2ban

  2. Creare una configurazione locale:

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  3. Modificare la configurazione base:

    sudo nano /etc/fail2ban/jail.local

    Cercare la sezione [sshd] e modificare:

    [sshd]
    enabled = true
    port = ssh
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
  4. Riavviare fail2ban: sudo systemctl restart fail2ban

  5. Verificare lo status: sudo fail2ban-client status sshd

5. Hardening aggiuntivo

Disabilitare servizi non necessari:

sudo systemctl list-unit-files --state=enabled
# Disabilitare servizi non necessari, ad esempio:
sudo systemctl disable avahi-daemon

Configurare il motore di randomizzazione:

sudo apt install haveged
sudo systemctl enable haveged

Controllare i permessi dei file sensibili:

sudo chmod 600 /etc/shadow
sudo chmod 600 /etc/gshadow

6. Verifica della configurazione di sicurezza

Dopo tutte queste modifiche, verifichiamo che tutto funzioni correttamente:

  1. Riavvio del server: sudo reboot

  2. Verifica di poter accedere via SSH con il proprio utente

  3. Controllo dello stato dei servizi:

    sudo systemctl status ufw
    sudo systemctl status fail2ban
    sudo systemctl status unattended-upgrades
  4. Verifica degli aggiornamenti di sicurezza: sudo unattended-upgrades --dry-run

Ricordate: La sicurezza non è un prodotto ma un processo. Queste configurazioni sono la base, ma dovrebbero essere integrate con monitoraggio regolare e aggiornamenti periodici.

Prepariamoci per la prossima puntata

Ora il nostro server ha una solida base di sicurezza. Nel prossimo articolo affronteremo l'accesso remoto sicuro con SSH, includendo:

  • Autenticazione con chiavi crittografiche invece delle password

  • Configurazione avanzata di SSH per maggiore sicurezza

  • Accesso tramite tunnel sicuri

  • Impostazione di una VPN domestica

Hai domande sulla sicurezza?

Lascia un commento qui sotto con i tuoi dubbi o esperienze, ti risponderò al più presto!


Prossima puntata: Accesso remoto sicuro con SSH - Autenticazione a chiavi e configurazioni avanzate

Non dimenticare di iscriverti alla newsletter per non perdere le prossime puntate!