Categorie: Blog

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.

Scripts [batch]: wel of geen bestanden in map

Wanneer je in DOS wilt testen of in een map bestanden staan, dan kan deze code snippet erg handig zijn.

if exist "c:\Data\Test\." >nul >2>nul dir /a-d "C:\Data\Test\*" && (echo Files Found) || (echo File Not Found) >NUL

In dit voorbeeld wordt eerst getest of de map bestaat. Wanneer die map bestaat, dan wordt er in die map gekeken naar de aanwezigheid van bestanden. Met “a-d” worden directories uitgesloten. Wanneer er bestanden gevonden worden, dan kun je iets uit laten voeren. In dit voorbeeld wordt de tekst “Files exist” uitgevoerd. Maar wanneer er geen bestanden gevonden worden, dan wordt de tekst “No file found” uitgevoerd.

Iets verder uitgewerkt kan het script er als volgt uitzien.

@ECHO OFF
 set TestDir=%SYSTEMDRIVE%\Temp
 if exist "%TestDir%\." >nul >2>nul dir /a-d "%TestDir%\*" && (goto :DeleteFiles) || (goto :End) >NUL

:DeleteFiles
 echo Deleting files. One moment.
 del %TestDir%\*.* /S /Q >NUL
 echo Done.

:End

In dit voorbeeld worden bestanden uit de map verwijderd wanneer er bestanden in de map blijken te staan.

Debian: KPN Interactive TV in Chromium

Een aantal jaren terug ben ik overgestapt van Windows naar Debian GNU/Linux. Ik keek regelmatig even TV op mijn laptop via https://interactievetv.nl. Helaas bleek dat dit niet werkte in Chromium onder Linux.

Debian is conservatief met software pakketten en terughoudend met propriëtaire codecs. Debian doet dit om een stabiele en vrije omgeving aan te kunnen bieden. Dit betekend dat je voor bepaalde nieuwere softwareversies en propriëtaire pakketten een alternatieve software repository moet gebruiken. Zo vond ik op http://www.deb-multimedia.org recente audio en video codecs. Hiermee kon ik de reeds geinstalleerde video en audio codecs bijwerken naar meer recente versies en ook propriëtaire codecs toevoegen.

De pakketten kunnen via apt geïnstalleerd worden. Hiervoor moet de deb-multimedia repository toegevoerd worden aan de apt sources.

$ sudo su
# nano /etc/apt/sources.list

Voeg de volgende regels toe onderaan sources.list.

# deb-multimedia.org
  deb http://www.deb-multimedia.org buster main non-free

Tijdens het uitvoeren van het commando “apt update” werd duidelijk dat de handtekening van deze nieuwe repository nog toegevoerd moet worden. Op deb-multimedia.org vond ik de volgende stappen om dat te doen.

# apt-get update
# apt-get update -oAcquire::AllowInsecureRepositories=true
# apt-get install deb-multimedia-keyring

Vervolgens kon ik de gewenste packages installeren.

# apt update
# apt upgrade
# apt dist-upgrade
# apt autoremove
# apt install ffmpeg

Hierna kon ik weer TV kijken op mijn laptop in Chrome onder Debian GNU/Linux.

Schermafdruk: KPN Interactieve TV.
Beeldmateriaal © NOS.
Toestemming verleend om materiaal te gebruiken door NOS op 25-07-2019.

pfSense: Gigabit doorvoersnelheid APU2

Ik zie het als een uitdaging om op een efficiënte manier een oplossing uit te werken. Veel kleine ondernemingen hebben belang bij een goede firewall maar willen vaak de kosten zo laag mogelijk houden.

Een aantal jaren terug vond ik een interessant systeembord van PC EnginesTM. Dit systeembord is met een formaat van 152,4 x 152,4 mm klein te noemen. Dit bord past in een behuizing van 168 mm x 157 mm x 30 mm (breedte x diepte x hoogte).

In combinatie met de pfSense® firewall/router softwaredistributie kan een APU2 ingezet worden als een energiezuinige, goedkope maar robuuste firewall.

Een interessant detail is dat Netgate in het verleden ook gebruik heeft gemaakt van dit systeembord en de standaard behuizing onder de naam Netgate APU2.

Het APU2 systeembord met 4 GB RAM en een 1 GHz processor biedt een prima oplossing voor kostenbewuste klanten. Door een paar aanpassingen lukt het zelfs om 1 Gigabit per seconde door te voeren.

Om deze doorvoersnelheid te bewerkstelligen zijn de onderstaande wijzigingen nodig.

    1. WebUI: System – Advanced – Networking
      – Uitvinken: Hardware Checksum Offloading
      – Uitvinken: Hardware TCP Segmentation Offloading
      – Uitvinken: Hardware Large Receive OffloadingVergeet niet om de wijzigingen op te slaan d.m.v. de save-knop.
    2. Console: file “/boot/loader.conf.local” aanpassen/aanmaken met de volgende regels.
      # Acknowledge Intel's license terms
      # Note: ipw/iwi = Intel Pro/Wireless NICs
      # Odd messages appear when you do not acknowledge
        legal.intel_ipw.license_ack=1
        legal.intel_iwi.license_ack=1
      
      # Value "-1" means unlimited packet processing
      # This is required for 1Gbps throughput
        hw.igb.rx_process_limit="-1"
        hw.igb.tx_process_limit="-1"

      Vergeet niet om bovenstaande regels op te slaan. Een herstart van de firewall is nodig om de wijziging actief te maken.

Een belangrijk detail bij network tuning is de gebruikte BIOS versie. De APU2 wordt bijvoorbeeld standaard geleverd met een legacy BIOS. Deze legacy versie heeft geen ondersteuning voor snelheidsverbeteringen. Op de GitHub pagina van PC EnginesTM is de meest recente versie te vinden: https://pcengines.github.io.