OpenLDAPとphpLDAPadminによるLinuxとRedmineの認証基盤
10年ほど前にOpenLDAPを"なんちゃって負荷テスト"して以来、
久しぶりに触り、かつ初めて実用のディレクトリ構造を実装する機会があったので、そのメモ。
LinuxとRedmineの認証を担わせ、パスワード変更UIなどを整備した。
(参考)https://www.openldap.org/doc/admin24/index.html
基本要件
- Linux認証を担える
- Linuxホスト・ユーザ組み合わせの接続制限(アクセス制御)
- 公開鍵を格納して公開鍵認証ができる
- Redmine認証を担える
- Redmineインスタンス・ユーザ組み合わせの接続制限(アクセス制御)
- Linux,Redmineの認証情報(ID, パスワード)統合
- OpenLDAPマルチマスタ構成による冗長化
- パスワード強度設定
- パスワード変更UIを用意する
- パスワードリセットUIを用意する
システム構成図
サーバ構成
# | ホスト名 | IPアドレス | 備考 |
1号機 | server1 | 192.168.0.11 | サービスLAN |
server1m | 192.168.200.11 | 管理LAN |
2号機 | server2 | 192.168.0.12 | サービスLAN |
server2m | 192.168.200.12 | 管理LAN |
ソフトウェア構成
主なもの。断りのないものは、CentOSの標準リポジトリからyumで導入。
ソフトウェア | バージョン | 備考 |
CentOS | 7.4.1708 | |
OpenLDAP | 2.4.44-5 | |
phpLDAPadmin | 1.2.3-10 | EPELリポジトリから |
Apache | 2.4.6-80 | |
Passenger | 5.3.1 | gemで取得 |
Redmine | 3.2.2 | 公式からダウンロード |
Ruby | 2.3.7 | ソースからコンパイル |
mariadb | 5.5.56-2 | |
OpenLDAP基本設計
項目 | 値 |
port | 389 |
BaseDN | dc=hoge,dc=local |
管理者DN | cn=admin,dc=hoge,dc=local |
RDN | cn |
/etc/hosts
両機の/etc/hostsに次のとおり記述しておく
# server1
server1 192.168.0.11 # service lan
server1m 192.168.200.11 # management lan
# server2
server2 192.168.0.12 # service lan
server2m 192.168.200.12 # management lan
組織・名前空間等の前提
次の前提。
- 社内利用
- メールアドレスのアドレス部(@以降)は、"@hoge.co.jp" で単一
- メールアドレスのアカウント部(@以前)が、社内ユーザを一意に識別できる
- Linux(やUNIX)のユーザ名は、メールアドレスのアカウント部
- Redmineのユーザ名も、メールアドレスのアカウント部
- LDAPのRDN(相対識別名)を、メールアドレスのアカウント部(@以前)とする
例えば、suzuki@hoge.co.jpさんのエントリは次のとおり。
- dn: cn=suzuki,ou=People,dc=hoge,dc=local
- cn: suzuki
- mail: suzuki@hoge.co.jp
2018/10/11 Taikou Yamada (t-yamada _at_ ceres.dti.ne.jp)