Movatterモバイル変換


[0]ホーム

URL:


LoginSignup
18

Go to list of users who liked

21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-composeでGUI管理できるLDAPサーバをサクッと立てる

Last updated atPosted at 2020-12-15

概要

株式会社Link-Uでエンジニアを務めている堀内です。
Linuxサーバの認証統合を実現する手段として、LDAPを用いることが一般的です。
docker-composeを用いて、GUIで管理できるLDAPサーバの構築手順を解説します。

検証環境

サーバ構成

  • LDAPデーモン: OpenLDAP
    • 管理用アカウント・読取専用アカウントを作成、匿名アクセスは不可
    • LDAPS (636/TCP) でのみ外部からアクセス可能にする
    • Linuxのユーザ認証向けの設定を行う
    • SSH公開鍵を格納できるようにする (sshPublicKey)
  • LDAP管理ツール: Ldap Account Manager
    • LDAPのユーザ登録・編集用
    • HTTPSでアクセスを可能にする(リバースプロキシコンテナ経由)
  • ホストとの共有ディレクトリ
    • ./data/certs ... SSL証明書
    • ./data/ldap_config ... OpenLDAP設定
    • ./data/ldap_db ... OpenLDAPデータベース
  • 公開ポート
    • 80/tcp (HTTP) ... 管理ツール用、HTTPSに転送
    • 443/tcp (HTTPS) ... 管理ツール用
    • 636/tcp (LDAPS) ... LDAPサービス用

docker-compose設定

Dockerの導入

下記コマンドにてsnap版のdockerを導入します。

$sudosnapinstalldocker

docker-compose設定の記述

root権限に移行して、必要なディレクトリを準備します。

$sudo-s#cd ~#mkdirldap#cdldap#mkdirdata#mkdirdata/certs#mkdirdata/ldap_config#mkdirdata/ldap_db#vi docker-compose.yml

docker-compose.yml を記述します。
コメント文のある箇所は環境により適宜修正してください。

version:'3.8'services:slapd:# OpenLDAPサーバimage:osixia/openldap:1.4.0container_name:slapdrestart:on-failure:3hostname:ldap.example.com# サーバのホスト名ports:-636:636environment:LDAP_ORGANISATION:"ExampleInc."# 組織名LDAP_DOMAIN:"example.com"# 組織のドメインLDAP_ADMIN_PASSWORD:"admin_password"# 管理者パスワードLDAP_READONLY_USER:"true"# 読取専用ユーザ有効LDAP_READONLY_USER_USERNAME:"readonly"# 読取専用ユーザ名LDAP_READONLY_USER_PASSWORD:"readonly_password"# 読取専用ユーザパスワードLDAP_TLS_VERIFY_CLIENT:"never"# SSLクライアント認証の無効化# デフォルトでは自己署名証明書を自動生成、本番環境では下記コメントを外して証明書を指定# LDAP_TLS_CRT_FILENAME: "ldap.crt"    # SSL証明書# LDAP_TLS_KEY_FILENAME: "ldap.key"    # SSL秘密鍵# LDAP_TLS_CA_CRT_FILENAME: "ca.crt"   # クライアント認証用CA証明書、使用しなくても指定は必須volumes:-./data/ldap_db:/var/lib/ldap-./data/ldap_config:/etc/ldap/slapd.d-./data/certs:/container/service/slapd/assets/certslogging:driver:"json-file"options:max-size:"10m"max-file:"3"lam:# Ldap Account Manager (LDAP管理ツール)image:ldapaccountmanager/lamcontainer_name:lamrestart:on-failure:3environment:LDAP_DOMAIN:"example.com"# 組織のドメイン、OpenLDAPの設定に合わせるLDAP_BASE_DN:"dc=example,dc=com"# LDAPのルートDN、ドメインをDN形式で表記するLDAP_USERS_DN:"ou=people,dc=example,dc=com"# ユーザOU、ドメイン部分だけ変更するLDAP_GROUPS_DN:"ou=groups,dc=example,dc=com"# グループOU、ドメイン部分だけ変更するLDAP_SERVER:"ldap://slapd:389"LAM_LANG:"ja_JP"LAM_PASSWORD:"lam_password"# LdapAccountManagerの 初期設定用パスワードVIRTUAL_HOST:"lam"CERT_NAME:"ldap"# SSL証明書名、.crt, .key のファイル名部分を指定。depends_on:-slapdlogging:driver:"json-file"options:max-size:"10m"max-file:"3"proxy:# LDAP Account Manager 用のリバースプロキシimage:jwilder/nginx-proxycontainer_name:proxyrestart:on-failure:3environment:DEFAULT_HOST:"lam"ports:-80:80-443:443volumes:-./data/certs:/etc/nginx/certs-/var/run/docker.sock:/tmp/docker.sock:rodepends_on:-slapd-lamlogging:driver:"json-file"options:max-size:"10m"max-file:"3"

サービスの起動

サービスを起動し、全コンテナが正常に動作していることを確認します。
初回起動時はリバースプロキシが証明書を読み込めていない場合があるため、手動でproxyコンテナの再起動をかけてください。

#docker-compose up-d#docker-compose psName               Command                  State                        Ports                  ------------------------------------------------------------------------------------------------lam     /usr/bin/dumb-init -- /usr ...   Up (healthy)   80/tcpproxy   /app/docker-entrypoint.sh  ...   Up             0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcpslapd   /container/tool/run              Up             389/tcp, 0.0.0.0:636->636/tcp#docker-compose restart proxy

LDAP Account Manager設定

初期設定

サービスを起動したサーバにブラウザでアクセスします。
正式な証明書を入れていない場合、下記のように警告が出ますが、無視して続行します。
image.png

右上の "LAM構成設定" を開きます。
image.png

"サーバープロファイルの編集" を開きます。
image.png

docker-compose.yml で指定したパスワードでログインします。
image.png

タイムゾーンの設定をAsia/Tokyo に変更します。
image.png

"モジュール"タブを開き、ユーザのモジュールから "shadow"を削除、"SSH公開鍵"を追加して図のような状態にします。
image.png

設定を保存します。
image.png

LDAPユーザ追加

初期設定の完了後、LDAPの管理者ユーザのパスワードを入力してログインします。
image.png

"作成" を選択します。
image.png

テスト用ユーザのプライマリグループを追加します。"グループ"タブの"新しいグループ"を選択します。
image.png

グループ名を入力して保存します。ここでは"testuser"を作成します。
image.png

グループ追加の完了を確認します。
image.png

"ユーザ" タブに移動し、"新しいユーザ" を選択します。
image.png

"RDN識別子"は"uid"を選択、姓名を入力します。
image.png

"unix"タブに移り、ユーザ名とcommon nameを入力します。プライマリグループとして先ほど登録したグループが表示されていることを確認します。
image.png

"パスワード設定"を選択し、ログインパスワードを設定します。
image.png

"SSH公開鍵"タブの"SSH公開鍵拡張を追加" を選択します。
image.png

SSH公開鍵を入力します。
image.png

設定を保存します。
image.png

動作確認

Apache Directory Studio 等のLDAPブラウザでLDAPサーバに接続し、作成したユーザとグループの情報が読み取れることを確認します。
接続の際の認証情報は下記のように設定します。

プロトコル:LDAPS
ポート:636
ユーザDN:cn=admin,dc=example,dc=com ※cn=admin以降は組織のドメインに合わせて変更
パスワード: (docker-compose.ymlで設定した管理者パスワード)

image.png

まとめ

docker-composeを用いたLDAPサーバの構築方法を解説しました。
LinuxサーバにSSSDを導入して本LDAPサーバと連携させれば、
パスワード認証 or SSH鍵認証を行ってログインすることが可能になります。

18

Go to list of users who liked

21
1

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18

Go to list of users who liked

21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


[8]ページ先頭

©2009-2025 Movatter.jp