Un server Linux appena installato non è un server sicuro. Le configurazioni di default sono pensate per la compatibilità, non per la sicurezza. Queste sono le 10 configurazioni che applico sistematicamente su ogni server che installo o prendo in gestione.
1. Aggiornamenti automatici di sicurezza
La prima cosa da fare è sempre abilitare gli aggiornamenti di sicurezza automatici. Su Ubuntu/Debian:
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades
Configura il riavvio automatico notturno se necessario in /etc/apt/apt.conf.d/50unattended-upgrades.
2. SSH: chiavi invece di password
Disabilita l'autenticazione via password SSH e usa esclusivamente chiavi asimmetriche. In /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
X11Forwarding no
MaxAuthTries 3
Genera una chiave Ed25519 (più sicura di RSA 2048): ssh-keygen -t ed25519 -C "server-name"
3. Cambia la porta SSH
Non elimina il rischio, ma riduce drasticamente il rumore nei log da bot automatici. Scegli una porta >1024, aggiornala in sshd_config e nel firewall.
4. Firewall con UFW
Principio del minimo privilegio: blocca tutto, apri solo quello che serve.
ufw default deny incoming
ufw default allow outgoing
ufw allow [porta-ssh]/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
5. Fail2ban: blocca i tentativi di brute force
apt install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Configura bantime = 1h, maxretry = 5, findtime = 10m per SSH come minimo. Fail2ban funziona anche per Nginx, Apache, Postfix e molti altri servizi.
6. Utenti e privilegi: no root diretto
Crea un utente amministratore dedicato, aggiungilo al gruppo sudo, e disabilita il login root diretto. Ogni azione privilegiata deve passare da sudo e lasciare traccia nei log.
adduser adminuser
usermod -aG sudo adminuser
7. Disabilita i servizi non necessari
Ogni servizio in ascolto è una potenziale superficie di attacco. Verifica cosa è in ascolto:
ss -tlnp
systemctl list-units --type=service --state=running
Disabilita e rimuovi tutto ciò che non usi: avahi-daemon, cups, bluetooth, snapd se non necessario.
8. Kernel hardening con sysctl
Aggiungi in /etc/sysctl.d/99-hardening.conf:
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
9. Audit dei login e delle azioni sudo
Assicurati che auditd sia attivo e configurato per registrare i comandi sudo. Considera l'invio centralizzato dei log su un server syslog separato — se un attaccante compromette il server, i log locali non sono attendibili.
10. Verifica periodica con Lynis
Lynis è uno strumento di audit open source che analizza la configurazione del server e produce un report con le aree di miglioramento:
apt install lynis
lynis audit system
Punta a un hardening index superiore a 75. Eseguilo dopo ogni modifica importante alla configurazione.
Nota: il hardening non è un'operazione una tantum. Pianifica una revisione trimestrale della configurazione e tieni aggiornati questi parametri al crescere della superficie di attacco del server.
Posso aiutarti con la tua infrastruttura?
Che tu abbia un progetto da zero o un problema da risolvere, scrivimi o prenota una call gratuita di 30 minuti.