az OpenVPN 2.0 és újabb verziója tartalmaz egy olyan funkciót, amely lehetővé teszi az OpenVPN szerver számára, hogy biztonságosan megszerezzen egy felhasználónevet és jelszót egy csatlakozó klienstől, és ezt az információt használja az ügyfél hitelesítésének alapjául.
a hitelesítési módszer használatához először adja hozzá az Auth-user-pass irányelvet az ügyfél konfigurációjához. Ez irányítja az OpenVPN klienst, hogy lekérdezze a felhasználót egy felhasználónév/jelszó után, továbbítva azt a szervernek a biztonságos TLS csatornán keresztül.
Ezután állítsa be a kiszolgálót egy hitelesítési bővítmény használatára, amely lehet szkript, megosztott objektum vagy DLL. Az OpenVPN szerver minden alkalommal felhívja a plugint, amikor egy VPN kliens megpróbál csatlakozni, átadva neki az ügyfélen megadott felhasználónevet/jelszót. A hitelesítési plugin vezérelheti, hogy az OpenVPN szerver lehetővé teszi-e az ügyfél számára a csatlakozást egy failure (1) vagy success (0) érték visszaadásával.
parancsfájl-bővítmények használata
a parancsfájl-bővítmények az auth-user-pass-verify direktíva kiszolgálóoldali konfigurációs fájlba történő hozzáadásával használhatók. Például:
auth-user-pass-verify auth-pam.pl via-file
fogja használni a auth-pam.pl perl script hitelesíteni a felhasználónevet/jelszót összekötő ügyfelek. További információkért lásd az auth-user-pass-verify leírását a man oldalon.
a auth-pam.pl script tartalmazza az OpenVPN forrás fájl elosztása a minta-scriptssubdirectory. Ez hitelesíti a felhasználókat egy Linux szerveren egy PAM hitelesítési modul segítségével, amely viszont árnyékjelszó, RADIUS vagy LDAP hitelesítést valósíthat meg. auth-pam.pl elsősorban demonstrációs célokra szolgál. A valós Pam hitelesítéshez használja az alább ismertetett openvpn-auth-pamshared object plugint.
Megosztott objektum vagy DLL beépülő modulok használata
a Megosztott objektum vagy DLL beépülő modulok általában lefordított C modulok, amelyeket az OpenVPN szerver futási időben tölt be. Például, ha RPM-alapú OpenVPN csomagot használ Linuxon, akkor az openvpn-auth-pam bővítményt már fel kell építeni. Használatához adja hozzá ezt a kiszolgálóoldali konfigurációs fájlhoz:
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
ez megmondja az OpenVPN szervernek, hogy érvényesítse az ügyfelek által a loginPAM modul segítségével megadott felhasználónevet/jelszót.
valós termelési használatra jobb az openvpn-auth-pam plugin használata, mert számos előnye van a auth-pam.pl forgatókönyv:
- a shared object openvpn-auth-pam plugin osztott jogosultságú végrehajtási modellt használ a jobb biztonság érdekében. Ez azt jelenti, hogy az OpenVPN szerver csökkentett jogosultságokkal futhat a user nobody, group nobody és chroot direktívák használatával, és továbbra is képes lesz hitelesíteni a root által olvasható, csak árnyék jelszófájlt.
- az OpenVPN virtuális memórián keresztül továbbíthatja a felhasználónevet/jelszót egy pluginnak, nem pedig fájlon vagy környezeten keresztül, ami jobb a szerver gép helyi biztonsága szempontjából.
- a C-lefordított plugin modulok általában gyorsabban futnak, mint a szkriptek.
ha további információt szeretne a saját bővítményeinek fejlesztéséről az OpenVPN használatához, olvassa el az OpenVPN forrás disztribúció plugin alkönyvtárában található README fájlokat.
az openvpn-auth-Pam plugin Linuxon történő felépítéséhez, cd-t a plugin/auth-pam könyvtárba az OpenVPN forrás disztribúciójában, és futtassa a make-et.
felhasználónév/jelszó hitelesítés használata az ügyfélhitelesítés egyetlen formájaként
alapértelmezés szerint az auth-user-pass-verify vagy egy felhasználónév/jelszó ellenőrző beépülő modul használata a kiszolgálón lehetővé teszi a kettős hitelesítést, amely megköveteli, hogy mind az ügyféltanúsítvány, mind a felhasználónév / jelszó hitelesítés sikeres legyen az ügyfél hitelesítéséhez.
bár biztonsági szempontból nem ajánlott, az ügyféltanúsítványok használatát is letilthatja, és csak a felhasználónév/jelszó hitelesítést kényszerítheti. A szerveren:
client-cert-not-required
az ilyen konfigurációkat általában be kell állítani:
username-as-common-name
amely megmondja a szervernek, hogy használja a felhasználónevet indexelési célokra, mivel az ügyféltanúsítványon keresztül hitelesített ügyfél közönséges nevét használja.
vegye figyelembe, hogy a client-cert-not-required nem szünteti meg a kiszolgálói tanúsítvány szükségességét, így a client-cert-not-required szolgáltatást használó kiszolgálóhoz csatlakozó ügyfél eltávolíthatja a cert és a kulcs direktívákat az ügyfél konfigurációs fájljából, de nem a ca direktívát, mert az ügyfélnek ellenőriznie kell a kiszolgálói tanúsítványt.