OpenVPN 2.0 og nyere inkluderer en funktion, der gør det muligt for OpenVPN-serveren sikkert at få et brugernavn og en adgangskode fra en forbindende klient og bruge disse oplysninger som grundlag for godkendelse af klienten.
hvis du vil bruge denne godkendelsesmetode, skal du først tilføje auth-user-pass-direktivet til klientkonfigurationen. Det vil lede OpenVPN-klienten til at forespørge brugeren om et brugernavn/adgangskode og videregive det til serveren via den sikre TLS-kanal.
konfigurer derefter serveren til at bruge et godkendelsesplugin, som kan være et script, delt objekt eller DLL. OpenVPN-serveren ringer til pluginet, hver gang en VPN-klient forsøger at oprette forbindelse, og sender det det brugernavn/adgangskode, der er indtastet på klienten. Godkendelsespluginet kan kontrollere, om OpenVPN-serveren tillader klienten at oprette forbindelse ved at returnere en fejl (1) eller succes (0) værdi.
brug af Script-Plugins
Script-plugins kan bruges ved at tilføje auth-user-pass-verify-direktivet til konfigurationsfilen på serversiden. Eksempel:
auth-user-pass-verify auth-pam.pl via-file
vil bruge auth-pam.pl perl script til at godkende brugernavn / adgangskode for at forbinde klienter. Se beskrivelsen af auth-user-pass-verify i manualen side for mere information.
den auth-pam.pl script er inkluderet i OpenVPN kilde fil distribution i prøven-scriptssubdirectory. Det vil godkende brugere på en server ved hjælp af et Pam-godkendelsesmodul, som igen kan implementere skyggeadgangskode, RADIUS eller LDAP-godkendelse. auth-pam.pl er primært beregnet til demonstrationsformål. Til Pam-godkendelse i den virkelige verden skal du bruge OpenVPN-auth-pamshared object plugin beskrevet nedenfor.
brug af delt objekt eller DLL-Plugins
delt objekt eller DLL-plugins er normalt kompileret C-moduler, der indlæses af OpenVPN-serveren på kørselstidspunktet. Hvis du f.eks. bruger en RPM-baseret OpenVPN-pakke, skal OpenVPN-auth-pam-plugin allerede være bygget. For at bruge det skal du tilføje dette til server-side-konfigurationsfilen:
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
dette vil fortælle OpenVPN-serveren at validere brugernavnet / adgangskoden indtastet af klienter ved hjælp af loginpam-modulet.
til brug i den virkelige verden er det bedre at bruge OpenVPN-auth-pam plugin, fordi det har flere fordele i forhold til auth-pam.pl script:
- den delte objekt OpenVPN-auth-pam plugin bruger en split-privilegium udførelse model for bedre sikkerhed. Dette betyder, at OpenVPN-serveren kan køre med reducerede privilegier ved at bruge direktiverne bruger ingen, gruppe ingen, og chroot, og vil stadig være i stand til at godkende mod den rodlæsbare kun skyggeadgangskodefil.
- OpenVPN kan overføre brugernavnet/adgangskoden til et plugin via virtuel hukommelse snarere end via en fil eller miljøet, hvilket er bedre for lokal sikkerhed på servermaskinen.
- C-kompilerede plugin-moduler kører generelt hurtigere end scripts.
hvis du ønsker mere information om udvikling af dine egne plugins til brug med OpenVPN, se README-filerne i plugin-undermappen til OpenVPN-kildedistributionen.
hvis du vil bygge OpenVPN-auth-pam plugin på
brug af brugernavn/adgangskodegodkendelse som den eneste form for klientgodkendelse
som standard ved hjælp af auth-user-pass-verify eller et brugernavn/adgangskodekontrolplugin på serveren muliggør dobbelt godkendelse, hvilket kræver, at både klientcertifikat og brugernavn/adgangskodegodkendelse lykkes for at klienten skal godkendes.
selvom det frarådes fra et sikkerhedsperspektiv, er det også muligt at deaktivere brugen af klientcertifikater og kun tvinge brugernavn/adgangskodegodkendelse. På serveren:
client-cert-not-required
sådanne konfigurationer bør normalt også indstille:
username-as-common-name
hvilket vil fortælle serveren at bruge brugernavnet til indekseringsformål, da det ville bruge det almindelige navn på en klient, der godkendte via et klientcertifikat.
bemærk, at klient-cert-ikke-påkrævet ikke undgår behovet for et servercertifikat, så en klient, der opretter forbindelse til en server, der bruger klient-cert-ikke-påkrævet, kan fjerne cert-og nøgledirektiverne fra klientkonfigurationsfilen, men ikke ca-direktivet, fordi det er nødvendigt for klienten at verificere servercertifikatet.