PPTP Server mit LDAP Authentifizierung

Für VPN Verbindungen bevorzuge ich eigentlich OpenVPN, das ich auch in vielen Konstellationen seit langer Zeit einsetze. Leider gibt es einige Geräte, die OpenVPN nicht unterstützen.
Diese Geräte unterstützen aber meistens Microsofts PPTP, das zwar bei weitem nicht so sicher ist, aber von einigen Geräten als einziges Protokoll unterstützt wird.
Als begeisterter LDAP-Nutzer konnte ich es natürlich nicht lassen, den pptpd mit einer LDAP-Authentifizierung zu konfigurieren.

Damit pptpd gegen LDAP authentifizieren kann, benötigt man einen Samba Winbind Server auf der gleichen Maschine auf der auch der pptpd läuft.
Der Samba Server muss auf jeden Fall Domänenmitglied sein. Die Konfiguration kann aber sehr minimalistisch ausfallen, weil außer Winbind nichts benötigt wird.
Dokumentation dazu findet man in der Samba Howto Collection

Folgende Einträge sind für die smb.conf notwendig:

[global]
# Hier muss der Name der Domäne eingetragen sein
workgroup = MY_DOMAIN
server string = VPN Samba Version %v
netbios name = VPN
# Der Server soll Domain Member sein
security = domain
# Der PDC, gegen den die Authentifizierung erfolgt
password server = NAME_OR_IP_OF_PDC
# Der Winbind-Server des Netzes, i.A. der PDC 
wins server = NAME_OR_IP_OF_PDC
winbind use default domain = Yes
# Bevorzugt soll lmhosts verwendet werden
name resolve order = lmhosts host bcast

Um in der smb.conf mit Namen arbeiten zu können, ist es empfehlenswert die lmhosts Datei zu verwenden.
Prinzipiell sollte auch WINS funktionieren, aber damit hatte ich immer wieder Schwierigkeiten.
Dabei ist der einzige Host, dessen Name in der lmhosts aufgelöst werden muss, der PDC.

# This file provides the same function that the lmhosts file does for
# Windows. It's another way to map netbios names to ip addresses.
#
# See section 'name resolve order' in the manual page of smb.conf for
# more information.

127.0.0.1     localhost
192.168.1.27  pdc

Als nächstes muss der Winbind Server gestartet werden und der Samba Server der Domäne beitreten.

rcwinbind start
net rpc join -U root MEMBER

Der Benutzername für join ist in der Regel ‚Administrator‘. Der Befehl fragt nach dem Passwort des Administrators und nach dessen Eingabe sollte der Beitritt zur Domäne erfolgreich sein.
Testen kann man das nun mit dem Befehl wbinfo, dabei wird mit dem Paramter -P überprüft, ob NETLOGON funktioniert, d.h. ob der PDC erreichbar ist und mit -u werden die verfügbaren Nutzer ausgegeben. Beides sollte funktionieren, wenn der Domänenbeitritt geklappt hat.

wbinfo -P
wbinfo -u

Wenn der PDC erreichbar ist und die Liste der verfügbaren Nutzer ausgegeben wurde, kann geprüft werden, ob die Anmeldung mit dem Nutzerkonto, das später PPTP benutzen soll, möglich ist. Dazu wird zunächst ein Test mit smbclient gemacht.

smbclient  -L \\NAME_OF_PDC -U MY_USER

Funktioniert die Anmeldung, werden nun die Freigaben auf dem PDC gelistet. Mit den gleichen Daten muss nun das Programm ntlm_auth gestartet werden.
Hier ist es wichtig, dass für den Test der Paremter –diagnostics angegeben wird.

ntlm_auth --username=MY_USER --domain=MY_DOMAIN --diagnostics

Die Authentifizierung wird nicht funktionieren, weil das Passwort im Klartext übergeben wurde.
Wenn aber die Ausgabe aber so aussieht wie hier, funktioniert die Verbindung und die Authentifizierung wird über PPTP klappen:

:~ # ntlm_auth --username=MY_USER --domain=MY_DOMAIN --diagnostics
password: 
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
Wrong Password (0xc000006a)
:~ #

Hat das alles funktioniert, kann es mit der Konfiguration des pptp losgehen.
Die ist relativ einfach, die Datei /etc/pptpd.conf muss einfach nach folgendem Vorbild angelegt werden:

speed 115200
option /etc/ppp/options.pptpd
localip 192.168.2.129
remoteip 192.168.2.130-254
pidfile /var/run/pptpd.pid

Hier wird dem pptpd mitgeteilt, dass er die Einstellung für PPP aus der Datei /etc/ppp/options.pptpd lesen soll und für das VPN das Netzwerk 192.168.1.128/25 benutzt werden soll.

Die Datei /etc/ppp/options.pptpd ist das eigentlich wichtige Element in der Konfiguration der pptpd.
Mir hat die Anleitung auf der Website von pptpd ganz gut geholfen.

lock
debug
nologfd
name pptpdev
nobsdcomp
proxyarp
refuse-pap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.27
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 -d 2"

Die beiden letzten Zeilen sind dabei das Entscheidende.
Hier wird bestimmt, dass winbind zur Authentifizierung und dazu das Programm ntlm_auth verwendet werden soll.

Jetzt kann der pptpd gestartet werden und getestet werden, ob die Verbindung klappt.
Die Anmeldung sollte dabei mit MY_DOMAIN\MY_USER erfolgen.
Bei mir hat das mit dem iPhone 5 auf Anhieb geklappt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.