
Ben tornati nella nostra serie. Dopo aver configurato le fondamenta della sicurezza, oggi approfondiamo l'accesso remoto sicuro via SSH, essenziale per gestire il nostro server da qualsiasi luogo in modo protetto.
Obiettivo della puntata: Configurare SSH per un accesso remoto massimamente sicuro, utilizzando autenticazione a chiavi crittografiche, porte non standard e tecniche avanzate di hardening.
1. Perché rafforzare SSH è cruciale
SSH (Secure Shell) è il metodo principale per accedere al server da remoto, ma è anche un obiettivo comune per attacchi brute force. Ecco perché dobbiamo renderlo il più sicuro possibile:
Gli attacchi brute force a SSH sono tra i più comuni su Internet
Un accesso SSH compromesso significa controllo completo del server
Configurazioni predefinite spesso non sono sufficientemente sicure
2. Autenticazione a chiavi crittografiche
L'autenticazione con chiavi è molto più sicura delle password. Ecco come configurarla:
Generare una coppia di chiavi (sul client):
Su Linux/macOS: Aprire un terminale e digitare:
ssh-keygen -t ed25519 -a 100 -C "commento per identificare la chiave"
Su Windows (con WSL o Git Bash): Stesso comando
Scegliere una passphrase complessa quando richiesto (non lasciare vuota)
Copiare la chiave pubblica sul server:
Metodo semplice con ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub il_tuo_utente@indirizzo_server
Metodo manuale (se ssh-copy-id non funziona):
cat ~/.ssh/id_ed25519.pub | ssh il_tuo_utente@indirizzo_server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Disabilitare l'autenticazione via password (sul server):
Modificare il file di configurazione SSH:
sudo nano /etc/ssh/sshd_config
Trovare e modificare queste linee:
PasswordAuthentication no PubkeyAuthentication yes
Riavviare il servizio SSH:
sudo systemctl restart ssh
Importante: Verificare di poter accedere con le chiavi prima di chiudere la sessione corrente
3. Cambiare la porta SSH
Cambiare la porta SSH standard (22) riduce notevolmente gli attacchi automatici:
Modificare il file di configurazione:
sudo nano /etc/ssh/sshd_config
Trovare la linea
#Port 22
e modificarla in:Port 2222 # Scegliere una porta tra 1024 e 65535
Aggiornare il firewall per permettere la nuova porta:
sudo ufw allow 2222/tcp sudo ufw deny ssh # Blocca la porta 22
Riavviare SSH:
sudo systemctl restart ssh
Per connettersi alla nuova porta:
ssh -p 2222 il_tuo_utente@indirizzo_server
Nota: Cambiare porta non è sicurezza tramite oscuramento, ma riduce drasticamente il rumore nei log dagli attacchi automatici.
4. Configurazione avanzata di SSH
Altre importanti opzioni di sicurezza nel file /etc/ssh/sshd_config
:
# Disabilita login root PermitRootLogin no # Limita gli utenti che possono connettersi via SSH AllowUsers il_tuo_utente altro_utente_autorizzato # Numero massimo di tentativi di login MaxAuthTries 3 # Timeout per login lenti LoginGraceTime 30 # Disabilita forwarding X11 (a meno non serva) X11Forwarding no # Disabilita altri forwarding non necessari AllowTcpForwarding no AllowStreamLocalForwarding no # Configurazione cifrari, MAC e algoritmi di scambio chiave KexAlgorithms curve25519-sha256@libssh.org Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
5. Utilizzare un client SSH configurato correttamente
Anche il client deve essere configurato per la massima sicurezza:
Configurazione del client SSH (~/.ssh/config):
Host myserver HostName indirizzo_ip_server Port 2222 User il_tuo_utente IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 60 ServerAliveCountMax 3
Dopo questa configurazione, potrete connettervi semplicemente con: ssh myserver
6. Monitoraggio e mantenimento
Dopo aver configurato SSH, è importante monitorarne gli accessi:
Controllare i log di autenticazione:
sudo grep "ssh" /var/log/auth.log | tail -20
Verificare gli accessi correnti:
who last
Controllare lo stato di fail2ban per SSH:
sudo fail2ban-client status sshd
7. Accesso tramite smartphone
Per accedere al server dallo smartphone:
Android: App Termux o ConnectBot
iOS: App Termius o Prompt
Importare la chiave privata nell'app scelta
Utilizzare sempre connessioni sicure (evitare reti Wi-Fi pubbliche non affidabili)
Consiglio avanzato: Per accesso ancor più sicuro, considerare l'uso di un bastion host o VPN, che affronteremo in una puntata futura.
Prepariamoci per la prossima puntata
Ora il nostro SSH è fortificato contro la maggior parte degli attacchi. Nel prossimo articolo parleremo di reverse proxy con Nginx, che ci permetterà di:
Esporre servizi web in modo sicuro
Utilizzare certificati SSL per cifrare il traffico
Nascondere i servizi interni sulla rete
Bilanciare il carico tra più servizi
Problemi con SSH?
Lascia un commento qui sotto con le tue difficoltà, ti aiuterò a risolverle!
Prossima puntata: Reverse Proxy con Nginx - Esporre servizi web in sicurezza
Non dimenticare di iscriverti alla newsletter per non perdere le prossime puntate!