Beispielkonfiguration openVPN mit LDAP Authentifizierung per Active Directory, Windows Server 2012 bzw. 2008 R2.
Ziel war es anstatt Verwendung von Clientzertifikaten, die Gruppenmitgliedschaft einer Active Directory Gruppe (memberOf) abzufragen. Eine funktionierende openVPN Serverkonfiguration war schon vorhanden und wurde wie folgt angepasst.
In diesem Fall war der openVPN Server ein Debian Squeeze, folgende VPN Pakete wurden installiert/erweitert:
apt-get install openvpn openvpn-auth-ldap dnsmasq
Optional habe ich eine PHP VPN-Statuspage nach /var/log/index.html abgelegt, damit diese funktioniert wurde der Indianier samt PHP Erweiterungen installiert.
apt-get install apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi
LDAP Vorlage kopieren:
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/ldap.conf
LDAP Vorlage anpassen:
<LDAP>
# LDAP server URL
URL ldap://s1.domain.com:389
# Bind DN (If your LDAP server doesn’t support anonymous binds)
BindDN cn=ldapuser,cn=Users,dc=domain,dc=com
# Bind Password
Password mysecretpasswordforldapuserlogin
# Network timeout (in seconds)
Timeout 15
# Enable Start TLS
TLSEnable no
# Follow LDAP Referrals (anonymously)
FollowReferrals no
</LDAP>
<Authorization>
# Base DN
BaseDN “DC=domain,DC=com”
# User Search Filter
SearchFilter “(&(sAMAccountName=%u)(memberOf=CN=VPN,OU=Groups,OU=MYCompany,DC=domain,DC=com))”
# Require Group Membership
RequireGroup false # verwendet den Searchfilter!
<Group>
BaseDN “OU=Groups,OU=MYCompany,DC=domain,DC=com”
SearchFilter “(|(cn=VPN))”
MemberAttribute memberOf
</Group>
</Authorization>
Anpassen/Erweitern der openVPN “server.conf”:
client-cert-not-required # Active Directory Authentifizierung
username-as-common-name # Ansonsten UNDEF in der Statusseite
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/ldap.conf
Anpassen/Erweitern der openVPN Clientkonfiguration:
In der Clientkonfigurationsdatei reicht die Angabe des “ca” Zertifikats, und folgende zusätzliche Zeile einzutragen:
auth-user-pass
openVPN Client ohne Angabe von Benutzername, Kennwort
Wer nicht jedesmal Benutzername und Kennwort beim verbinden des openVPN Clients eingeben möchte kann in der *.ovpn Konfigurationsdatei der Zeile auth-user-pass als Parameter ein Dateiname angeben der Username/Password enthält.
Beispiel:
auth-user-pass logindaten.txt
Inhalt “logindaten.txt”:
otto
topsecretpass
Randnotizen:
Sicherheitsbedingt kann der Parameter “auth-nocache” gesetzt werden, jedoch verlangt dann der Client regelmässig (so ca. alle Stunde) nach dem Username und Password.
openVPN Client Windows 7, kein PING möglich ?
Auch bei ausgeschalteter Firewall konnte ich den Windows 7 openVPN Client nicht pingen, Abhilfe schafft das aktivieren von ICMP Paketen auf allen Netzen:
netsh advfirewall firewall add rule name=”Eingehenden Ping erlauben” protocol=icmpv4:8,any dir=in action=allow