GNU/Linux >> Znalost Linux >  >> Panels >> OpenVPN

Nakonfigurujte OpenVPN LDAP Based Authentication

V této příručce se naučíme, jak nakonfigurovat ověřování OpenVPN LDAP Based Authentication. Identifikace a autentizace uživatelů je obvykle prvním krokem při implementaci řízení přístupu. Server OpenVPN podporuje více ověřovacích protokolů a lze jej tedy nakonfigurovat tak, aby získával informace o připojujícím se klientu ze serveru LDAP a aby tyto informace používal jako základ pro ověření klienta kromě použití klientských certifikátů a klíčů.

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

OpenVPN
  1. Jak nakonfigurovat vynechání ověřování SMTP v SmarterMail

  2. Nakonfigurujte klienty OpenVPN tak, aby používali konkrétní server DNS

  3. Nainstalujte a nakonfigurujte klienta OpenVPN na Rocky Linux 8

  1. Nakonfigurujte OpenVPN tak, aby požadovala zadání přihlašovacích údajů při přihlášení v systémech Windows

  2. Nainstalujte a nakonfigurujte klienta OpenVPN na CentOS 8/Ubuntu 18.04

  3. Nainstalujte a nakonfigurujte OpenVPN Server FreeBSD 12

  1. Nakonfigurujte svůj server OpenVPN v systému Linux

  2. Nejjednodušší způsob instalace a konfigurace serveru OpenVPN v systému Linux

  3. Jak nakonfigurovat ověřování na základě klíče SSH v systému Linux