Configurant l'accés d'usuaris a un projecte Drupal 10 amb doble factor OTP

doble factor OTP a Drupal 10

El meu projecte Drupal actual identifica als usuaris validant-los via LDAP contra l'Active Directory. Ara, per mesures de seguretat, també he implementat el doble factor que obliga al fet que escriguen el codi que els arriba al telèfon.

A la feina tenim necessitats de seguretat d'alt nivell i des del CCN, el Centre Criptològic Nacional ens estan assessorant i dirigint per a aplicar directives de seguretat avançades per tal de complir l'Esquema Nacional de Seguretat. I una d'aquestes bones pràctiques a implantar és el doble factor en l'autenticació d'usuaris a totes les nostres aplicacions web, d'aquesta manera encara que un intrús aconseguisca accés a l'ordinador de l'organització o endevine la contrasenya d'algú, no podrà acccedir.

A Drupal 10 tenim el mòdul Two-factor Authentication (TFA): https://www.drupal.org/project/tfa , però té uns quants requeriments que cal instal·lar i configurar prèviament.

COMENCEM LA INSTAL·LACIÓ DE MÒDULS PREVIS
Primer de tot, requereix el mòdul Encrypt, per tant, cal instal·lar-ho.
El mòdul Encrypt té una API, però no inclou mètodes de cifrat. Així doncs, necessitem també instal·lar un mòdul de cifrat al Drupal. Instal·larem el mòdul Real AES.

Però quan anem a instal·lar el mòdul Real AES veurem que també té uns requisits que ens mostra Drupal en un warning superior de color negre dient-nos que necessita la llibreria PHP-Encryption i que cal instal·lar-la amb composer:

doble factor a Drupal 10

Aleshores, instal·larem PHP-Encryption amb composer de la següent manera:

$ composer require defuse/php-encryption

doble factor OTP a Drupal 10

També necessitem instal·lar la llibreria de l'OTP, ho farem amb composer també:

$ composer require christian-riesen/otp

doble factor a Drupal 10

Finalment, ja podremprocedir a fer la instal·lació del mòdul RealAES en Drupal:
doble factor en Drupal

També requereix el mòdul key, aleshores cal instal·lar-ho.

I per últim, també és necessari instal·lar (sembla que no acabem mai d'instal·lar requisits, però ja estem acabant!) la llibreria PHP-QR Code, que ens servirà per a llegir i generar codis QR. Instal·larem aquesta llibreria amb:

$ composer require chillerlan/php-qrcode

CONFIGURACIÓ DEL DOBLE FACTOR
Doncs bé, una vegada hem instal·lat el mòdul tfa, el mòdul encrypt i el mòdul key, tindrem 3 noves opcions en la part d'administració del nostre Drupal:
doble factor a Drupal 10

Començarem configurant una clau, des del mòdul Key, que després farem servir amb el mòdul Encrypt. Començarem anant a "Keys" i crearem una clau nova:
configurant el mòdul Key de Drupal

Ficarem les següents dades:
- Key name: key
- Descripció: key para TFA
- Key type: Encryption
- Key size: 128
- Key provider: Configuración
- Key value: fiquem una clau aleatòria que generem amb alguna web generadora de claus.
- Marquem el checkbox de "Base64-encoded"

I guardem:
configurant el doble factor a Drupal 10

Ara anem al segon pas, entrarem en Encryption profiles i crearem un nou perfil fent click en Add a profile:
doble factor a Drupal 10

Omplirem les dades Etiqueta, Encryption Method i en l'opció "Encryption Key" li direm "key", que és la clau que hem creat en el pas nº 1:
doble factor tma a Drupal  10

I una vegada desem la informació, hem d'anar a la pestanyeta de "Configuració" i marcar el checkbox que diu que també acceptem mòduls 'deprecated':
doble factor tma OTP a Drupal 10

I bé, com que ja tenim el pas nº 1 (la clau) i el pas nº 2 (l'encriptació), ja podem configurar el pas nº 3, el TFA o Two Factor Authenticator des de la part d'administració de Drupal.

Marcarem tots els rols individuals que vullguem o, si volem obligar a tots els usuaris a autenticar-se també amb doble factor, marcarem la primera opció "Usuari autenticat":
tma OTP a Drupal 10

En el meu projecte, al final no he marcat eixa primera opció, i he marcat els altres rols, ja que tots els meus usuaris tenen un rol, i així puc fer proves de desenvolupament amb algun usuari que no tinga rol sense necessitat d'autenticar-me amb doble factor.

En Allowed Validation plugins marquem: TFA Time-based one-time password (TOTP).
En Encryption Profile marquem: Perfil de encriptación.
En Skip Validation marquem: 3. (Podem configurar el número d'intents que vullguem, clar).
Marcarem el checkbox de Flood Control With UID Only i ficarem el número 300.

OTP a Drupal 10

En TFA Flood Threshold, li direm: 6.
I després he fet la traducció de tots els textos:

OTP doble factor a Drupal 10

UN ÚLTIM HACK ABANS D'ACABAR

El meu projecte Drupal 10 és especial, ja que l'autenticació dels usuaris no la faig contra la base de dades local de Drupal, sinó que la faig amb els usuaris que tinc en l'Active Directory de la meua organització autenticant els usuaris via LDAP, tal i com vaig detallar en l'article "Instal·lant el mòdul LDAP a Drupal 10 per una autenticació d'usuaris centralitzada".

Doncs bé, resulta que per defecte el mòdul tfa falla autenticant a usuaris perquè cerca la contrasenya en la base de dades local de Drupal 10 i no en l'Active Directory que tenim a un altre servidor.

Aleshores, per tal que la meua web funcione bé i agafe la contrasenya de l'Active Directory, comentarem les següents línies del fitxer /src/Form/TfaSetupForm.php del mòdul de tfa:

$current_pass = $this->passwordChecker->check(trim($form_state->getValue('current_pass')), $account->getPassword());
//if (!$current_pass) {
//$form_state->setErrorByName('current_pass', $this->t("Incorrect password."));
//}
return;

(Vist als fòrums de Drupal https://www.drupal.org/project/tfa/issues/2855394)

I bé, amb això l'usuari ja podrà accedir ficant la seua contrasenya de l'Active Directory i, a continuació, ja podrà escanejar el codi QR i verificar el doble factor OTP en la web de Drupal.

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES