Project

General

Profile

Actions

Abilitare la 2FA su Roundcube

Un requisito sempre più richiesto per aumentare la sicurezza delle applicazione web è quello di abilitare un sistema di 2FA (2 Factor Authentication) per gli accessi. Nel caso di Roundcube questo può essere ottenuto utilizzando una apposita estensione twofactor_gauthenticator. Non essendo questa pacchettizzata per Debian dovrà essere scaricata direttamente dal repository di sviluppo, e dovendo convivere con l'installazione di sistema utilizzeremo come directory di installazione /usr/local/share/roundcube/plugins facendo poi riferimento al codice con un link simbolico, pertanto si esegua:

mkdir /usr/local/share/roundcube/plugins -p
cd /usr/local/share/roundcube/plugins
git clone https://github.com/alexandregz/twofactor_gauthenticator.git
cd twofactor_gauthenticator/
git checkout 1.3.9-version
cd /var/lib/roundcube/plugins/
ln -s /usr/local/share/roundcube/plugins/twofactor_gauthenticator twofactor_gauthenticator

e si aggiunga alla lista dei plugin in /etc/roundcube/config.inc.php:

$config['plugins'] = array(
...
'twofactor_gauthenticator',
);

Si tenga presente che una volta attivato per un utente l'uso della 2FA questo non potrà tornare indietro senza collegarsi, ed anche se esiste la possibilità di salvare il QR code ed i codici di accesso di emergenza, qualora questi non fossero disponibili l'unica possibilità di tornare indietro sarebbe quella di cambiare l'impostazione a mano (o recuperare i dati) sul database. Nel caso sia necessario farlo le operazioni sono analoghe alle seguenti (si assume l'uso di MariaDB):

MariaDB [(none)]> use roundcube
MariaDB [roundcube]> select preferences from users where username like "%username%";
.... -------+
| a:4:{s:6:"layout";s:7:"desktop";s:17:"message_threading";a:1:{s:5:"INBOX";b:1;}s:11:"client_hash";s:32:"2c4ad98596430d8ec9d719d0698f0f6c";s:24:"twofactor_gauthenticator";a:3:{s:6:"secret";s:16:"WCBZ4ORVXB6OKGDP";s:8:"activate";b:1;s:14:"recovery_codes";a:4:{i:0;s:10:"L3FVVT4CCM";i:1;s:10:"VTFVLZEGUX";i:2;s:10:"V23JITINMW";i:3;s:10:"E3MZV34VXB";}}} |
+--------- ...
MariaDB [roundcube]>  update users set preferences='a:4:{s:6:"layout";s:7:"desktop";s:17:"message_threading";a:1:{s:5:"INBOX";b:1;}s:11:"client_hash";s:32:"2c4ad98596430d8ec9d719d0698f0f6c";s:24:"twofactor_gauthenticator";a:3:{s:6:"secret";s:16:"WCBZ4ORVXB6OKGDP";s:8:"activate";b:0;s:14:"recovery_codes";a:4:{i:0;s:10:"L3FVVT4CCM";i:1;s:10:"VTFVLZEGUX";i:2;s:10:"V23JITINMW";i:3;s:10:"E3MZV34VXB";}}} where username like "%username%";

in cui cioè nella stringa delle preferenze si cambia, nella parte riguardante twofactor_gauthenticator, la stringa s:8:"activate";b:1 in s:8:"activate";b:0 (facendo attenzione di applicare la cosa solo nel caso in cui la selezione dell'utente sia univoca.

Qualora si voglia rendere obbligatorio per tutti l'uso della 2FA, occorrerà aggiungere a /etc/roundcube/config.inc.php l'ulteriore configurazione:

// Added for twofactor_gauthenticator
$config['force_enrollment_users'] = true;

Updated by Simone Piccardi about 1 month ago · 2 revisions