openVPN und Active Directory

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

 

 

Schreibe einen Kommentar