10 consigli pratici per mettere in sicurezza un server Linux

Sicurezza server Linux

Hai appena attivato il tuo primo server Linux virtuale (VPS o cloud) o ti sei spinto oltre e hai deciso di fare il salto verso un server dedicato. Sono sicuro che la tua decisione sia stata ponderata e che tu abbia valutato tutti gli aspetti necessari. Se ti sei affidato a un provider di comprovata esperienza puoi stare ancora più tranquillo. Ma forse non sei ancora così sereno come vorresti perché ti preoccupa l’aspetto sicurezza del server.

Rilassati! È normale che non appena si attivi un server Linux ci si chieda come sia possibile metterlo in sicurezza ed è altrettanto normale cercare consigli sul web per essere certi che il proprio server venga messo al riparo da ogni problema critico.

Proprio per aiutarti in questo compito, di seguito ti elenco 10 regole da mettere subito in pratica per mantenere in sicurezza il tuo nuovo server Linux. Che aspetti allora? Metti mano alla console e inizia a digitare.

1° regola: aggiornare

Ricordati di tenere il sistema sempre aggiornato con le ultime patch, gli ultimi fix di sicurezza e l’ultimo kernel disponibile.

Nella console di CentOS e RHEL (Red Hat Enterprise Linux) digita:

yum -y update

Mentre se usi Debian o Ubuntu:

apt-get update
apt-get upgrade

2° regola: attivare il firewall

Alcune distribuzioni Linux come Ubuntu non sempre hanno il firewall locale attivato di default, a differenza di CentOS e RHEL, che hanno iptables attivato con la regola predefinita per l’accesso SSH. Per quanto sia sempre importante affidarsi a un firewall hardware e software indipendenti, attivare iptables è comunque buona cosa ed è per questo che devi procedere in questo modo.

Controlla se c’è qualche regola firewall definita:

iptables -L -n

Configura una prima regola come quella per consentire l’accesso SSH:

ufw allow 22/tcp

Poi avvia il firewall:

ufw enable

Puoi trovare altri utili consigli su come configurare iptables sul tuo server qui.

3° regola: configurare l’accesso SSH

Per accedere al tuo server Linux probabilmente usi già la connessione SSH, soprattutto se hai attivato un VPS. Ricordati di non accedere mai come root se non necessario e di eseguire tutti i comandi via sudo, in modo che ogni operazione venga registrata nell’apposito file di log.

Per questo motivo, disabilita l’accesso root via SSH, in modo da metterti in sicurezza da eventuali attacchi compiuti attraverso questo protocollo e specifica quali utenti possono utilizzare il protocollo sicuro SSH per accedere al tuo server. Gli utenti devono ovviamente essere già stati creati. Ecco come devi fare.

Inizia con l’accedere al file di configurazione del server SSH:

vi /etc/ssh/sshd_config

Poi, decommenta la seguente riga e digita il valore no:

PermitRootLogin no

Aggiungi la direttiva AllowUsers o AllowGroups al file seguita dalla lista degli account utente che vuoi autorizzati, separati da uno spazio:

AllowUsers user1 user2 user3 ...

Al termine, salva il file di configurazione, esci dall’editor e riavvia il servizio SSH:

service sshd restart

4° regola: gestire le password degli utenti

Uno dei problemi di sicurezza di un server Linux sono spesso le password degli utenti. Ecco come gestirle.

  1. Obbliga gli utenti a usare password forti, agendo sul file syste-auth, così:
    vi /etc/pam.d/system-auth (RHEL/CentOS/Fedora)
    vi /etc/pam.d/common-password (Ubuntu/Debian)

    Aggiungi una linea di comando come la seguente:

    /lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

    Per richiamare il modulo pam_cracklib disponibile in PAM (Pluggable Authentication Modules) e definire lo schema di password che l’utente deve rispettare. Nel caso specifico, si chiede all’utente di definire una password con una lunghezza minima pari a 8 caratteri (minlen), un carattere obbligatorio in minuscolo (lower-case, lcredit e uso negativo del numero), due caratteri obbligatori in maiuscolo (upper-case, ucredit e uso negativo del numero), due caratteri obbligatori corrispondenti a un numero (digit, dcredit e uso negativo del numero) e un carattere obbligatorio non alfanumerico (other, ocredit e uso negativo del numero).

  2. Imposta una data di rinnovo per le password, così:
    change -M 60 username
    change - M 60 -m 7 -W 7 username

    Dove -M indica il numero di giorni massimo di validità di una password, -m indica il numero di giorni minimo e –W indica il numero di giorni da cui partire con l’avvertimento per il cambio password.

  3. Evita che possano riutilizzare le vecchie password, così:
    vi /etc/pam.d/system-auth (RHEL/CentOS/Fedora)
    vi /etc/pam.d/common-password (Ubuntu/Debian)

    Aggiungi la seguente linea alla sezione auth:

    auth sufficient pam_unix.so likeauth nullok

    Aggiungi la seguente linea alla sezione password:

    password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5

    In questo modo, eviterai che l’utente possa usare le ultime 5 password già scelte in precedenza. Infine, verifica che non vi siano account con password vuota, nel seguente modo:

    cat /etc/shadow | awk -F: '($2==""){print $1}'

5° regola: disabilitare CTRL+ALT+CANC

Se hai utenti che arrivano dal mondo Windows, conviene disabilitare la combinazione CTRL+ALT+CANC in Inittab che in molte distribuzioni Linux provoca il riavvio del sistema e quindi del server. Per evitare che ciò accada edita il file inittab, così:

vi /etc/inittab

Commenta le seguenti righe:

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

6° regola: abilitare SELinux

Security-Enhanced Linux (SELinux) è un meccanismo di controllo di sicurezza integrato nel kernel ed è sempre bene che sia attivo. Per verificare se sul tuo nuovo server è in esecuzione, digita:

sestatus

Se disabilitato, avvialo nel seguente modo:

setenforce enforcing

7° regola: disabilitare i servizi inutili

È importante disabilitare i servizi in esecuzione inutili e rimuovere i package non necessari. Per prima cosa, quindi, verifica tutti i servizi in esecuzione con un livello di runlevel pari a 3:

/sbin/chkconfig --list |grep '3:on'

Una volta individuati i servizi non necessari, disabilitali così:

chkconfig nomeServizio off (CentOS 6/RHEL 6)
systemctl disable nomeServizio (CentOS 7/RHEL 7)
update-rc.d nomeServizio disable (Debian/Ubuntu)

Per i package che non usi, invece, ricorri ai comandi yum o apt-get, nel seguente modo:

yum -y remove nome-package (CentOS/RHEL)
apt-get remove nome-package (Debian/Ubuntu)

8° regola: disabilitare l’uso delle pendrive USB

A volte, può essere più sicuro fare in modo che gli utenti non usino pendrive USB per proteggere e mettere in sicurezza il sistema del server fisico Linux. Per ottenere questo risultato, crea il file no-usb ed editalo:

touch /etc/modprobe.d/no-usb
vi /etc/modprobe.d/no-usb
install usb-storage /bin/true

9° regola: bloccare l’uso dei cronjob

Cron è una caratteristica di Linux che ti permette di eseguire dei job programmati. Puoi decidere quali utenti possano usare questa funzione attraverso l’interazione con i file /etc/cron.allow e /etc/cron.deny. Ad esempio, puoi disabilitare tutti gli utenti all’uso di cron nel seguente modo:

echo ALL >>/etc/cron.deny

10° regola: monitorare con una certa frequenza i file log

Ricordati di monitorare con una determinata frequenza i seguenti file di log:

  • /var/log/message – log delle attività correnti
  • /var/log/auth.log – log delle autenticazioni
  • /var/log/kern.log – log del kernel
  • /var/log/cron.log – log di cron
  • /var/log/maillog – log del mailserver
  • /var/log/boot.log – log di avvio
  • /var/log/mysqld.log – log del server database MySQL

Bonus: impostare la directory /boot in modalità di sola lettura

Tutti i file relativi al kernel di Linux si trovano nella directory /boot su cui di solito sono abilitate anche le operazioni di scrittura. Per ridurre i rischi di modifiche non autorizzate che possano portare il sistema all’instabilità, conviene impostare la directory in modalità di sola lettura, editando il file fstab:

vi /etc/fstab
LABEL=/boot /boot ext2 defaults,ro 1 2

Per aggiornare il kernel in futuro sarà necessario reimpostare la modalità di scrittura.

Lascia un commento

Tutti i campi sono obbligatori.
L'indirizzo email non verrà pubblicato