2021年11月27日土曜日

OpenLDAP入門② (OpenLDAPでLDAPSを有効化する)

前回、RHEL 7にOpenLDAPをインストールして、OpenLDAPサーバを構築する手順を記載した。しかし、LDAPは通信が暗号化されておらず、認証情報が平文でネットワークに流れてしまう。そこで、LDAPをSSLで暗号化するLDAPS (LDAP over SSL) を使い通信の暗号化を行うことで、セキュリティ強化を図る。

本記事では、OpenLDAPサーバに設定追加を行いLDAPSにて通信できるように構成するための手順を記載する。

環境

RHEL 7にてOpenLDAPサーバを構築済みの環境から、LDAPSを有効にする手順を記載する。OpenLDAPサーバの構築手順は前回記事を参照いただきたい。

  • OS : Red Hat Enterprise Linux 7.7
  • OpenLDAP : 2.4.44

OpenLDAPのドメイン等の情報は以下とする。

設定項目 設定値
ドメイン dc=example,dc=com
RootDN cn=Manager,dc=example,dc=com
OU ou=group,dc=example,dc=com
グループ cn=ldapgrp,ou=group,dc=example,dc=com
ユーザ1 uid=user01,ou=group,dc=example,dc=com
ユーザ2 uid=user01,ou=group,dc=example,dc=com

OpenLDAPのLDAPS有効化手順

1. LDAPS用のサーバ証明書を作成

LDAPSはLDAP over SSLの略である通り、SSLサーバ証明書の作成が必要となる。OpenLDAPのサーバ証明書は/etc/openldap/certs/に配置する。

まず、SSLサーバ証明書に必要となるSAN (Subject Alternative Name) を設定するためのファイルを作成する。今回は、以下の通り作成した。

# cd /etc/openldap/certs/
# cat << EOF > san.txt
subjectAltName = DNS:*.example.com, IP:192.168.11.117
EOF

サーバ証明書は、以下コマンドで作成する。

# openssl genrsa 2048 > ldaps.key
# openssl req -new -key ldaps.key > ldaps.csr
# openssl x509 -days 3650 -req -signkey ldaps.key -in ldaps.csr -out ldaps.crt -extfile san.txt

実際のコマンド実行結果は以下の通り。CSR作成時に証明書作成に必要な情報を対話式で入力する。

# openssl genrsa 2048 > ldaps.key
Generating RSA private key, 2048 bit long modulus
..............................................................+++
..................+++
e is 65537 (0x10001)

# openssl req -new -key ldaps.key > ldaps.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP ←★JPを入力
State or Province Name (full name) []:Tokyo ←★任意の都市名を入力
Locality Name (eg, city) [Default City]: ←★そのままEnter
Organization Name (eg, company) [Default Company Ltd]: ←★そのままEnter
Organizational Unit Name (eg, section) []: ←★そのままEnter
Common Name (eg, your name or your server's hostname) []:LDAPS ←★任意の名称を入力。今回はLDAPSと入力
Email Address []: ←★そのままEnter

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←★そのままEnter
An optional company name []: ←★そのままEnter

# openssl x509 -days 3650 -req -signkey ldaps.key -in ldaps.csr -out ldaps.crt -extfile san.txt
Signature ok
subject=/C=JP/ST=Tokyo/L=Default City/O=Default Company Ltd/CN=LDAPS
Getting Private key

2. LDAPS有効化に必要な設定を追加

OpenLDAPサーバの設定ファイルに以下の通りLDAPSに必要となる設定を追加する。

# cp /etc/sysconfig/slapd{,.org}
# vi /etc/sysconfig/slapd
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///" ←★「ldaps:///」を追加

次にssl.ldifというLDIFファイルを作成し、LDAPS用の証明書及び秘密鍵となるファイルの指定を行う。このLDIFファイルをldapaddコマンドにて設定追加する。

# cd ~
# cat << EOF > ssl.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldaps.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldaps.key
EOF

# ldapadd -Y EXTERNAL -H ldapi:// -f ssl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

3. OpenLDAPを再起動

ここまで設定したら、OpenLDAPを再起動し、LDAPSの636ポートが開放されることを確認する。

# systemctl restart slapd

# ss -nl | egrep '389|636'
tcp    LISTEN     0      128       *:636                   *:*
tcp    LISTEN     0      128       *:389                   *:*
tcp    LISTEN     0      128    [::]:636                [::]:*
tcp    LISTEN     0      128    [::]:389                [::]:*

4. LDP.exeを使った確認

LDAPSはそのままではLDP.exeにて接続することができず、OpenLDAPサーバにて作成したSSLサーバ証明書の公開鍵であるldaps.crtを「信頼されたルート証明機関」として登録が
必要
となる。

/etc/openldap/certs/ldaps.crtLDP.exeを実行するサーバにダウンロードし、ファイルをダブルクリックすると証明書の情報を確認することができ、「証明書のインストール」を選択することで「証明書のインポートウィザード」を開始できる。

インポートウィザードでは証明書ストアにて「信頼されたルート証明機関」を選択する。

セキュリティ警告が表示される場合があるが、自己署名証明書による証明書エラーとなることから、そのまま「はい」を選択する。

証明書をインポートしたのち、再度LDP.exeにて接続すると、以下の通りSSLによる接続に成功する。

以上でOpenLDAPでLDAPSを有効化する手順は完了となる。次回は、LinuxのSSSDを使って本サーバに対して認証連携を行うことにする。

0 件のコメント:

コメントを投稿

人気の投稿