Categorie: ISPConfig

ISPConfig: 2-Factor-Verificatie in Roundcube Webmail

Om een aantal websites en mailboxen te beheren draai ik op mijn VPS ISPConfig. Tijdens het installatieproces van ISPConfig werd Roundcube Webmail geïnstalleerd. RoundCube is een webgebaseerde IMAP-client, geschreven in PHP. Hier kan op ingelogd worden met het e-mailadres en het bijbehorende wachtwoord, zodat er op een gebruiksvriendelijke manier van e-mail gebruik gemaakt kan worden.

Roundcube banner

Alhoewel er reeds brute force beveiliging is geïmplementeerd vond ik het verstandig om 2-Factor-Authenticatie toe te voegen. Dit is een veelgebruikte beveiligingslaag om ongeautoriseerde toegang tegen te gaan.

2-Factor-Authenticatie kan redelijk eenvoudig aan Roundcube toegevoegd worden. Via https://plugins.roundcube.net kunnen diverse plugins gevonden worden waaronder Two Factor gAuthenticator van Alexandre Espinosa Menor.

De plugin is te vinden via https://plugins.roundcube.net/packages/alexandregz/twofactor_gauthenticator en wordt onderhouden op https://github.com/alexandregz/twofactor_gauthenticator.

Het README bestand bevat generieke aanwijzingen voor installatie. Deze aanwijzingen zijn echter te beknopt voor Debian.

Ik heb de plugin als volgt geïnstalleerd.

  1. Download de plugin naar een “tijdelijke” directory.
    Ik gebruik de volgende locatie; maar plaats de kopie op een locatie naar keuze:
    /mnt/storage/s1.install/roundcube/plugins

    $ sudo su
    [sudo] password for main: 
    
    # mkdir /mnt/storage/s1.install/roundcube/plugins
    # cd /mnt/storage/s1.install/roundcube/plugins
    # git clone https://github.com/alexandregz/twofactor_gauthenticator.git
    
    # cd twofactor_gauthenticator/
    # cp config.inc.php.dist config.inc.php
    # nano config.inc.php
    
  2. Pas vervolgens config.inc.php naar wens aan. Ik heb het config-bestand als volgt aangepast. Ik heb hiervoor “nano” gebruikt.  
    ?php
    // if true ALL users must have 2-steps active
    $rcmail_config['force_enrollment_users'] = false;
    
    // whitelist, CIDR format available
    // NOTE: we need to use .0 IP to define LAN because the class CIDR have a issue about that (we can't use 129.168.1.2/24, for example)
    $rcmail_config['whitelist'] = array('127.0.0.1', '::1');
    
    // Admin can disable saving devices for all users (paranoid mode)
    // Default: allow saving devices (true)
    $rcmail_config['allow_save_device_30days'] = true;
    
    // Make the 2-step field a masked password input type
    // Default: form field will be text (false)
    $rcmail_config['twofactor_formfield_as_password'] = false;
  3. Kopieer daarna de map “twofactor_gauthenticator” naar “/usr/share/roundcube/plugins”. Ik heb hiervoor “mc” gebruikt.
  4. Maak vervolgens een symbolic link aan van “/usr/share/roundcube/plugins/twofactor_gauthenticator naar “/var/lib/roundcube/plugins/twofactor_gauthenticator. Ik heb hiervoor “mc” gebruikt [menu-optie: “File” > “Symlink”].
  5. Schakel vervolgens de plugin in door deze toe te voegen aan het configuratiebestand “/etc/roundcube/config.inc.php”. Ik heb dit bestand met “nano” aangepast.Denk hierbij om de komma achter iedere toegevoegde plugin; plaats echter geen komma achter de laatste plugin binnen de array!
     
     

Wanneer alles goed is gegaan, dan kan twee-factor-verificatie ingeschakeld worden.

Volg de stappen op [ https://github.com/alexandregz/twofactor_gauthenticator ] onder “Configuration” om twee-factor-verificatie in te schakelen.

Ik heb de optie “Activeren” aangevinkt en daarna op “Fill all fields” of “Alle velden instellen” geklikt. Vervolgens heb ik de QR code gescand en de code van de authenticator overgenomen in het veld “Check code”. Vervolgens heb ik op “Check code” geklikt en was twee-factor-verificatie een feit.

Opmerking: de vertaling “2-staps verificatie” is discutabel. In dit geval zou twee-factor-verificatie misschien beter zijn; alhoewel beveiligingsprofessionals steeds vaker pas van twee-factor-verificatie spreken wanneer er ook biometrie wordt toegepast.