Opnsense Openvpn mit DUO 2FA

Um das DUO Plugin für die Opnsense 20.1 zu erzeugen bin ich wie folgt vorgegangen:

  • Virtualbox installiert undeine FreeBSD 64-Bit Maschine angelegt.
  • Das passende FreeBSD Image herunterladen (derzeit 11.2)
    und in virtueller Maschine installieren.

In der virtuellen Maschine ein paar Dinge installieren (MC nur weil ich ein bekennender VI Hasser bin und mcedit benutze 🙂 )

pkg install mc
pkg install png gmake pkgconf.

cd /tmp
wget --no-check-certificate https://github.com/duosecurity/duo_openvpn/archive/2.3.tar.gz

tar -xf 2.3.tar.gz 
cd /tmp/duo_openvpn-2.3

Noch zwei Dateien für die Python Umgebung auf der Opnsense anpassen

In der duo_openvpn.c die folgende Zeile hinzufügen:

#define INTERPRETER "usr/local/bin/python3"

In der duo_openvpn.py die Zeile

 #!/usr/bin/env python

Durch die folgende Zeile ersetzen:

 #!usr/local/bin/python3

Und das Ganze mit dem folgenden Befehl kompilieren

gmake

Nun das Verzeichnis /tmp/duo_openvpn-2.3 z.B. per WinSCP auf den Rechner kopieren und die folgenden Dateien z.B. per WinSCP auf die Opnsense Maschine in das Verzeichnis /opt/duo kopieren:

duo_openvpn.so
ca_certs.pem
duo_openvpn.py
https_wrapper.py
six.py

Und ein paar Berechtigungen setzen….

chmod 755 /opt/duo/duo_openvpn.so
chmod 644 /opt/duo/ca_certs.pem
chmod 755 /opt/duo/duo_openvpn.py
chmod 755 /opt/duo/https_wrapper.py
chmod 755 /opt/duo/six.py

In der Openvpn Server Konfiguration unter advanced configuration / advanced nun noch das Plugin mit den Zugangsdaten aus der DUO Anwendungs-Konfiguration hinzufügen:

plugin /opt/duo/duo_openvpn.so [DUO APP Integration key] [DUO APP Secret key] [DUO APP API hostname]

Author: Stefan