Ubuntu 18.04でActive DirectoryへのOpenLDAPプロキシを構築

Active Directoryのあるネットワークとは別のネットワークにある機器(具体的には電子黒板)から、LDAPでADユーザ情報を検索したいという要件が。

VPNなどの設定もできないので、DMZにOpenLDAPによるLDAP用のプロキシサーバを立ててみた。

手順

Ubuntu Server 18.04をインストールした状態で、まずはOpenLDAPサーバとクライアントをaptでインストール。 インストール中にパスワードなどを尋ねられるが、何も入れずエンター連打。

sudo apt update
sudo apt install slapd ldap-utils

ActiveDirectory用のスキーマを追加でダウンロード。

sudo wget http://lism.sourceforge.jp/docs/ad.schema -O /etc/ldap/schema/ad.schema

設定ファイルを次のように作成。

$ sudo nano /etc/ldap/slapd.conf
include                 /etc/ldap/schema/core.schema
include                 /etc/ldap/schema/cosine.schema
include                 /etc/ldap/schema/inetorgperson.schema
include                 /etc/ldap/schema/misc.schema
include                 /etc/ldap/schema/nis.schema
include                 /etc/ldap/schema/ad.schema

modulepath              /usr/lib/ldap/  
moduleload              back_ldap  

pidfile                 /var/run/slapd/slapd.pid
argsfile                /var/run/slapd/slapd.args

loglevel                256

# アクセス制限の設定
access to *
  by peername.ip=127.0.0.1 read
  by peername.ip=***.***.***.*** read # このLDAPプロキシにアクセスする機器のIP
  by * none

# LDAPプロキシの設定
database        ldap
readonly        yes
suffix          "OU=****,DC=***,DC=****" # ADで検索するときに追加するsuffix
uri             ldap://***.***.***.***:389/ # ADサーバのIPアドレス
rebind-as-user
idassert-bind   bindmethod=simple
                binddn="CN=****,OU=****,OU=***,DC=***,DC=***" # ADでの検索を実行するユーザ
                credentials="******" # パスワード
                mode=none
idassert-authzFrom      "*"

/etc/ldap/slapd.dディレクトリがあると/etc/ldap/slapd.confを読んでくれないので、ディレクトリの方をリネーム。

sudo mv /etc/ldap/slapd.d /etc/ldap/_slapd.d

設定できたのでサービスを再起動。

sudo systemctl restart slapd

確認

ldapsearch -b "(ADユーザのDN)" -w "(パスワード)" -h 127.0.0.1 -x "OU=***,DC=***,DC=***(BaseDN)"

ちなみに127.0.0.1localhostにすると、IPv6(::1)になってしまい、アクセス許可をしていないので弾かれるのでご注意。