• Zuhause
  • Artikel
  • OpenVPN auf Freenas 11.3 mit MFA mit Google Authenticator
Veröffentlicht am 02-04-2019

OpenVPN unter Freenas 11.3 mit Multi-Factor-Authentifizierung mit Google Authenticator

Beachten Sie, dass dieses Setup auf einem Server mit dem Namen Freenas in einem LAN mit einem Subnetz von 192.168.1.0/24, dem Domänennamen * .local und einem VPN-Host-Subnetz mit 192.168.2.0/24 erfolgt. Der Freenas-Server befindet sich hinter einem Router, der den UDP-Port 443 an das auf UDP-Port 1194 laufende OpenVPN-Jail weiterleitet.

Wenn Sie diese Werte ändern möchten, müssen Sie die Dateien openvpn.cfg, client.cfg und ipfw.rules erstellen.

Der größte Teil der Konfiguration befindet sich in / usr / local / etc. In diesem Handbuch wird davon ausgegangen, dass Sie wissen, wie ein tcsh-Prompt aussieht, ein HEREDOC und wie grundlegende vi verwendet werden.

Die meisten dieser Befehle können in Skripts geschrieben werden, und ich könnte dies theoretisch zu einem Shellskript machen, wenn genügend Leute möchten, dass ich das als Kernstück aufstelle.

Haftungsausschluss, ich bin kein Openvpn-Konfigurationsspezialist. Wenn etwas für Ihre Umgebung nicht funktioniert, kann ich Ihnen möglicherweise nicht helfen. Ich schlage vor, Sie versuchen es mit Google. Ich bin mir auch nicht sicher, ob dies der sicherste Weg ist, openvpn zu konfigurieren.

Beginnen;

Erstellen Sie ein Gefängnis, nennen Sie es openvpn_1.

Ich hatte Probleme mit der neuen Benutzeroberfläche, verwenden Sie also die klassische Benutzeroberfläche. Klicken Sie auf Erweitert und setzen Sie den Download-Pfad für Jail auf http://download.freenas.org/jails/11/x64/, wenn Sie FreeNAS 11 mit der klassischen Benutzeroberfläche verwenden.

Melden Sie sich im Gefängnis an und aktualisieren Sie die FreeBSD-Paketsuser @ freenas # sudo jexec `jls | awk ″ / openvpn_1 / {print $ 1} ’` tcshroot @ openvpn_1: / # pkg updateroot @ openvpn_1: / # pkg-Upgrade -y

Fehlenden libdl-Fehler im FreeNAS 11-Gefängnis templateroot @ openvpn_1 behoben: / # ln -sf /lib/libc.so.7 /usr/lib/libdl.so.1

Installieren Sie openvpn und google-authenticator packagesroot @ openvpn_1: / # pkg install -y openvpn pam_google_authenticator

Erstellen Sie OpenVPN-Konfigurationen und Zertifikate so sicher wie möglich @ openvpn_1: / # umask 077root @ openvpn_1: / # mkdir -p / usr / local / etc / openvpn / {Zertifikate, client-config, keys}

Erstellen Sie eine Zertifizierungsstelle (CA), Server-Zertifikate und kopieren Sie das Verzeichnis certs in jail Sie können entweder das easyrsa-Paket oder den FreeNAS certs webgui verwenden.

Generieren Sie einen sicheren TA-Schlüssel (nützlich zum Schutz vor mittleren Angriffen) root @ openvpn_1: / # openvpn - genkey - secret /usr/local/etc/openvpn/keys/ta.key

Erstellen Sie eine Serverkonfiguration (beachten Sie die Konfigurationsoptionen tls-server, mode server und plugin für openvpn pam auth) root @ openvpn_1: / # cat << 'CONF'> /usr/local/etc/openvpn/openvpn.conf#server configport 1194proto udpdev tunmode servertls-serverca /usr/local/etc/openvpn/certs/ca.crtcert /usr/local/etc/openvpn/certs/openvpn-server.crtkey / usr / local / etc / openvpn-servers. Schlüssel # Diese Datei sollte geheim gehalten werden, sollte jedoch nicht verschlüsselt werden. Andernfalls wird openvpn nicht gestartet. /usr/local/etc/openvpn/certs/dh.pemserver 192.168.2.0 255.255.255.0ifconfig-pool-persist ipp.txtpush “routen 192.168.1.0 255.255.255.0 "keepalive 10 120tls-auth /usr/local/etc/openvpn/keys/ta.key 0 # Diese Datei ist secretremote-cert-tls clientcipher AES-256-CBCuser Gruppe niemandes nobodypersist-keypersist-tunstatus openvpn- status.logverb 3explicit-exit-notify 1plugin /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn'CONF '

Erstellen Sie client.cfg (beachten Sie die Anweisungen key-direction, tls-client- und remote-cert-tls-Optionen, auth-user-pass, ersetzen Sie durch den später erstellten Benutzernamen und <öffentliche VPN-Adresse> mit der Adresse Ihres Servers löst auf) root @ openvpn_1: / # vi /usr/local/etc/openvpn/client-configs/.cfg# client configclientdev tunproto udpremote <öffentliche vpn-Adresse> 443resolv-retry infinitenobindpersist-keypersist-tunkey-direction clientremote-cert-tls servercipher AES-256-CBCdhcp-Option DNS 192.168.1.1dhcp-Option DOMAIN-Startseite # HilfreichReditor-Gateway Def1auth-User-Passverb 3 #PASTE / usr / local / etc / openvpn / certs / ca. crt #PASTE USER CERT #PASTE USER ENCRYPTED ODER UNENCRYPTED KEY vorzugsweise verschlüsselt #PASTE Inhalt von / usr / local / etc / openvpn / keys / ta.key

Erstellen Sie einen gauth-Benutzer, der sich nicht einloggen kann: @ openvpn_1: / # pw adduser

Erstellen Sie gauth config directoryroot @ openvpn_1: / # mkdir -p / usr / local / etc / openvpn / google-authenticatorroot @ openvpn_1: / # chown gauth: gauth / usr / local / etc / openvpn / google-authenticator

PAM-Konfigurationsdatei @ openvpn_1 erstellen: / # cat << \ CONF> /etc/pam.d/openvpn auth erforderlich /usr/local/lib/pam_google_authenticator.so secret = / usr / local / etc / openvpn / google-authenticator / $ {USER} Benutzer = gauth forward_pass \ CONF

Erstellen Sie einen VPN-Benutzer mit einem zufälligen Kennwort (ersetzen Sie mit der zuvor erstellten Benutzer-ID) root @ openvpn_1: / # pw useradd -s / sbin / nologin

Erstellen Sie ein GoogleAuth-Token für den Benutzer (ersetzen Sie durch die im letzten Schritt verwendete Benutzer-ID). OpenVPN-Login \ ”-s / usr / local / etc / openvpn / google-authenticator /

Alles andere kann mit der Standard-Berechtigungswurzel @ openvpn_1: / # umask 022 erstellt werden

Aktualisieren Sie die Firewall-Regeln auf NAT 192.168.2.0 trafficroot @ openvpn_1: / # cat << \ RULES> /usr/local/etc/ipfw.rules#!/bin/shEPAIR=$(/sbin/ifconfig -l | cut -d '' -f2) ipfw -q -f flushipfw -q nat 1 config wenn $ {EPAIR} ipfw -q nat 1 all von 192.168.2.0/24 über $ {EPAIR} ipfw -q add nat 1 all aus beliebig über $ {EPAIR} TUN = $ (/ sbin / ifconfig -l | cut -d '' -f3) ifconfig $ {TUN} Name tun0 \ RULES

Fügen Sie init-Variablen für openvpnroot @ openvpn_1 hinzu "/Usr/local/etc/openvpn/"cloned_interfaces="_tun_gateway_enable=" yES_der_firewall_enable=ryYES_der_firewall_script=6/usr/local/etc/ipfw.rules/

Aktualisieren Sie syslogd config so, dass openvpn sich in / var / log / messages auf dem vorletzten Lineroot @ openvpn_1 einloggt: / # vi /etc/syslog.conf!openvpn*.* /var/log/openvpn.log

Aktualisieren Sie syslog rotatorroot @ openvpn_1: / # mkdir -p /usr/local/etc/newsyslog.conf.droot@openvpn_1:/ # cat << \ CONF> /usr/local/etc/newsyslog.conf.d/openvpn/var /log/openvpn.log 600 30 * @ T00 ZC \ CONF

Starten Sie jail neu, um openvpn, Firewall und Netzwerk neu zu starten

Kopieren Sie die Konfiguration aus dem Gefängnis und senden Sie sie an einen Ort, an dem Sie von einem Client aus darauf zugreifen können. Ersetzen Sie durch den Namen Ihres NAS-Volumes und als den Benutzer, bei dem Sie angemeldet sind: Benutzer @ freenas: / $ sudo tcsh -c “cp /mnt//jails/openvpn_1/usr/local/etc/openvpn/client-configs/.cfg / mnt / / users / /”

Versuchen Sie sich mit einem OpenVPN-Client über die Konfigurationsdatei zu verbinden. Das Kennwort des Benutzers wird wie folgt eingegeben:

Tools und Befehle, mit denen Sie Probleme diagnostizieren können: tail -n /var/log/openvpn.log/sbin/ifconfig tun0 destroypamtesterGoogle

Ich hoffe du hast es soweit geschafft.

Siehe auch

DOWNLOAD (PDF) Driverless: Intelligente Autos und die Straße voraus EPUB, MOBI, TXT von Hod LipsonVergleich von Databloc und WettbewerbDer ethische Software-IngenieurWelche Probleme gibt es mit Gateway-Computern?Bedeutung der SpieleEBOOK [#PDF] Das Buch von Tiki: Ein Leitfaden für die