HowTo Admin

Checklist post-installazione di un server Linux

Utenti, SSH, firewall, aggiornamenti, backup e monitoraggio: una base pratica per mettere in sicurezza il sistema.

Prima di irrigidire SSH/firewall su un server remoto, mantieni una seconda sessione aperta. Se sbagli una regola rischi di restare fuori.

1. Rete e hostname

  • Imposta hostname chiaro (es. web01, backup01)
  • Verifica IP, gateway, DNS
  • Controlla che il server risolva nomi e sia raggiungibile
hostnamectl status   # se disponibile
hostname
ip a
ip r
cat /etc/resolv.conf
ping -c 3 1.1.1.1
ping -c 3 google.com
Su alcune distro minimal hostnamectl non e' presente (es. senza systemd): usa i file di configurazione della distro.

2. Utenti e privilegi

Evita l'uso diretto di root per attivita' quotidiane.

  1. Crea un utente amministrativo
  2. Aggiungilo al gruppo sudo/wheel
  3. Testa i privilegi
useradd -m -s /bin/bash adminuser
passwd adminuser

# Slackware (se sudo configurato via wheel)
usermod -aG wheel adminuser

Verifica:

su - adminuser
id
sudo -v   # se sudo e' configurato
Non disabilitare il login root via SSH prima di aver verificato che l'utente amministrativo entri e possa elevare privilegi.

3. Sicurezza SSH

Configura accesso con chiavi e riduci la superficie d'attacco.

Passi consigliati

  • Usa autenticazione con chiave pubblica
  • Disabilita login root via SSH (dopo test)
  • Valuta cambio porta (utile solo contro scan automatici, non e' sicurezza forte)
  • Limita utenti ammessi
mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Esempio opzioni in /etc/ssh/sshd_config (adatta al tuo caso):

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers adminuser

Dopo modifica:

sshd -t
systemctl restart sshd   # oppure service sshd restart
Prima di chiudere la sessione attuale, apri una nuova connessione SSH e verifica che l'accesso funzioni davvero.

4. Firewall

Apri solo le porte necessarie al ruolo del server.

Porte comuni (esempio)

  • 22/tcp SSH
  • 80/tcp HTTP
  • 443/tcp HTTPS
  • 25/587 SMTP (solo se mail server)

Controlli

  • Blocca tutto il resto in ingresso
  • Consenti loopback
  • Consenti traffico established/related
  • Documenta ogni eccezione

Verifica porte in ascolto:

ss -tulpen
netstat -tulpen   # se disponibile
Usa il firewall della tua distro/tool preferito: nftables, iptables, ufw, firewalld. L'importante e' applicare il principio del minimo privilegio.

5. Aggiornamenti e repository

  • Aggiorna il sistema appena installato
  • Usa repository ufficiali e fidati
  • Pianifica una routine di aggiornamento
  • Valuta reboot dopo aggiornamenti critici (kernel, libc, sshd)

Slackware (esempio con slackpkg)

slackpkg update
slackpkg install-new
slackpkg upgrade-all
slackpkg clean-system   # attenzione: controlla bene prima di confermare

Su Slackware mantieni attenzione a changelog, pacchetti core e configurazioni nuove/merge dei file .new.

6. Data/ora e sincronizzazione (NTP)

Un orario corretto e' fondamentale per log, certificati TLS, autenticazione e cron.

date
timedatectl status   # se disponibile

Installa/abilita un servizio NTP (chrony o ntpd) in base alla distro.

7. Servizi e porte: pulizia iniziale

Disabilita servizi non necessari.

  • Server demo, servizi legacy, daemon non usati
  • Interfacce admin esposte pubblicamente senza motivo

Controlla processi e unit attive:

ps aux
systemctl list-units --type=service --state=running   # se systemd
Meno servizi attivi = meno superficie d'attacco e meno consumo risorse.

8. Log e auditing base

  • Verifica dove finiscono i log (syslog, journald, file applicativi)
  • Configura rotazione log
  • Controlla periodicamente errori di avvio e autenticazione
journalctl -p err -b   # systemd
journalctl -u sshd -b
tail -n 100 /var/log/messages
tail -n 100 /var/log/secure   # o auth.log

Per auditing base, almeno monitora login SSH falliti e tentativi ripetuti.

9. Backup e test di ripristino

Un backup non testato non e' un backup affidabile.

Cosa salvare almeno

  • Configurazioni (/etc)
  • Dati applicativi
  • Database (dump coerenti)
  • Script custom / cron / chiavi necessarie

Checklist pratica backup

[ ] Destinazione backup separata dal server
[ ] Pianificazione automatica (cron/systemd timer)
[ ] Retention definita (es. 7/30 giorni)
[ ] Verifica integrita' backup
[ ] Test restore periodico
Se il backup resta sempre montato e scrivibile dallo stesso server, ransomware o errori operativi possono colpirlo facilmente.

10. Monitoraggio e alert

Anche un monitoraggio base e' meglio di niente.

  • CPU, RAM, disco, load average
  • Spazio disco e inode
  • Servizi critici (web, db, sshd)
  • Certificati TLS in scadenza
uptime
free -h
df -h
df -i

Imposta almeno un alert via mail/Telegram/monitoring tool quando il disco supera una soglia.

11. Hardening extra (consigliato)

  • fail2ban per bloccare tentativi brute-force (se supportato e utile al tuo stack)
  • sudo con policy minime e tracciabili
  • 2FA per pannelli/admin dove possibile
  • chiavi SSH con passphrase per accessi sensibili
  • separazione servizi (utente dedicato per app e database)
  • permessi file corretti su config e chiavi
L'hardening perfetto dipende dal ruolo del server (web, mail, DB, backup, VPN). Questa guida e' una base solida, non una policy universale.

12. Checklist finale rapida

[ ] Hostname, IP, DNS e routing verificati
[ ] Utente admin creato e privilegi testati
[ ] SSH con chiavi funzionante
[ ] Root login SSH disabilitato (dopo test)
[ ] Firewall attivo con sole porte necessarie
[ ] Sistema aggiornato
[ ] NTP attivo
[ ] Servizi inutili disabilitati
[ ] Log verificati e rotazione presente
[ ] Backup configurato e restore testato
[ ] Monitoraggio/alert minimi attivi

Torna alla sezione HowTo Linux