S autentizací OpenLDAP lze také eliminovat problém nutnosti generovat individuální klientské certifikáty OpenVPN pro každého připojovaného klienta.
Zjistěte, jak nainstalovat a nastavit server OpenLDAP na CentOS 8 pomocí níže uvedeného odkazu;
Nainstalujte a nastavte OpenLDAP na CentOS 8
Konfigurace OpenVPN LDAP Based Authentication
Nainstalujte si plugin OpenVPN pro ověřování LDAP
Chcete-li nakonfigurovat ověřování založené na LDAP OpenVPN, musíte nainstalovat plugin OpenVPN pro ověřování LDAP. Plugin se nazývá openvpn-auth-ldap
a implementuje ověřování uživatelského jména/hesla přes LDAP pro OpenVPN.
Na CentOS 7 potřebujete k instalaci pluginu EPEL repozitáře;
yum install epel-release
yum install openvpn-auth-ldap
Na systémech Ubuntu;
apt install openvpn-auth-ldap
Na CentOS 8 bohužel repozitáře EPEL tento balíček v době psaní tohoto balíčku neposkytují.
V této ukázce provozujeme server OpenVPN na systému CentOS 7.
Po instalaci openvpn-auth-ldap
balíčku, měli byste nyní mít požadované moduly v /usr/lib64/openvpn
adresář.
Moduly lze také nalézt pod /usr/lib/openvpn
, adresář.
Balíček také nainstaluje konfigurační soubor OpenVPN LDAP, /etc/openvpn/auth/ldap.conf
.
Na systémech Ubuntu najdete vzorovou konfiguraci OpenVPN LDAP auth pod;
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf
Nakonfigurujte server OpenVPN pro ověřování na základě LDAP
Jakmile budete mít potřebné pluginy na místě, další věcí by bylo nakonfigurovat server OpenVPN pro ověřování založené na LDAP.
Otevřete konfigurační soubor ověřování založeného na OpenVPN LDAP a definujte specifika vašeho serveru OpenLDAP;
Vytvořte zálohu konfigurace.
cp /etc/openvpn/auth/ldap.{conf,.old}
Pokud adresář/soubor neexistuje, jednoduše jej vytvořte;
mkdir /etc/openvpn/auth
Jakmile to uděláte, zkopírujte ukázkový konfigurační soubor;
cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf
Dále otevřete konfigurační soubor pro úpravy.
vim /etc/openvpn/auth/ldap.conf
Níže je naše ukázková konfigurace (bez komentovaných řádků) podle nastavení našeho OpenLDAP serveru. Proveďte příslušné konfigurace;
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup false
</Authorization>
Pokud jde o skupinovou autentizaci, pokud chcete vynutit jemnější kontrolu přístupu OpenVPN tak, aby se k serveru OpenVPN mohli připojit pouze konkrétní uživatelé ověřující se přes OpenLDAP, můžete využít členství ve skupině OpenLDAP.
Například na našem serveru OpenLDAP máme skupinu pouze VPN, která obsahuje pouze uživatele, kteří se mohou připojit k serveru OpenVPN;
ldapsearch -Y ExTERNAL -H ldapi:/// -b ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com -LLL -Q "(cn=vpnonly)"
dn: cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: groupOfNames cn: vpnonly member: uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com member: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
Podívejte se, jak vytvořit členství ve skupině OpenLDAP podle níže uvedeného průvodce;
Jak vytvořit skupiny členů OpenLDAP
Chcete-li tedy povolit ověřování členství ve skupině, nastavte hodnotu RequireGroup
možnost na hodnotu true a upravit sekci skupiny tak, aby vaše konfigurace mohla vypadat takto;
<LDAP>
URL ldap://ldapmaster.kifarunix-demo.com
BindDN cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com
Password [email protected]
Timeout 15
TLSEnable no
FollowReferrals no
</LDAP>
<Authorization>
BaseDN "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "(uid=%u)"
RequireGroup true
<Group>
BaseDN "ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
SearchFilter "memberOf=cn=vpnonly,ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com"
MemberAttribute uniqueMember
</Group>
</Authorization>
V tomto případě pouze uživatel koromicha a johndoe se může připojit k serveru OpenVPN.
Po provedení příslušných změn uložte a ukončete konfiguraci.
Dále nakonfigurujte server OpenVPN tak, aby používal OpenLDAP pro ověřování přidáním řádku níže do konfiguračního souboru serveru OpenVPN.
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Tento řádek můžete jednoduše přidat do konfiguračního souboru serveru OpenVPN následovně;
echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf
Ujistěte se, že jste nastavili správnou cestu k modulu. Například na Ubuntu 18.04/20.04 je cesta /usr/lib/openvpn/openvpn-auth-ldap.so
.
Řádek by tedy vypadal takto;
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
Povolit ověření uživatelského jména/hesla klienta
Dále upravte konfigurační soubor klienta tak, aby obsahoval auth-user-pass direktiva pro povolení metody ověřování uživatelského jména/hesla.
Toto je například náš vzorový konfigurační soubor klienta založený na nastavení našeho serveru OpenVPN.
client tls-client pull dev tun proto udp remote 192.168.2.132 1194 resolv-retry infinite nobind #user nobody #group nogroup persist-key persist-tun key-direction 1 remote-cert-tls server comp-lzo verb 3 auth-nocache dhcp-option DNS 8.8.8.8 dhcp-option DNS 10.8.0.1 auth SHA512 auth-user-pass tls-auth /home/johndoe/ta-key ca /home/johndoe/ca.crt cert /home/johndoe/johndoe.crt key /home/johndoe/johndoe.key
Restartujte službu OpenVPN Server;
systemctl restart [email protected]
Ověřte OpenVPN Client LDAP Authentication
Naše konfigurace je nyní hotová. Chcete-li ověřit, že je vše v pořádku, iniciujte připojení OpenVPN na klientovi;
sudo openvpn johndoe.ovpn
Sat Apr 18 08:50:11 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 08:50:11 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: johndoe Enter Auth Password: ************* ... Sat Apr 18 08:50:26 2020 /sbin/ip addr add dev tun0 10.8.0.60/24 broadcast 10.8.0.255 Sat Apr 18 08:50:26 2020 /sbin/ip route add 192.168.2.132/32 via 10.0.2.2 Sat Apr 18 08:50:26 2020 /sbin/ip route add 0.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 /sbin/ip route add 128.0.0.0/1 via 10.8.0.1 Sat Apr 18 08:50:26 2020 Initialization Sequence Completed
Pokud se ověření nezdaří;
... Sat Apr 18 08:53:36 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 08:53:36 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 08:53:36 2020 SIGTERM[soft,auth-failure] received, process exiting
Na serveru OpenVPN uvidíte takový řádek v protokolech;
tail -f /var/log/openvpn/openvpn.log
... 192.168.56.1:53489 [johndoe] Peer Connection Initiated with [AF_INET]192.168.56.1:53489 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /etc/openvpn/ccd/johndoe johndoe/192.168.56.1:53489 PLUGIN_CALL: POST /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so/PLUGIN_CLIENT_CONNECT status=0 johndoe/192.168.56.1:53489 OPTIONS IMPORT: reading client specific options from: /tmp/openvpn_cc_565148162b7cd88618c8c5e6efba7007.tmp johndoe/192.168.56.1:53489 MULTI: Learn: 10.8.0.60 -> johndoe/192.168.56.1:53489 johndoe/192.168.56.1:53489 MULTI: primary virtual IP for johndoe/192.168.56.1:53489: 10.8.0.60 johndoe/192.168.56.1:53489 PUSH: Received control message: 'PUSH_REQUEST'
Zkuste se připojit k serveru OpenVPN jako janedoe
, který není v povoleném vpnonly
skupina. To se automaticky nezdaří.
sudo openvpn janedoe.ovpn
Sat Apr 18 10:00:05 2020 OpenVPN 2.4.8 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Nov 1 2019 Sat Apr 18 10:00:05 2020 library versions: OpenSSL 1.1.1 FIPS 11 Sep 2018, LZO 2.08 Enter Auth Username: janedoe Enter Auth Password: ************** ... Sat Apr 18 10:00:19 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Sat Apr 18 10:00:19 2020 AUTH: Received control message: AUTH_FAILED Sat Apr 18 10:00:19 2020 SIGTERM[soft,auth-failure] received, process exiting
Skvělý. Úspěšně jste nakonfigurovali své klienty OpenVPN pro ověřování prostřednictvím serveru OpenLDAP.
To znamená konec našeho průvodce, jak nakonfigurovat ověřování OpenVPN LDAP Based Authentication. Užijte si to.
Související výukové programy
Přiřadit statické IP adresy pro klienty OpenVPN
Připojte se k OpenVPN pomocí Správce sítě na CentOS 8/Ubuntu 18.04
Nastavte OpenVPN Server na CentOS 8
Nastavte IPSEC VPN pomocí StrongSwan na Debianu 10