GNU/Linux >> Linux の 問題 >  >> Panels >> OpenVPN

OpenVPNLDAPベースの認証を構成する

このガイドでは、OpenVPNLDAPベースの認証を構成する方法を学習します。ユーザーの識別と認証は通常、アクセス制御を実装するための最初のステップです。 OpenVPNサーバーは複数の認証プロトコルをサポートしているため、LDAPサーバーから接続クライアント情報を取得し、クライアントの証明書とキーの使用に加えて、その情報をクライアントの認証の基礎として使用するように構成できます。

また、OpenLDAP認証を使用すると、接続するクライアントごとに個別のOpenVPNクライアント証明書を生成する必要があるという問題を解消できます。

以下のリンクをたどって、CentOS8にOpenLDAPサーバーをインストールしてセットアップする方法を学びます。

CentOS8にOpenLDAPをインストールしてセットアップする

OpenVPNLDAPベースの認証を構成する

LDAP認証用のOpenVPNプラグインをインストールする

OpenVPN LDAPベースの認証を構成するには、LDAP認証用のOpenVPNプラグインをインストールする必要があります。プラグインはopenvpn-auth-ldapと呼ばれます また、OpenVPN用のLDAPを介したユーザー名/パスワード認証を実装しています。

CentOS 7では、プラグインをインストールするにはEPELリポジトリが必要です;

yum install epel-release
yum install openvpn-auth-ldap

Ubuntuシステムの場合;

apt install openvpn-auth-ldap

CentOS 8では、残念ながら、この記事の執筆時点では、EPELリポジトリはこのパッケージを提供していません。

このデモでは、CentOS7システムでOpenVPNサーバーを実行しています。

openvpn-auth-ldap パッケージの場合、/usr/lib64/openvpnの下に必要なモジュールがあります。 ディレクトリ。

モジュールは、/usr/lib/openvpn 、ディレクトリ。

このパッケージは、OpenVPNLDAP認証構成ファイル/etc/openvpn/auth/ldap.conf

Ubuntuシステムでは、サンプルのOpenVPNLDAP認証構成が;

にあります。
/usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf

LDAPベースの認証用にOpenVPNサーバーを構成する

必要なプラグインを配置したら、次はLDAPベースの認証用にOpenVPNサーバーを構成します。

OpenVPN LDAPベースの認証構成ファイルを開き、OpenLDAPサーバーの詳細を定義します。

構成のバックアップを作成します。

cp /etc/openvpn/auth/ldap.{conf,.old}

ディレクトリ/ファイルが存在しない場合は、作成するだけです;

mkdir /etc/openvpn/auth

それが完了したら、サンプル構成ファイルをコピーします;

cp /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf /etc/openvpn/auth/ldap.conf

次に、編集用の構成ファイルを開きます。

vim /etc/openvpn/auth/ldap.conf

以下は、OpenLDAPサーバーのセットアップによるサンプル構成(コメント行なし)です。適切な設定を行います;

<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>

グループ認証に関して、OpenLDAPを介して認証する特定のユーザーのみがOpenVPNサーバーに接続できるように、よりきめ細かいOpenVPNアクセス制御を適用する場合は、OpenLDAPグループメンバーシップを利用できます。

たとえば、OpenLDAPサーバーには、OpenVPNサーバーへの接続を許可されているユーザーのみを含むVPNのみのグループがあります。

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

以下のガイドに従って、OpenLDAPグループメンバーシップを作成する方法をご覧ください。

OpenLDAPメンバーグループを作成する方法

したがって、グループメンバーシップ認証を有効にするには、 RequireGroupの値を設定します trueに設定し、構成が次のようになるようにグループセクションを編集するオプション。

<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>

この場合、ユーザー koromichaのみ およびjohndoe OpenVPNサーバーに接続できます。

適切な変更を加えたら、構成を保存して終了します。

次に、OpenVPNサーバー構成ファイルに以下の行を追加して、認証にOpenLDAPを使用するようにOpenVPNサーバーを構成します。

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf

次のように、この行をOpenVPNサーバー構成ファイルに追加するだけです。

echo "plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf" >> /etc/openvpn/server/server.conf

モジュールへの正しいパスを設定してください。 たとえば、Ubuntu 18.04 / 20.04では、パスは/usr/lib/openvpn/openvpn-auth-ldap.so

したがって、行は次のようになります。

plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf

クライアントのユーザー名/パスワード認証を有効にする

次に、クライアント構成ファイルを編集して、 auth-user-passを含めます。 ユーザー名/パスワード認証方式を有効にするディレクティブ。

たとえば、これは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

OpenVPNサーバーサービスを再起動します;

systemctl restart [email protected]

OpenVPNクライアントのLDAP認証を確認する

これで構成は完了です。すべてが正常であることを確認するには、クライアントでOpenVPN接続を開始します;

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

認証が失敗した場合;

...
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

OpenVPNサーバーでは、ログにそのような行が表示されます;

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'

janedoeとしてOpenVPNサーバーに接続してみてください 、許可されたvpnonly グループ。これは自動的に失敗します。

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

素晴らしい。 OpenLDAPサーバーを介して認証するようにOpenVPNクライアントを正常に構成しました。

これで、OpenVPNLDAPベースの認証を構成する方法に関するガイドは終わりです。お楽しみください。

関連チュートリアル

OpenVPNクライアントに静的IPアドレスを割り当てる

CentOS 8 /Ubuntu18.04のネットワークマネージャーを使用してOpenVPNに接続します

CentOS8でOpenVPNサーバーをセットアップする

Debian10でStrongSwanを使用してIPSECVPNをセットアップする

OpenVPN
  1. LinuxでSSHキーベースの認証を構成する方法

  2. SmarterMailでSMTP認証バイパスを構成する方法

  3. RockyLinux8にOpenVPNクライアントをインストールして構成する

  1. Windowsシステムでのログオン時に資格情報の入力を求めるようにOpenVPNを構成する

  2. CentOS 8 /Ubuntu18.04にOpenVPNクライアントをインストールして構成する

  3. OpenVPNサーバーFreeBSD12のインストールと設定

  1. LinuxでOpenVPNサーバーを構成する

  2. LinuxでOpenVPNサーバーをインストールおよび構成する最も簡単な方法

  3. Ubuntu 20.04でLDAPクライアントを構成する-ステップバイステップガイド?