Come NON abilitare SELinux

Ho da anni un server Linux su Contabo, ci ospito vari sitarelli tra cui il mio e quello di 101 Anagrammi Zen. Recentemente ho approfittato della promozione “no setup fee” per aggiornarlo: era fermo a CentOS 8, sistema operativo ormai defunto, sebbene ancora funzionante.

Così ordino un server nuovo fiammante; la scelta del sistema operativo ricade su AlmaLinux, ottima distro RPM-based che gode della compatibilità binaria con RHEL.

Passo diverse ore a trasferire contenuti e impostazioni dal vecchio server, e a configurare software (MariaDB, MongoDB, Nginx, PHP-fpm, eccetera). Ultimo passaggio: abilitare SELinux.

Così edito /etc/selinux/config modificando la direttiva SELINUX da disabled a enforcing, creo il file /.autorelabel per innescare il relabeling del filesystem al successivo boot, e riavvio il server.

Bravo Lore. Boom. Macchina bloccata. Ho dovuto fare il reboot da rescue media per recuperare il server.

Cos’è successo? Se si passa direttamente da disabled a enforcing, il sistema al prossimo avvio carica il modulo SELinux del kernel, ma non è in grado di accedere al file /.autorelabel, perché esso stesso ha il labeling errato; il relabeling non avviene, il sistema non può accedere ai file che gli servono per il boot, e quindi va in stallo.

Come si deve procedere, dunque? Devo dire che la cosa non è ben documentata; ci sono arrivato da solo. Si abilita per prima cosa la modalità permissive, si crea il file /.autorelabel e si riavvia. In questo modo il sistema carica il modulo SELinux, ma in modo non bloccante; trova il file /.autorelabel e procede al relabeling del file system. A questo punto si può elevare il livello a enforcing e riavviare di nuovo: il filesystem è sistemato, il boot avviene regolarmente.

Si procederà quindi a impostare le label customizzate e al fine tuning dei vari booleani e altre variabili SELinux, per mettere in sicurezza il layer applicativo.


Commenti

Lascia un commento